libtasn1-3.4/0000775000000000000000000000000012244722065010052 500000000000000libtasn1-3.4/NEWS0000664000000000000000000004061512244721123010471 00000000000000GNU Libtasn1 NEWS -*- outline -*- * Noteworthy changes in release 3.4 (released 2013-11-25) [stable] - Added asn1_delete_structure2() which allows zeroizing the contents of all values in the structure prior to deinitialization. - The parser accepts negative numbers in an INTEGER range (but still does no enforce them). * Noteworthy changes in release 3.3 (released 2013-03-23) [stable] - More precise overflow checks using gnulib's intprops module. - Updates to compile in Android systems. * Noteworthy changes in release 3.2 (released 2012-11-30) [stable] - Corrected buffer overflow in the error reporting of the parser (reported by Andreas Metzler). * Noteworthy changes in release 3.1 (released 2012-11-24) [stable] - Completed rename of types: ASN1_ARRAY_TYPE -> asn1_static_node (was asn1_static_node_t) - Added new types: VisibleString, NumericString, IA5String, TeletexString, PrintableString, UniversalString, BMPString, UTF8String. When re-defined a warning is being print instead of failing. - Parser outputs more detailed syntax error messages. - Added asn1_decode_simple_der() and asn1_encode_simple_der(). - Added asn1_read_value_type() to return value and type. - Introduced ASN1_ETYPE_UTC_TIME and ASN1_ETYPE_GENERALIZED_TIME * Noteworthy changes in release 3.0 (2012-10-28) [stable] - Added tool in tests/ to benchmark X.509 structure decoding. - Added asn1_read_node_value() to obtain a node's value. - Optimizations in internal tree allocation. - Optimizations in tree search. - libtasn1.h no longer exports internal structures. - Types were renamed for consistency: ASN1_DATA_NODE -> asn1_data_node_st ASN1_ARRAY_TYPE -> asn1_static_node ASN1_TYPE -> asn1_node ASN1_TYPE_EMPTY -> NULL static_struct_asn -> asn1_static_node_st node_asn_struct -> asn1_node_st node_asn -> asn1_node_st (the old types are still available as definitions) * Noteworthy changes in release 2.13 (2012-05-31) [stable] - Updated fix for DER decoding issue to not depend on specific compilers. - Updated DER decoding check to apply to short form integers as well. * Noteworthy changes in release 2.12 (2012-03-19) [stable] - Cleanup license headers. - build: Update gnulib files. - Corrected DER decoding issue (reported by Matthew Hall). Added self check to detect the problem, see tests/Test_overflow.c. This problem can lead to at least remotely triggered crashes, see further analysis on the libtasn1 mailing list. * Noteworthy changes in release 2.11 (2011-11-25) [stable] - qa: Now builds without compiler warnings with Solaris CC. - qa: Added clang analysis. Fixed cyclomatic complexity output. - tests: Added self-test of bit string functions. - build: Added windows/libtasn14win.mk rules to produce Windows binaries. - build: Don't hard code path to perl in doc/gdoc. - Various minor fixes. * Noteworthy changes in release 2.10 (2011-10-25) [stable] - lib: Small optimization, possibly working around gcc/valgrind issue. - build: Update gnulib files. - asn1Coding: actually implement the -c parameter. - asn1Decoding: the -c parameter serves no purpose, remove it. - doc: Add examples to asn1Coding and asn1Decoding description. * Noteworthy changes in release 2.9 (2010-12-06) [stable] - tests: Link to gnulib to avoid build error related to 'rpl_ftello' on Solaris. Reported by Dagobert Michelsen. - doc: Fix bug reporting address to point at help-libtasn1@gnu.org. - doc: Fix Returns: documentation in Texinfo. Reported by Jeffrey Walton. - build: Update gnulib files. * Noteworthy changes in release 2.8 (2010-09-25) [stable] - Update gnulib files. - Use Libtool 2.2.10 to ease MinGW64 builds. * Noteworthy changes in release 2.7 (2010-05-20) [stable] - Doc: Build a PDF manual using GTK-DOC. - Doc: Fix of asn1_check_version, documentation was missing from last release. - Build: Avoid warnings about ignored visibility attributes on Windows. * Noteworthy changes in release 2.6 (2010-04-20) [stable] - Fix build failure on platforms without support for GNU LD version scripts. - libtasn1: Simplified implementation of asn1_check_version. - tests: Improved self-checks. - Update gnulib files, fix many syntax-check nits, indent code, fix license templates. * Noteworthy changes in release 2.5 (2010-03-15) [stable] - doc: Improve GTK-DOC comments. - misc: Updated gnulib files. * Noteworthy changes in release 2.4 (2010-01-18) [stable] - Doc fixes. - Updated gnulib files. - Clean up copyright notices. * Noteworthy changes in release 2.3 (2009-07-29) [stable] - Libtasn1 is now an official GNU project. - Solve build problem on Tru64 related to TRUE/FALSE. - More careful decoding of OIDs. - Fixed warning in ASN1.y. - Use "Software libraries" info dircategory. - Drop GPL/LGPL copies from the manual (not needed there). - New configure parameters to set packaging specific information. The parameters are --with-packager, --with-packager-version, and --with-packager-bug-reports. See for more details. * Noteworthy changes in release 2.2 (2009-05-20) [stable] - Change how the ASN1_API decorator is used in libtasn1.h, for GTK-DOC. - Changed license of libtasn1.pc from GPLv3+ to LGPLv2.1+. Reported by Jeff Cai . - Building with many warning flags now requires --enable-gcc-warnings. - Some warnings fixed. * Noteworthy changes in release 2.1 (2009-04-17) [stable] - Fix compilation failure on platforms that can't generate empty archives, e.g., Mac OS X. Reported by David Reiser . * Noteworthy changes in release 2.0 (2009-04-13) [stable] - Optimized tree generation. - ASN1 parser code re-generated using Bison 2.4.1. - Build with more warning flags. Many compiler warnings fixed. - Compiled with -fvisibility=hidden by default if supported. See http://gcc.gnu.org/wiki/Visibility - The libtasn1-config tool has been removed. For application developers, please stop using libtasn1-config for finding libtasn1, use proper autoconf checks or pkg-config instead. For users that need a libtasn1 that provides a libtasn1-config script (for use with older applications), use libtasn1 v1.x instead. Version 1.x is still supported. * Noteworthy changes in release 1.8 (2009-01-16) [stable] - Fix crlf self-test under Mingw+Wine. - Fix build problems on platforms that lack stdint.h. Reported by Dagobert Michelsen in . * Noteworthy changes in release 1.7 (2008-11-17) [stable] - Add libtasn1-config for compatibility. Please stop use it as it will disappear in v2.0! Use standard AC_CHECK_FUNCS autoconf tests or pkg-config instead. - Read PKCS#12 blob as binary file, fixes self-tests under Mingw. - Fix use of __attribute__ ((deprecated)) to work on non-GCC (#106548). * Noteworthy changes in release 1.6 (2008-11-10) [stable] - Fixed namespace violation for MAX_NAME_SIZE and MAX_ERROR_DESCRIPTION_SIZE. The new names are ASN1_MAX_NAME_SIZE and ASN1_MAX_ERROR_DESCRIPTION_SIZE. - Fixed namespace violation for libtasn1_perror and libtasn1_strerror. The new names are asn1_perror and asn1_strerror. - Fix namespace violation for LIBASN1_VERSION. The new name is ASN1_VERSION. - Decoder can now decode BER encoded octet strings. - doc: Change license on the manual to GFDLv1.3+. - doc: Sync gdoc script with GnuTLS, changes license on man-pages to GAP. - doc: Improve gtk-doc manual. - Assumes system has strdup and string.h. - Remove libtasn1-config and libtasn1.m4, use standard AC_CHECK_FUNCS autoconf tests or pkg-config instead. - Change detection of when to use a linker version script, use --enable-ld-version-script or --disable-ld-version-script to override auto-detection logic. - API and ABI changes since last version: asn1_get_length_ber: New function. ASN1_VERSION: New symbol, replaces LIBTASN1_VERSION. asn1_strerror: New function, replaces libtasn1_strerror. asn1_perror: New function, replaces libtasn1_perror. libtasn1_strerror: Marked as deprecated. libtasn1_perror: Marked as deprecated. LIBTASN1_VERSION: Deprecated. * Noteworthy changes in release 1.5 (2008-07-29) [stable] - Update gnulib files. - Fix memory leaks, from Christian Grothoff . * Noteworthy changes in release 1.4 (2008-04-21) [stable] - Update gnulib files. - Replace uses of alloca with malloc. * Noteworthy changes in release 1.3 (2008-02-01) [stable] - Handle 'INTEGER { ... } (a..b)' regression. Revert parts of earlier fix. asn1Parser can now again parse src/pkix.asn1. The ASN1.c file was generated using Bison 2.3. - Move examples from src/ to new directory examples/. - Duplicate copy of divergated pkix.asn removed. - Merge unnecessary lib/defines.h into lib/int.h. - Configure no longer tries to use gcc -pipe. - Update gnulib files. - Fix mem leak in self-test. * Noteworthy changes in release 1.2 (2007-12-10) [stable] - Update gnulib files. * Noteworthy changes in release 1.1 (2007-08-31) [stable] - Fix bug that made asn1_check_version believe that 1.0 is older than 0.3.10. * Noteworthy changes in release 1.0 (2007-08-31) [stable] - The self-tests, command line tools and build infrastructure have been re-licensed from GPLv2 to GPLv3. - Doc fixes. - Update gnulib files. * Noteworthy changes in release 0.3.10 (2007-05-25) - Update gnulib files. * Noteworthy changes in release 0.3.9 (2007-03-02) - In generated code, config.h is pulled in if HAVE_CONFIG_H. - Development changes: changed from CVS to GIT as an experiment. I push my changes to . - Autoconf 2.61 and automake 1.10 is required. * Noteworthy changes in release 0.3.8 (2006-11-16) - Fix reading of binary files in asn1Decoding, for Windows. * Noteworthy changes in release 0.3.7 (2006-10-19) - When asn1_der_coding encoded a TYPE_NULL and the output buffer is NULL, it would not increment the counter properly, so the size of the required buffer would be off by one. Fixed. Reported by Stephen Wrobleski . - Fix configure to respect user-definable flags. Reported by "Diego 'Flameeyes' Pettenò" . - The --help and --version outputs from the tools have been improved. * Noteworthy changes in release 0.3.6 (2006-08-13) - Fix man pages to use \- instead of - for negative signs (as in "-1"). - Add -I's when building in src/, so that unistd.h etc is found on systems that doesn't have them. - Valgrind isn't used for cross-compilation by default, and there is also --disable-valgrind-tests to unconditionally disable it. - Valgrind is invoked without parameters, put things you like into ~/.valgrindrc instead. * Noteworthy changes in release 0.3.5 (2006-06-27) - Fix asn1_octet_der to handle writes of zero-length buffers, before it did not write the ASN.1 length for a zero-length buffer. This caused ASN.1 encodings to be incorrect on 64-bit platforms. - Add self test that attempt to trigger the above bug. - Fix test of -Wno-pointer-sign. - Improve cross-compilation to MinGW by using AC_LIBTOOL_WIN32_DLL. * Noteworthy changes in release 0.3.4 (2006-05-10) - Really fix encodings. - Add new self test, tests/Test_encoding.c. - Self tests are ran under valgrind, if it is available. - We test for the -Wno-pointer-sign parameter before using it. * Noteworthy changes in release 0.3.3 (2006-05-07) - Add some 'const' to prototypes. - Remove some 'unsigned' keywords. - Corrected asn1_der_coding() bug introduced when it became reentrant. Now it produces correct encodings. * Noteworthy changes in release 0.3.2 - Corrected bug in asn1_der_coding() which overwrited some data in the original structure. - The asn1Parser, asn1Coding and asn1Decoding programs are now installed. * Noteworthy changes in release 0.3.1 - Support constant size bit strings, as in 'BIT STRING (SIZE(42))'. Reported by Cyril Holweck . - Add two more APIs required by GnuTLS. - New public APIs: asn1_find_node function asn1_copy_node * Noteworthy changes in release 0.3.0 - Export DER utility functions, mostly so that GnuTLS can avoid using libtasn1 internals. - The _asn1* symbols are not exported in the shared library file (when using GNU ld). - The library can now be built using Visual Studio, and the project files are included in windows/. - New public APIs: asn1_get_tag_der asn1_octet_der asn1_get_octet_der asn1_bit_der asn1_get_bit_der asn1_get_length_der asn1_length_der * Noteworthy changes in release 0.2.18 - Fix out-of-bounds access in DER decoding, reported by Evgeny Legerov. - Add 'const' keyword to some prototypes, thanks to Frediano ZIGLIO. - Fixed typo in src/Makefile.am to make it build with objdir != srcdir, thanks to Bernard Leak. - Update of gnulib files. - Typo fixes in comments, e.g. finish libasn1 to libtasn1 renaming, use LGPL boiler plate on some files in lib/. * Noteworthy changes in release 0.2.17 - Fixed typo to make it build. * Noteworthy changes in release 0.2.16 - * Noteworthy changes in release script added again. * Noteworthy changes in release 0.2.15 - Gnulib is used to implement memmove if your system does not have it. - Simplified assert/error handling slightly. * Noteworthy changes in release 0.2.14 - Some build fixes. - Pkg-config script 'libtasn1.pc' added. - Postal address to FSF in license updated. * Noteworthy changes in release 0.2.13 - * Noteworthy changes in release number in libtasn1.h updated properly. * Noteworthy changes in release 0.2.12 - Manual converted to Texinfo format. - Manual in GTK-DOC and DevHelp formats added. - Man pages for all functions added. - Various internal cleanups. * Noteworthy changes in release 0.2.11 - Added the self test with "make check" target - Added management of ANY type with null length - Corrected some writes to invalid data. * Noteworthy changes in release 0.2.10 - Added scripts to assist in libtasn1 version detection from configure scripts. - Corrected a DER decoding bug which was reported by Max Vozeler . * Noteworthy changes in release 0.2.9 - Accept negative numbers as range in INTEGER declarations * Noteworthy changes in release 0.2.8 - Add asn1_delete_element function * Noteworthy changes in release 0.2.7 - Added versioned symbols. * Noteworthy changes in release 0.2.6 - ASN.1 parser accepts these kinds of integer definitions: "INTEGER (5 | 10)" and "INTEGER (5)" - Comments start at "--" and finish at the "end of line" or with another "--". * Noteworthy changes in release 0.2.5 - Bug fix in ordering procedure for SET OF and SEQUENCE OF types coding. - Manage structured format (BER encoding) in asn1_der_decoding, asn1_decoding_element and asn1_der_decoding_startEnd for OCTET STRING type. - Manage SEQUENCE and SET empty structure. - Manage "indefinite length method" in asn1_der_decoding, asn1_decoding_element and asn1_der_decoding_startEnd for the following types: SEQUENCE, SEQUENCE OF, SET, and SET OF. - Bug fix in asn1_read_value with NULL parameter in case of BIT STRING * Noteworthy changes in release 0.2.4 - Bug fix in asn1_der_coding with NULL parameter - Manage DEFAULT option with OBJECT IDENTIFIER * Noteworthy changes in release 0.2.3 - Chenge asn1_find_structure_from_oid prototype - Chenge asn1_find_structure_from_oid prototype - Add ASN1_MEM_ALLOC_ERROR return value * Noteworthy changes in release 0.2.2 - Add vector length check in asn1_der_coding function - Add vector length check in asn1_der_coding function - Add vector length check in asn1_read_value function - Add asn1_check_version function * Noteworthy changes in release 0.2.1 - Add asn1_find_structure_from_oid function - Add asn1_read_tag function * Noteworthy changes in release 0.2.0 - Support for other platforms - Change asn1_create_element function interface (dest_name not needed any more) - Change OBJECT IDENTIFIER syntax: numbers must be separated by dot in asn1_write_element and asn1_read_element functions (e.g. "1.2.3.4") * Noteworthy changes in release 0.1.2 - Added GeneralString type - Fixed a DER encoding bug when nested tags are used * Noteworthy changes in release 0.1.1 - Renamed to libtasn1 - Functions which return a string for error description now accept a NULL argument. - License is now GNU Lesser GPL * Noteworthy changes in release 0.1.0 - Initial release ---------------------------------------------------------------------- Copyright (C) 2002-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. libtasn1-3.4/INSTALL0000644000000000000000000003660512244721750011033 00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. libtasn1-3.4/.clcopying0000664000000000000000000000046112244720630011757 00000000000000 ---------------------------------------------------------------------- Copyright (C) 2002-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. libtasn1-3.4/lib/0000775000000000000000000000000012244722064010617 500000000000000libtasn1-3.4/lib/glm4/0000775000000000000000000000000012244722064011462 500000000000000libtasn1-3.4/lib/glm4/ld-version-script.m40000664000000000000000000000336412244720630015233 00000000000000# ld-version-script.m4 serial 3 dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # FIXME: The test below returns a false positive for mingw # cross-compiles, 'local:' statements does not reduce number of # exported symbols in a DLL. Use --disable-ld-version-script to work # around the problem. # gl_LD_VERSION_SCRIPT # -------------------- # Check if LD supports linker scripts, and define automake conditional # HAVE_LD_VERSION_SCRIPT if so. AC_DEFUN([gl_LD_VERSION_SCRIPT], [ AC_ARG_ENABLE([ld-version-script], AS_HELP_STRING([--enable-ld-version-script], [enable linker version script (default is enabled when possible)]), [have_ld_version_script=$enableval], []) if test -z "$have_ld_version_script"; then AC_MSG_CHECKING([if LD -Wl,--version-script works]) save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" cat > conftest.map < conftest.map < to declare strverscmp(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) AC_CHECK_FUNCS([strverscmp]) if test $ac_cv_func_strverscmp = no; then HAVE_STRVERSCMP=0 fi ]) # Prerequisites of lib/strverscmp.c. AC_DEFUN([gl_PREREQ_STRVERSCMP], [ : ]) libtasn1-3.4/lib/glm4/gnulib-comp.m40000664000000000000000000002105212244720630014055 00000000000000# DO NOT EDIT! GENERATED AUTOMATICALLY! # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the compiled summary of the specification in # gnulib-cache.m4. It lists the computed macro invocations that need # to be invoked from configure.ac. # In projects that use version control, this file can be treated like # other built files. # This macro should be invoked from ./configure.ac, in the section # "Checks for programs", right after AC_PROG_CC, and certainly before # any checks for libraries, header files, types and library functions. AC_DEFUN([lgl_EARLY], [ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable AC_REQUIRE([gl_PROG_AR_RANLIB]) # Code from module extensions: AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Code from module hash-pjw-bare: # Code from module include_next: # Code from module intprops: # Code from module lib-symbol-versions: # Code from module lib-symbol-visibility: # Code from module multiarch: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module stddef: # Code from module stdint: # Code from module string: # Code from module strverscmp: ]) # This macro should be invoked from ./configure.ac, in the section # "Check for header files, types and library functions". AC_DEFUN([lgl_INIT], [ AM_CONDITIONAL([GL_COND_LIBTOOL], [true]) gl_cond_libtool=true gl_m4_base='lib/glm4' m4_pushdef([AC_LIBOBJ], m4_defn([lgl_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([lgl_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([lgl_LIBSOURCES])) m4_pushdef([lgl_LIBSOURCES_LIST], []) m4_pushdef([lgl_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='lib/gllib' gl_LD_VERSION_SCRIPT gl_VISIBILITY gl_MULTIARCH gl_STDDEF_H gl_STDINT_H gl_HEADER_STRING_H gl_FUNC_STRVERSCMP if test $HAVE_STRVERSCMP = 0; then AC_LIBOBJ([strverscmp]) gl_PREREQ_STRVERSCMP fi gl_STRING_MODULE_INDICATOR([strverscmp]) # End of code from modules m4_ifval(lgl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([lgl_LIBSOURCES_DIR])[ || for gl_file in ]lgl_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([lgl_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([lgl_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([lgl_LIBSOURCES_DIR]) m4_popdef([lgl_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ lgl_libobjs= lgl_ltlibobjs= if test -n "$lgl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $lgl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do lgl_libobjs="$lgl_libobjs $i.$ac_objext" lgl_ltlibobjs="$lgl_ltlibobjs $i.lo" done fi AC_SUBST([lgl_LIBOBJS], [$lgl_libobjs]) AC_SUBST([lgl_LTLIBOBJS], [$lgl_ltlibobjs]) ]) gltests_libdeps= gltests_ltlibdeps= m4_pushdef([AC_LIBOBJ], m4_defn([lgltests_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([lgltests_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([lgltests_LIBSOURCES])) m4_pushdef([lgltests_LIBSOURCES_LIST], []) m4_pushdef([lgltests_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='tests' changequote(,)dnl lgltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS changequote([, ])dnl AC_SUBST([lgltests_WITNESS]) gl_module_indicator_condition=$lgltests_WITNESS m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) m4_popdef([gl_MODULE_INDICATOR_CONDITION]) m4_ifval(lgltests_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([lgltests_LIBSOURCES_DIR])[ || for gl_file in ]lgltests_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([lgltests_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([lgltests_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([lgltests_LIBSOURCES_DIR]) m4_popdef([lgltests_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ lgltests_libobjs= lgltests_ltlibobjs= if test -n "$lgltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $lgltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do lgltests_libobjs="$lgltests_libobjs $i.$ac_objext" lgltests_ltlibobjs="$lgltests_ltlibobjs $i.lo" done fi AC_SUBST([lgltests_LIBOBJS], [$lgltests_libobjs]) AC_SUBST([lgltests_LTLIBOBJS], [$lgltests_ltlibobjs]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into lgl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([lgl_LIBOBJ], [ AS_LITERAL_IF([$1], [lgl_LIBSOURCES([$1.c])])dnl lgl_LIBOBJS="$lgl_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into lgl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([lgl_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [lgl_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([lgl_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([lgl_LIBSOURCES_DIR], [lib/gllib]) m4_append([lgl_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into lgltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([lgltests_LIBOBJ], [ AS_LITERAL_IF([$1], [lgltests_LIBSOURCES([$1.c])])dnl lgltests_LIBOBJS="$lgltests_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into lgltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([lgltests_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [lgltests_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([lgltests_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([lgltests_LIBSOURCES_DIR], [tests]) m4_append([lgltests_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # This macro records the list of files which have been installed by # gnulib-tool and may be removed by future gnulib-tool invocations. AC_DEFUN([lgl_FILE_LIST], [ build-aux/snippet/arg-nonnull.h build-aux/snippet/c++defs.h build-aux/snippet/warn-on-use.h lib/hash-pjw-bare.c lib/hash-pjw-bare.h lib/intprops.h lib/stddef.in.h lib/stdint.in.h lib/string.in.h lib/strverscmp.c m4/00gnulib.m4 m4/extensions.m4 m4/gnulib-common.m4 m4/include_next.m4 m4/ld-version-script.m4 m4/longlong.m4 m4/multiarch.m4 m4/stddef_h.m4 m4/stdint.m4 m4/string_h.m4 m4/strverscmp.m4 m4/visibility.m4 m4/warn-on-use.m4 m4/wchar_t.m4 ]) libtasn1-3.4/lib/glm4/visibility.m40000664000000000000000000000642712244720630014041 00000000000000# visibility.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2005, 2008, 2010-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Tests whether the compiler supports the command-line option dnl -fvisibility=hidden and the function and variable attributes dnl __attribute__((__visibility__("hidden"))) and dnl __attribute__((__visibility__("default"))). dnl Does *not* test for __visibility__("protected") - which has tricky dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on dnl Mac OS X. dnl Does *not* test for __visibility__("internal") - which has processor dnl dependent semantics. dnl Does *not* test for #pragma GCC visibility push(hidden) - which is dnl "really only recommended for legacy code". dnl Set the variable CFLAG_VISIBILITY. dnl Defines and sets the variable HAVE_VISIBILITY. AC_DEFUN([gl_VISIBILITY], [ AC_REQUIRE([AC_PROG_CC]) CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then dnl First, check whether -Werror can be added to the command line, or dnl whether it leads to an error because of some other option that the dnl user has put into $CC $CFLAGS $CPPFLAGS. AC_MSG_CHECKING([whether the -Werror option is usable]) AC_CACHE_VAL([gl_cv_cc_vis_werror], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_vis_werror=yes], [gl_cv_cc_vis_werror=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_vis_werror]) dnl Now check whether visibility declarations are supported. AC_MSG_CHECKING([for simple visibility declarations]) AC_CACHE_VAL([gl_cv_cc_visibility], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" dnl We use the option -Werror and a function dummyfunc, because on some dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning dnl "visibility attribute not supported in this configuration; ignored" dnl at the first function definition in every compilation unit, and we dnl don't want to use the option in this case. if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void) {} ]], [[]])], [gl_cv_cc_visibility=yes], [gl_cv_cc_visibility=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_visibility]) if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi AC_SUBST([CFLAG_VISIBILITY]) AC_SUBST([HAVE_VISIBILITY]) AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) ]) libtasn1-3.4/lib/glm4/string_h.m40000664000000000000000000001271412244720630013463 00000000000000# Configure a GNU-like replacement for . # Copyright (C) 2007-2013 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. # serial 21 # Written by Paul Eggert. AC_DEFUN([gl_HEADER_STRING_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_HEADER_STRING_H_BODY]) ]) AC_DEFUN([gl_HEADER_STRING_H_BODY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) gl_NEXT_HEADERS([string.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by C89. gl_WARN_ON_USE_PREPARE([[#include ]], [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r strerror_r strsignal strverscmp]) ]) AC_DEFUN([gl_STRING_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS], [ GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL]) GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL]) GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR]) GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM]) GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY]) GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR]) GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR]) GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY]) GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY]) GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL]) GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP]) GNULIB_STRNCAT=0; AC_SUBST([GNULIB_STRNCAT]) GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP]) GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN]) GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK]) GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP]) GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR]) GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR]) GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R]) GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN]) GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN]) GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR]) GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR]) GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR]) GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP]) GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP]) GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP]) GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR]) GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN]) GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK]) GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN]) GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP]) GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R]) GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR]) GNULIB_STRERROR_R=0; AC_SUBST([GNULIB_STRERROR_R]) GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL]) GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP]) HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FFSL=1; AC_SUBST([HAVE_FFSL]) HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL]) HAVE_MEMCHR=1; AC_SUBST([HAVE_MEMCHR]) HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR]) HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR]) HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY]) HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY]) HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL]) HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP]) HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP]) HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN]) HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK]) HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP]) HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR]) HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R]) HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R]) HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL]) HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP]) REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR]) REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY]) REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP]) REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR]) REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR]) REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL]) REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R]) REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT]) REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP]) REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN]) REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R]) UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) ]) libtasn1-3.4/lib/version.c0000664000000000000000000000322212244720630012364 00000000000000/* * Copyright (C) 2000-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ #ifdef HAVE_CONFIG_H #include #endif #include /* for strverscmp */ #include "libtasn1.h" /** * asn1_check_version: * @req_version: Required version number, or %NULL. * * Check that the version of the library is at minimum the * requested one and return the version string; return %NULL if the * condition is not satisfied. If a %NULL is passed to this function, * no check is done, but the version string is simply returned. * * See %ASN1_VERSION for a suitable @req_version string. * * Returns: Version string of run-time library, or %NULL if the * run-time library does not meet the required version number. */ const char * asn1_check_version (const char *req_version) { if (!req_version || strverscmp (req_version, ASN1_VERSION) <= 0) return ASN1_VERSION; return NULL; } libtasn1-3.4/lib/parser_aux.c0000664000000000000000000006640712244720630013066 00000000000000/* * Copyright (C) 2000-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ #include #include #include "parser_aux.h" #include "gstr.h" #include "structure.h" #include "element.h" char _asn1_identifierMissing[ASN1_MAX_NAME_SIZE + 1]; /* identifier name not found */ /***********************************************/ /* Type: list_type */ /* Description: type used in the list during */ /* the structure creation. */ /***********************************************/ typedef struct list_struct { asn1_node node; struct list_struct *next; } list_type; /* Pointer to the first element of the list */ list_type *firstElement = NULL; /******************************************************/ /* Function : _asn1_add_static_node */ /* Description: creates a new NODE_ASN element and */ /* puts it in the list pointed by firstElement. */ /* Parameters: */ /* type: type of the new element (see ASN1_ETYPE_ */ /* and CONST_ constants). */ /* Return: pointer to the new element. */ /******************************************************/ asn1_node _asn1_add_static_node (unsigned int type) { list_type *listElement; asn1_node punt; punt = calloc (1, sizeof (struct asn1_node_st)); if (punt == NULL) return NULL; listElement = malloc (sizeof (list_type)); if (listElement == NULL) { free (punt); return NULL; } listElement->node = punt; listElement->next = firstElement; firstElement = listElement; punt->type = type; return punt; } /** * asn1_find_node: * @pointer: NODE_ASN element pointer. * @name: null terminated string with the element's name to find. * * Searches for an element called @name starting from @pointer. The * name is composed by differents identifiers separated by dots. When * *@pointer has a name, the first identifier must be the name of * *@pointer, otherwise it must be the name of one child of *@pointer. * * Returns: the search result, or %NULL if not found. **/ asn1_node asn1_find_node (asn1_node pointer, const char *name) { asn1_node p; char *n_end, n[ASN1_MAX_NAME_SIZE + 1]; const char *n_start; unsigned int nsize; unsigned int nhash; if (pointer == NULL) return NULL; if (name == NULL) return NULL; p = pointer; n_start = name; if (p->name[0] != 0) { /* has *pointer got a name ? */ n_end = strchr (n_start, '.'); /* search the first dot */ if (n_end) { nsize = n_end - n_start; memcpy (n, n_start, nsize); n[nsize] = 0; n_start = n_end; n_start++; nhash = hash_pjw_bare (n, nsize); } else { nsize = _asn1_str_cpy (n, sizeof (n), n_start); nhash = hash_pjw_bare (n, nsize); n_start = NULL; } while (p) { if ((p->name) && nhash == p->name_hash && (!strcmp (p->name, n))) break; else p = p->right; } /* while */ if (p == NULL) return NULL; } else { /* *pointer doesn't have a name */ if (n_start[0] == 0) return p; } while (n_start) { /* Has the end of NAME been reached? */ n_end = strchr (n_start, '.'); /* search the next dot */ if (n_end) { nsize = n_end - n_start; memcpy (n, n_start, nsize); n[nsize] = 0; n_start = n_end; n_start++; nhash = hash_pjw_bare (n, nsize); } else { nsize = _asn1_str_cpy (n, sizeof (n), n_start); nhash = hash_pjw_bare (n, nsize); n_start = NULL; } if (p->down == NULL) return NULL; p = p->down; /* The identifier "?LAST" indicates the last element in the right chain. */ if (!strcmp (n, "?LAST")) { if (p == NULL) return NULL; while (p->right) p = p->right; } else { /* no "?LAST" */ while (p) { if (p->name_hash == nhash && !strcmp (p->name, n)) break; else p = p->right; } if (p == NULL) return NULL; } } /* while */ return p; } /******************************************************************/ /* Function : _asn1_set_value */ /* Description: sets the field VALUE in a NODE_ASN element. The */ /* previous value (if exist) will be lost */ /* Parameters: */ /* node: element pointer. */ /* value: pointer to the value that you want to set. */ /* len: character number of value. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_set_value (asn1_node node, const void *value, unsigned int len) { if (node == NULL) return node; if (node->value) { if (node->value != node->small_value) free (node->value); node->value = NULL; node->value_len = 0; } if (!len) return node; if (len < sizeof (node->small_value)) { node->value = node->small_value; } else { node->value = malloc (len); if (node->value == NULL) return NULL; } node->value_len = len; memcpy (node->value, value, len); return node; } /******************************************************************/ /* Function : _asn1_set_value_lv */ /* Description: sets the field VALUE in a NODE_ASN element. The */ /* previous value (if exist) will be lost. The value */ /* given is stored as an length-value format (LV */ /* Parameters: */ /* node: element pointer. */ /* value: pointer to the value that you want to set. */ /* len: character number of value. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_set_value_lv (asn1_node node, const void *value, unsigned int len) { int len2; void *temp; if (node == NULL) return node; asn1_length_der (len, NULL, &len2); temp = malloc (len + len2); if (temp == NULL) return NULL; asn1_octet_der (value, len, temp, &len2); return _asn1_set_value_m (node, temp, len2); } /* the same as _asn1_set_value except that it sets an already malloc'ed * value. */ asn1_node _asn1_set_value_m (asn1_node node, void *value, unsigned int len) { if (node == NULL) return node; if (node->value) { if (node->value != node->small_value) free (node->value); node->value = NULL; node->value_len = 0; } if (!len) return node; node->value = value; node->value_len = len; return node; } /******************************************************************/ /* Function : _asn1_append_value */ /* Description: appends to the field VALUE in a NODE_ASN element. */ /* */ /* Parameters: */ /* node: element pointer. */ /* value: pointer to the value that you want to be appended. */ /* len: character number of value. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_append_value (asn1_node node, const void *value, unsigned int len) { if (node == NULL) return node; if (node->value != NULL && node->value != node->small_value) { /* value is allocated */ int prev_len = node->value_len; node->value_len += len; node->value = realloc (node->value, node->value_len); if (node->value == NULL) { node->value_len = 0; return NULL; } memcpy (&node->value[prev_len], value, len); return node; } else if (node->value == node->small_value) { /* value is in node */ int prev_len = node->value_len; node->value_len += len; node->value = malloc (node->value_len); if (node->value == NULL) { node->value_len = 0; return NULL; } memcpy (node->value, node->small_value, prev_len); memcpy (&node->value[prev_len], value, len); return node; } else /* node->value == NULL */ return _asn1_set_value (node, value, len); } /******************************************************************/ /* Function : _asn1_set_name */ /* Description: sets the field NAME in a NODE_ASN element. The */ /* previous value (if exist) will be lost */ /* Parameters: */ /* node: element pointer. */ /* name: a null terminated string with the name that you want */ /* to set. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_set_name (asn1_node node, const char *name) { unsigned int nsize; if (node == NULL) return node; if (name == NULL) { node->name[0] = 0; node->name_hash = hash_pjw_bare (node->name, 0); return node; } nsize = _asn1_str_cpy (node->name, sizeof (node->name), name); node->name_hash = hash_pjw_bare (node->name, nsize); return node; } /******************************************************************/ /* Function : _asn1_cpy_name */ /* Description: copies the field NAME in a NODE_ASN element. */ /* Parameters: */ /* dst: a dest element pointer. */ /* src: a source element pointer. */ /* Return: pointer to the NODE_ASN element. */ /******************************************************************/ asn1_node _asn1_cpy_name (asn1_node dst, asn1_node src) { if (dst == NULL) return dst; if (src == NULL) { dst->name[0] = 0; dst->name_hash = hash_pjw_bare (dst->name, 0); return dst; } _asn1_str_cpy (dst->name, sizeof (dst->name), src->name); dst->name_hash = src->name_hash; return dst; } /******************************************************************/ /* Function : _asn1_set_right */ /* Description: sets the field RIGHT in a NODE_ASN element. */ /* Parameters: */ /* node: element pointer. */ /* right: pointer to a NODE_ASN element that you want be pointed*/ /* by NODE. */ /* Return: pointer to *NODE. */ /******************************************************************/ asn1_node _asn1_set_right (asn1_node node, asn1_node right) { if (node == NULL) return node; node->right = right; if (right) right->left = node; return node; } /******************************************************************/ /* Function : _asn1_get_last_right */ /* Description: return the last element along the right chain. */ /* Parameters: */ /* node: starting element pointer. */ /* Return: pointer to the last element along the right chain. */ /******************************************************************/ asn1_node _asn1_get_last_right (asn1_node node) { asn1_node p; if (node == NULL) return NULL; p = node; while (p->right) p = p->right; return p; } /******************************************************************/ /* Function : _asn1_remove_node */ /* Description: gets free the memory allocated for an NODE_ASN */ /* element (not the elements pointed by it). */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* flags: ASN1_DELETE_FLAG_* */ /******************************************************************/ void _asn1_remove_node (asn1_node node, unsigned int flags) { if (node == NULL) return; if (flags & ASN1_DELETE_FLAG_ZEROIZE) memset(node->value, 0, node->value_len); if (node->value != NULL && node->value != node->small_value) free (node->value); free (node); } /******************************************************************/ /* Function : _asn1_find_up */ /* Description: return the father of the NODE_ASN element. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: Null if not found. */ /******************************************************************/ asn1_node _asn1_find_up (asn1_node node) { asn1_node p; if (node == NULL) return NULL; p = node; while ((p->left != NULL) && (p->left->right == p)) p = p->left; return p->left; } /******************************************************************/ /* Function : _asn1_delete_list */ /* Description: deletes the list elements (not the elements */ /* pointed by them). */ /******************************************************************/ void _asn1_delete_list (void) { list_type *listElement; while (firstElement) { listElement = firstElement; firstElement = firstElement->next; free (listElement); } } /******************************************************************/ /* Function : _asn1_delete_list_and nodes */ /* Description: deletes the list elements and the elements */ /* pointed by them. */ /******************************************************************/ void _asn1_delete_list_and_nodes (void) { list_type *listElement; while (firstElement) { listElement = firstElement; firstElement = firstElement->next; _asn1_remove_node (listElement->node, 0); free (listElement); } } char * _asn1_ltostr (long v, char *str) { long d, r; char temp[20]; int count, k, start; if (v < 0) { str[0] = '-'; start = 1; v = -v; } else start = 0; count = 0; do { d = v / 10; r = v - d * 10; temp[start + count] = '0' + (char) r; count++; v = d; } while (v); for (k = 0; k < count; k++) str[k + start] = temp[start + count - k - 1]; str[count + start] = 0; return str; } /******************************************************************/ /* Function : _asn1_change_integer_value */ /* Description: converts into DER coding the value assign to an */ /* INTEGER constant. */ /* Parameters: */ /* node: root of an ASN1element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_change_integer_value (asn1_node node) { asn1_node p; unsigned char val[SIZEOF_UNSIGNED_LONG_INT]; unsigned char val2[SIZEOF_UNSIGNED_LONG_INT + 1]; int len; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; while (p) { if ((type_field (p->type) == ASN1_ETYPE_INTEGER) && (p->type & CONST_ASSIGN)) { if (p->value) { _asn1_convert_integer (p->value, val, sizeof (val), &len); asn1_octet_der (val, len, val2, &len); _asn1_set_value (p, val2, len); } } if (p->down) { p = p->down; } else { if (p == node) p = NULL; else if (p->right) p = p->right; else { while (1) { p = _asn1_find_up (p); if (p == node) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } } return ASN1_SUCCESS; } /******************************************************************/ /* Function : _asn1_expand_object_id */ /* Description: expand the IDs of an OBJECT IDENTIFIER constant. */ /* Parameters: */ /* node: root of an ASN1 element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_expand_object_id (asn1_node node) { asn1_node p, p2, p3, p4, p5; char name_root[ASN1_MAX_NAME_SIZE], name2[2 * ASN1_MAX_NAME_SIZE + 1]; int move, tlen; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; _asn1_str_cpy (name_root, sizeof (name_root), node->name); p = node; move = DOWN; while (!((p == node) && (move == UP))) { if (move != UP) { if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_ASSIGN)) { p2 = p->down; if (p2 && (type_field (p2->type) == ASN1_ETYPE_CONSTANT)) { if (p2->value && !isdigit (p2->value[0])) { _asn1_str_cpy (name2, sizeof (name2), name_root); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p2->value); p3 = asn1_find_node (node, name2); if (!p3 || (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) || !(p3->type & CONST_ASSIGN)) return ASN1_ELEMENT_NOT_FOUND; _asn1_set_down (p, p2->right); _asn1_remove_node (p2, 0); p2 = p; p4 = p3->down; while (p4) { if (type_field (p4->type) == ASN1_ETYPE_CONSTANT) { p5 = _asn1_add_single_node (ASN1_ETYPE_CONSTANT); _asn1_set_name (p5, p4->name); tlen = _asn1_strlen (p4->value); if (tlen > 0) _asn1_set_value (p5, p4->value, tlen + 1); if (p2 == p) { _asn1_set_right (p5, p->down); _asn1_set_down (p, p5); } else { _asn1_set_right (p5, p2->right); _asn1_set_right (p2, p5); } p2 = p5; } p4 = p4->right; } move = DOWN; continue; } } } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_find_up (p); } /*******************************/ /* expand DEFAULT */ /*******************************/ p = node; move = DOWN; while (!((p == node) && (move == UP))) { if (move != UP) { if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_DEFAULT)) { p2 = p->down; if (p2 && (type_field (p2->type) == ASN1_ETYPE_DEFAULT)) { _asn1_str_cpy (name2, sizeof (name2), name_root); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p2->value); p3 = asn1_find_node (node, name2); if (!p3 || (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) || !(p3->type & CONST_ASSIGN)) return ASN1_ELEMENT_NOT_FOUND; p4 = p3->down; name2[0] = 0; while (p4) { if (type_field (p4->type) == ASN1_ETYPE_CONSTANT) { if (name2[0]) _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p4->value); } p4 = p4->right; } tlen = strlen (name2); if (tlen > 0) _asn1_set_value (p2, name2, tlen + 1); } } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_find_up (p); } return ASN1_SUCCESS; } /******************************************************************/ /* Function : _asn1_type_set_config */ /* Description: sets the CONST_SET and CONST_NOT_USED properties */ /* in the fields of the SET elements. */ /* Parameters: */ /* node: root of an ASN1 element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_type_set_config (asn1_node node) { asn1_node p, p2; int move; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; move = DOWN; while (!((p == node) && (move == UP))) { if (move != UP) { if (type_field (p->type) == ASN1_ETYPE_SET) { p2 = p->down; while (p2) { if (type_field (p2->type) != ASN1_ETYPE_TAG) p2->type |= CONST_SET | CONST_NOT_USED; p2 = p2->right; } } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_find_up (p); } return ASN1_SUCCESS; } /******************************************************************/ /* Function : _asn1_check_identifier */ /* Description: checks the definitions of all the identifiers */ /* and the first element of an OBJECT_ID (e.g. {pkix 0 4}). */ /* The _asn1_identifierMissing global variable is filled if */ /* necessary. */ /* Parameters: */ /* node: root of an ASN1 element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL, */ /* ASN1_IDENTIFIER_NOT_FOUND if an identifier is not defined, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_check_identifier (asn1_node node) { asn1_node p, p2; char name2[ASN1_MAX_NAME_SIZE * 2 + 2]; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; while (p) { if (type_field (p->type) == ASN1_ETYPE_IDENTIFIER) { _asn1_str_cpy (name2, sizeof (name2), node->name); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p->value); p2 = asn1_find_node (node, name2); if (p2 == NULL) { if (p->value) _asn1_strcpy (_asn1_identifierMissing, p->value); else _asn1_strcpy (_asn1_identifierMissing, "(null)"); return ASN1_IDENTIFIER_NOT_FOUND; } } else if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_DEFAULT)) { p2 = p->down; if (p2 && (type_field (p2->type) == ASN1_ETYPE_DEFAULT)) { _asn1_str_cpy (name2, sizeof (name2), node->name); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p2->value); _asn1_strcpy (_asn1_identifierMissing, p2->value); p2 = asn1_find_node (node, name2); if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID) || !(p2->type & CONST_ASSIGN)) return ASN1_IDENTIFIER_NOT_FOUND; else _asn1_identifierMissing[0] = 0; } } else if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_ASSIGN)) { p2 = p->down; if (p2 && (type_field (p2->type) == ASN1_ETYPE_CONSTANT)) { if (p2->value && !isdigit (p2->value[0])) { _asn1_str_cpy (name2, sizeof (name2), node->name); _asn1_str_cat (name2, sizeof (name2), "."); _asn1_str_cat (name2, sizeof (name2), (char *) p2->value); _asn1_strcpy (_asn1_identifierMissing, p2->value); p2 = asn1_find_node (node, name2); if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID) || !(p2->type & CONST_ASSIGN)) return ASN1_IDENTIFIER_NOT_FOUND; else _asn1_identifierMissing[0] = 0; } } } if (p->down) { p = p->down; } else if (p->right) p = p->right; else { while (1) { p = _asn1_find_up (p); if (p == node) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } return ASN1_SUCCESS; } /******************************************************************/ /* Function : _asn1_set_default_tag */ /* Description: sets the default IMPLICIT or EXPLICIT property in */ /* the tagged elements that don't have this declaration. */ /* Parameters: */ /* node: pointer to a DEFINITIONS element. */ /* Return: */ /* ASN1_ELEMENT_NOT_FOUND if NODE is NULL or not a pointer to */ /* a DEFINITIONS element, */ /* otherwise ASN1_SUCCESS */ /******************************************************************/ int _asn1_set_default_tag (asn1_node node) { asn1_node p; if ((node == NULL) || (type_field (node->type) != ASN1_ETYPE_DEFINITIONS)) return ASN1_ELEMENT_NOT_FOUND; p = node; while (p) { if ((type_field (p->type) == ASN1_ETYPE_TAG) && !(p->type & CONST_EXPLICIT) && !(p->type & CONST_IMPLICIT)) { if (node->type & CONST_EXPLICIT) p->type |= CONST_EXPLICIT; else p->type |= CONST_IMPLICIT; } if (p->down) { p = p->down; } else if (p->right) p = p->right; else { while (1) { p = _asn1_find_up (p); if (p == node) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } return ASN1_SUCCESS; } libtasn1-3.4/lib/parser_aux.h0000664000000000000000000001323312244720630013060 00000000000000/* * Copyright (C) 2000-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ #ifndef _PARSER_AUX_H #define _PARSER_AUX_H #define DER_LEN 16 /***************************************/ /* Functions used by ASN.1 parser */ /***************************************/ asn1_node _asn1_add_static_node (unsigned int type); asn1_node _asn1_set_value (asn1_node node, const void *value, unsigned int len); asn1_node _asn1_set_value_m (asn1_node node, void *value, unsigned int len); asn1_node _asn1_set_value_lv (asn1_node node, const void *value, unsigned int len); asn1_node _asn1_append_value (asn1_node node, const void *value, unsigned int len); asn1_node _asn1_set_name (asn1_node node, const char *name); asn1_node _asn1_cpy_name (asn1_node dst, asn1_node src); asn1_node _asn1_set_right (asn1_node node, asn1_node right); asn1_node _asn1_get_last_right (asn1_node node); void _asn1_remove_node (asn1_node node, unsigned int flags); void _asn1_delete_list (void); void _asn1_delete_list_and_nodes (void); char *_asn1_ltostr (long v, char *str); asn1_node _asn1_find_up (asn1_node node); int _asn1_change_integer_value (asn1_node node); int _asn1_expand_object_id (asn1_node node); int _asn1_type_set_config (asn1_node node); int _asn1_check_identifier (asn1_node node); int _asn1_set_default_tag (asn1_node node); /******************************************************************/ /* Function : _asn1_get_right */ /* Description: returns the element pointed by the RIGHT field of */ /* a NODE_ASN element. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: field RIGHT of NODE. */ /******************************************************************/ inline static asn1_node _asn1_get_right (asn1_node node) { if (node == NULL) return NULL; return node->right; } /******************************************************************/ /* Function : _asn1_set_down */ /* Description: sets the field DOWN in a NODE_ASN element. */ /* Parameters: */ /* node: element pointer. */ /* down: pointer to a NODE_ASN element that you want be pointed */ /* by NODE. */ /* Return: pointer to *NODE. */ /******************************************************************/ inline static asn1_node _asn1_set_down (asn1_node node, asn1_node down) { if (node == NULL) return node; node->down = down; if (down) down->left = node; return node; } /******************************************************************/ /* Function : _asn1_get_down */ /* Description: returns the element pointed by the DOWN field of */ /* a NODE_ASN element. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: field DOWN of NODE. */ /******************************************************************/ inline static asn1_node _asn1_get_down (asn1_node node) { if (node == NULL) return NULL; return node->down; } /******************************************************************/ /* Function : _asn1_get_name */ /* Description: returns the name of a NODE_ASN element. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: a null terminated string. */ /******************************************************************/ inline static char * _asn1_get_name (asn1_node node) { if (node == NULL) return NULL; return node->name; } /******************************************************************/ /* Function : _asn1_mod_type */ /* Description: change the field TYPE of an NODE_ASN element. */ /* The new value is the old one | (bitwise or) the */ /* paramener VALUE. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* value: the integer value that must be or-ed with the current */ /* value of field TYPE. */ /* Return: NODE pointer. */ /******************************************************************/ inline static asn1_node _asn1_mod_type (asn1_node node, unsigned int value) { if (node == NULL) return node; node->type |= value; return node; } #endif libtasn1-3.4/lib/decoding.c0000664000000000000000000017436612244720630012475 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ /*****************************************************/ /* File: decoding.c */ /* Description: Functions to manage DER decoding */ /*****************************************************/ #include #include #include #include #include #include #include static int _asn1_get_indefinite_length_string (const unsigned char *der, int *len); static void _asn1_error_description_tag_error (asn1_node node, char *ErrorDescription) { Estrcpy (ErrorDescription, ":: tag error near element '"); _asn1_hierarchical_name (node, ErrorDescription + strlen (ErrorDescription), ASN1_MAX_ERROR_DESCRIPTION_SIZE - 40); Estrcat (ErrorDescription, "'"); } /** * asn1_get_length_der: * @der: DER data to decode. * @der_len: Length of DER data to decode. * @len: Output variable containing the length of the DER length field. * * Extract a length field from DER data. * * Returns: Return the decoded length value, or -1 on indefinite * length, or -2 when the value was too big to fit in a int, or -4 * when the decoded length value plus @len would exceed @der_len. **/ long asn1_get_length_der (const unsigned char *der, int der_len, int *len) { unsigned int ans; int k, punt, sum; *len = 0; if (der_len <= 0) return 0; if (!(der[0] & 128)) { /* short form */ *len = 1; ans = der[0]; } else { /* Long form */ k = der[0] & 0x7F; punt = 1; if (k) { /* definite length method */ ans = 0; while (punt <= k && punt < der_len) { if (INT_MULTIPLY_OVERFLOW (ans, 256)) return -2; ans *= 256; if (INT_ADD_OVERFLOW (ans, ((unsigned) der[punt]))) return -2; ans += der[punt]; punt++; } } else { /* indefinite length method */ *len = punt; return -1; } *len = punt; } sum = ans; if (ans >= INT_MAX || INT_ADD_OVERFLOW (sum, (*len))) return -2; sum += *len; if (sum > der_len) return -4; return ans; } /** * asn1_get_tag_der: * @der: DER data to decode. * @der_len: Length of DER data to decode. * @cls: Output variable containing decoded class. * @len: Output variable containing the length of the DER TAG data. * @tag: Output variable containing the decoded tag. * * Decode the class and TAG from DER code. * * Returns: Returns %ASN1_SUCCESS on success, or an error. **/ int asn1_get_tag_der (const unsigned char *der, int der_len, unsigned char *cls, int *len, unsigned long *tag) { unsigned int ris; int punt; if (der == NULL || der_len < 2 || len == NULL) return ASN1_DER_ERROR; *cls = der[0] & 0xE0; if ((der[0] & 0x1F) != 0x1F) { /* short form */ *len = 1; ris = der[0] & 0x1F; } else { /* Long form */ punt = 1; ris = 0; while (punt <= der_len && der[punt] & 128) { if (INT_MULTIPLY_OVERFLOW (ris, 128)) return ASN1_DER_ERROR; ris *= 128; if (INT_ADD_OVERFLOW (ris, ((unsigned) (der[punt] & 0x7F)))) return ASN1_DER_ERROR; ris += (der[punt] & 0x7F); punt++; } if (punt >= der_len) return ASN1_DER_ERROR; if (INT_MULTIPLY_OVERFLOW (ris, 128)) return ASN1_DER_ERROR; ris *= 128; if (INT_ADD_OVERFLOW (ris, ((unsigned) (der[punt] & 0x7F)))) return ASN1_DER_ERROR; ris += (der[punt] & 0x7F); punt++; *len = punt; } if (tag) *tag = ris; return ASN1_SUCCESS; } /** * asn1_get_length_ber: * @ber: BER data to decode. * @ber_len: Length of BER data to decode. * @len: Output variable containing the length of the BER length field. * * Extract a length field from BER data. The difference to * asn1_get_length_der() is that this function will return a length * even if the value has indefinite encoding. * * Returns: Return the decoded length value, or negative value when * the value was too big. * * Since: 2.0 **/ long asn1_get_length_ber (const unsigned char *ber, int ber_len, int *len) { int ret; long err; ret = asn1_get_length_der (ber, ber_len, len); if (ret == -1) { /* indefinite length method */ ret = ber_len; err = _asn1_get_indefinite_length_string (ber + 1, &ret); if (err != ASN1_SUCCESS) return -3; } return ret; } /** * asn1_get_octet_der: * @der: DER data to decode containing the OCTET SEQUENCE. * @der_len: Length of DER data to decode. * @ret_len: Output variable containing the length of the DER data. * @str: Pre-allocated output buffer to put decoded OCTET SEQUENCE in. * @str_size: Length of pre-allocated output buffer. * @str_len: Output variable containing the length of the OCTET SEQUENCE. * * Extract an OCTET SEQUENCE from DER data. * * Returns: Returns %ASN1_SUCCESS on success, or an error. **/ int asn1_get_octet_der (const unsigned char *der, int der_len, int *ret_len, unsigned char *str, int str_size, int *str_len) { int len_len; if (der_len <= 0) return ASN1_GENERIC_ERROR; /* if(str==NULL) return ASN1_SUCCESS; */ *str_len = asn1_get_length_der (der, der_len, &len_len); if (*str_len < 0) return ASN1_DER_ERROR; *ret_len = *str_len + len_len; if (str_size >= *str_len) memcpy (str, der + len_len, *str_len); else { return ASN1_MEM_ERROR; } return ASN1_SUCCESS; } /* Returns ASN1_SUCCESS on success or an error code on error. */ static int _asn1_get_time_der (const unsigned char *der, int der_len, int *ret_len, char *str, int str_size) { int len_len, str_len; if (der_len <= 0 || str == NULL) return ASN1_DER_ERROR; str_len = asn1_get_length_der (der, der_len, &len_len); if (str_len < 0 || str_size < str_len) return ASN1_DER_ERROR; memcpy (str, der + len_len, str_len); str[str_len] = 0; *ret_len = str_len + len_len; return ASN1_SUCCESS; } static int _asn1_get_objectid_der (const unsigned char *der, int der_len, int *ret_len, char *str, int str_size) { int len_len, len, k; int leading; char temp[20]; unsigned long val, val1; *ret_len = 0; if (str && str_size > 0) str[0] = 0; /* no oid */ if (str == NULL || der_len <= 0) return ASN1_GENERIC_ERROR; len = asn1_get_length_der (der, der_len, &len_len); if (len < 0 || len > der_len || len_len > der_len) return ASN1_DER_ERROR; val1 = der[len_len] / 40; val = der[len_len] - val1 * 40; _asn1_str_cpy (str, str_size, _asn1_ltostr (val1, temp)); _asn1_str_cat (str, str_size, "."); _asn1_str_cat (str, str_size, _asn1_ltostr (val, temp)); val = 0; leading = 1; for (k = 1; k < len; k++) { /* X.690 mandates that the leading byte must never be 0x80 */ if (leading != 0 && der[len_len + k] == 0x80) return ASN1_DER_ERROR; leading = 0; /* check for wrap around */ if (INT_LEFT_SHIFT_OVERFLOW (val, 7)) return ASN1_DER_ERROR; val = val << 7; val |= der[len_len + k] & 0x7F; if (!(der[len_len + k] & 0x80)) { _asn1_str_cat (str, str_size, "."); _asn1_str_cat (str, str_size, _asn1_ltostr (val, temp)); val = 0; leading = 1; } } if (INT_ADD_OVERFLOW (len, len_len)) return ASN1_DER_ERROR; *ret_len = len + len_len; return ASN1_SUCCESS; } /** * asn1_get_bit_der: * @der: DER data to decode containing the BIT SEQUENCE. * @der_len: Length of DER data to decode. * @ret_len: Output variable containing the length of the DER data. * @str: Pre-allocated output buffer to put decoded BIT SEQUENCE in. * @str_size: Length of pre-allocated output buffer. * @bit_len: Output variable containing the size of the BIT SEQUENCE. * * Extract a BIT SEQUENCE from DER data. * * Returns: Return %ASN1_SUCCESS on success, or an error. **/ int asn1_get_bit_der (const unsigned char *der, int der_len, int *ret_len, unsigned char *str, int str_size, int *bit_len) { int len_len, len_byte; if (der_len <= 0) return ASN1_GENERIC_ERROR; len_byte = asn1_get_length_der (der, der_len, &len_len) - 1; if (len_byte < 0) return ASN1_DER_ERROR; *ret_len = len_byte + len_len + 1; *bit_len = len_byte * 8 - der[len_len]; if (str_size >= len_byte) memcpy (str, der + len_len + 1, len_byte); else { return ASN1_MEM_ERROR; } return ASN1_SUCCESS; } static int _asn1_extract_tag_der (asn1_node node, const unsigned char *der, int der_len, int *ret_len) { asn1_node p; int counter, len2, len3, is_tag_implicit; unsigned long tag, tag_implicit = 0; unsigned char class, class2, class_implicit = 0; if (der_len <= 0) return ASN1_GENERIC_ERROR; counter = is_tag_implicit = 0; if (node->type & CONST_TAG) { p = node->down; while (p) { if (type_field (p->type) == ASN1_ETYPE_TAG) { if (p->type & CONST_APPLICATION) class2 = ASN1_CLASS_APPLICATION; else if (p->type & CONST_UNIVERSAL) class2 = ASN1_CLASS_UNIVERSAL; else if (p->type & CONST_PRIVATE) class2 = ASN1_CLASS_PRIVATE; else class2 = ASN1_CLASS_CONTEXT_SPECIFIC; if (p->type & CONST_EXPLICIT) { if (asn1_get_tag_der (der + counter, der_len - counter, &class, &len2, &tag) != ASN1_SUCCESS) return ASN1_DER_ERROR; if (counter + len2 > der_len) return ASN1_DER_ERROR; counter += len2; len3 = asn1_get_length_ber (der + counter, der_len - counter, &len2); if (len3 < 0) return ASN1_DER_ERROR; counter += len2; if (counter > der_len) return ASN1_DER_ERROR; if (!is_tag_implicit) { if ((class != (class2 | ASN1_CLASS_STRUCTURED)) || (tag != strtoul ((char *) p->value, NULL, 10))) return ASN1_TAG_ERROR; } else { /* ASN1_TAG_IMPLICIT */ if ((class != class_implicit) || (tag != tag_implicit)) return ASN1_TAG_ERROR; } is_tag_implicit = 0; } else { /* ASN1_TAG_IMPLICIT */ if (!is_tag_implicit) { if ((type_field (node->type) == ASN1_ETYPE_SEQUENCE) || (type_field (node->type) == ASN1_ETYPE_SEQUENCE_OF) || (type_field (node->type) == ASN1_ETYPE_SET) || (type_field (node->type) == ASN1_ETYPE_SET_OF)) class2 |= ASN1_CLASS_STRUCTURED; class_implicit = class2; tag_implicit = strtoul ((char *) p->value, NULL, 10); is_tag_implicit = 1; } } } p = p->right; } } if (is_tag_implicit) { if (asn1_get_tag_der (der + counter, der_len - counter, &class, &len2, &tag) != ASN1_SUCCESS) return ASN1_DER_ERROR; if (counter + len2 > der_len) return ASN1_DER_ERROR; if ((class != class_implicit) || (tag != tag_implicit)) { if (type_field (node->type) == ASN1_ETYPE_OCTET_STRING) { class_implicit |= ASN1_CLASS_STRUCTURED; if ((class != class_implicit) || (tag != tag_implicit)) return ASN1_TAG_ERROR; } else return ASN1_TAG_ERROR; } } else { unsigned type = type_field (node->type); if (type == ASN1_ETYPE_TAG) { counter = 0; *ret_len = counter; return ASN1_SUCCESS; } if (asn1_get_tag_der (der + counter, der_len - counter, &class, &len2, &tag) != ASN1_SUCCESS) return ASN1_DER_ERROR; if (counter + len2 > der_len) return ASN1_DER_ERROR; switch (type) { case ASN1_ETYPE_NULL: case ASN1_ETYPE_BOOLEAN: case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: case ASN1_ETYPE_OBJECT_ID: case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: case ASN1_ETYPE_BIT_STRING: case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET: case ASN1_ETYPE_SET_OF: case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: if ((class != _asn1_tags[type].class) || (tag != _asn1_tags[type].tag)) return ASN1_DER_ERROR; break; case ASN1_ETYPE_OCTET_STRING: /* OCTET STRING is handled differently to allow * BER encodings (structured class). */ if (((class != ASN1_CLASS_UNIVERSAL) && (class != (ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED))) || (tag != ASN1_TAG_OCTET_STRING)) return ASN1_DER_ERROR; break; case ASN1_ETYPE_ANY: counter -= len2; break; default: return ASN1_DER_ERROR; break; } } counter += len2; *ret_len = counter; return ASN1_SUCCESS; } static int _asn1_delete_not_used (asn1_node node) { asn1_node p, p2; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; while (p) { if (p->type & CONST_NOT_USED) { p2 = NULL; if (p != node) { p2 = _asn1_find_left (p); if (!p2) p2 = _asn1_find_up (p); } asn1_delete_structure (&p); p = p2; } if (!p) break; /* reach node */ if (p->down) { p = p->down; } else { if (p == node) p = NULL; else if (p->right) p = p->right; else { while (1) { p = _asn1_find_up (p); if (p == node) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } } return ASN1_SUCCESS; } static int _asn1_extract_der_octet (asn1_node node, const unsigned char *der, int der_len) { int len2, len3; int counter2, counter_end; len2 = asn1_get_length_der (der, der_len, &len3); if (len2 < -1) return ASN1_DER_ERROR; counter2 = len3 + 1; if (len2 == -1) counter_end = der_len - 2; else counter_end = der_len; while (counter2 < counter_end) { len2 = asn1_get_length_der (der + counter2, der_len - counter2, &len3); if (len2 < -1) return ASN1_DER_ERROR; if (len2 > 0) { _asn1_append_value (node, der + counter2 + len3, len2); } else { /* indefinite */ len2 = _asn1_extract_der_octet (node, der + counter2 + len3, der_len - counter2 - len3); if (len2 < 0) return len2; } counter2 += len2 + len3 + 1; } return ASN1_SUCCESS; } static int _asn1_get_octet_string (const unsigned char *der, asn1_node node, int *len) { int len2, len3, counter, tot_len, indefinite; counter = 0; if (*(der - 1) & ASN1_CLASS_STRUCTURED) { tot_len = 0; indefinite = asn1_get_length_der (der, *len, &len3); if (indefinite < -1) return ASN1_DER_ERROR; counter += len3; if (indefinite >= 0) indefinite += len3; while (1) { if (counter > (*len)) return ASN1_DER_ERROR; if (indefinite == -1) { if ((der[counter] == 0) && (der[counter + 1] == 0)) { counter += 2; break; } } else if (counter >= indefinite) break; if (der[counter] != ASN1_TAG_OCTET_STRING) return ASN1_DER_ERROR; counter++; len2 = asn1_get_length_der (der + counter, *len - counter, &len3); if (len2 <= 0) return ASN1_DER_ERROR; counter += len3 + len2; tot_len += len2; } /* copy */ if (node) { unsigned char temp[DER_LEN]; int ret; len2 = sizeof (temp); asn1_length_der (tot_len, temp, &len2); _asn1_set_value (node, temp, len2); ret = _asn1_extract_der_octet (node, der, *len); if (ret != ASN1_SUCCESS) return ret; } } else { /* NOT STRUCTURED */ len2 = asn1_get_length_der (der, *len, &len3); if (len2 < 0) return ASN1_DER_ERROR; counter = len3 + len2; if (node) _asn1_set_value (node, der, counter); } *len = counter; return ASN1_SUCCESS; } static int _asn1_get_indefinite_length_string (const unsigned char *der, int *len) { int len2, len3, counter, indefinite; unsigned long tag; unsigned char class; counter = indefinite = 0; while (1) { if ((*len) < counter) return ASN1_DER_ERROR; if ((der[counter] == 0) && (der[counter + 1] == 0)) { counter += 2; indefinite--; if (indefinite <= 0) break; else continue; } if (asn1_get_tag_der (der + counter, *len - counter, &class, &len2, &tag) != ASN1_SUCCESS) return ASN1_DER_ERROR; if (counter + len2 > *len) return ASN1_DER_ERROR; counter += len2; len2 = asn1_get_length_der (der + counter, *len - counter, &len3); if (len2 < -1) return ASN1_DER_ERROR; if (len2 == -1) { indefinite++; counter += 1; } else { counter += len2 + len3; } } *len = counter; return ASN1_SUCCESS; } /** * asn1_der_decoding: * @element: pointer to an ASN1 structure. * @ider: vector that contains the DER encoding. * @len: number of bytes of *@ider: @ider[0]..@ider[len-1]. * @errorDescription: null-terminated string contains details when an * error occurred. * * Fill the structure *@ELEMENT with values of a DER encoding * string. The structure must just be created with function * asn1_create_element(). If an error occurs during the decoding * procedure, the *@ELEMENT is deleted and set equal to * %NULL. * * Returns: %ASN1_SUCCESS if DER encoding OK, %ASN1_ELEMENT_NOT_FOUND * if @ELEMENT is %NULL, and %ASN1_TAG_ERROR or * %ASN1_DER_ERROR if the der encoding doesn't match the structure * name (*@ELEMENT deleted). **/ int asn1_der_decoding (asn1_node * element, const void *ider, int len, char *errorDescription) { asn1_node node, p, p2, p3; char temp[128]; int counter, len2, len3, len4, move, ris, tlen; unsigned char class; unsigned long tag; int indefinite, result; const unsigned char *der = ider; node = *element; if (errorDescription != NULL) errorDescription[0] = 0; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; if (node->type & CONST_OPTION) { result = ASN1_GENERIC_ERROR; goto cleanup; } counter = 0; move = DOWN; p = node; while (1) { ris = ASN1_SUCCESS; if (move != UP) { if (p->type & CONST_SET) { p2 = _asn1_find_up (p); len2 = _asn1_strtol (p2->value, NULL, 10); if (len2 == -1) { if (!der[counter] && !der[counter + 1]) { p = p2; move = UP; counter += 2; continue; } } else if (counter == len2) { p = p2; move = UP; continue; } else if (counter > len2) { result = ASN1_DER_ERROR; goto cleanup; } p2 = p2->down; while (p2) { if ((p2->type & CONST_SET) && (p2->type & CONST_NOT_USED)) { if (type_field (p2->type) != ASN1_ETYPE_CHOICE) ris = _asn1_extract_tag_der (p2, der + counter, len - counter, &len2); else { p3 = p2->down; while (p3) { ris = _asn1_extract_tag_der (p3, der + counter, len - counter, &len2); if (ris == ASN1_SUCCESS) break; p3 = p3->right; } } if (ris == ASN1_SUCCESS) { p2->type &= ~CONST_NOT_USED; p = p2; break; } } p2 = p2->right; } if (p2 == NULL) { result = ASN1_DER_ERROR; goto cleanup; } } if ((p->type & CONST_OPTION) || (p->type & CONST_DEFAULT)) { p2 = _asn1_find_up (p); len2 = _asn1_strtol (p2->value, NULL, 10); if (counter == len2) { if (p->right) { p2 = p->right; move = RIGHT; } else move = UP; if (p->type & CONST_OPTION) asn1_delete_structure (&p); p = p2; continue; } } if (type_field (p->type) == ASN1_ETYPE_CHOICE) { while (p->down) { if (counter < len) ris = _asn1_extract_tag_der (p->down, der + counter, len - counter, &len2); else ris = ASN1_DER_ERROR; if (ris == ASN1_SUCCESS) { while (p->down->right) { p2 = p->down->right; asn1_delete_structure (&p2); } break; } else if (ris == ASN1_ERROR_TYPE_ANY) { result = ASN1_ERROR_TYPE_ANY; goto cleanup; } else { p2 = p->down; asn1_delete_structure (&p2); } } if (p->down == NULL) { if (!(p->type & CONST_OPTION)) { result = ASN1_DER_ERROR; goto cleanup; } } else p = p->down; } if ((p->type & CONST_OPTION) || (p->type & CONST_DEFAULT)) { p2 = _asn1_find_up (p); len2 = _asn1_strtol (p2->value, NULL, 10); if ((len2 != -1) && (counter > len2)) ris = ASN1_TAG_ERROR; } if (ris == ASN1_SUCCESS) ris = _asn1_extract_tag_der (p, der + counter, len - counter, &len2); if (ris != ASN1_SUCCESS) { if (p->type & CONST_OPTION) { p->type |= CONST_NOT_USED; move = RIGHT; } else if (p->type & CONST_DEFAULT) { _asn1_set_value (p, NULL, 0); move = RIGHT; } else { if (errorDescription != NULL) _asn1_error_description_tag_error (p, errorDescription); result = ASN1_TAG_ERROR; goto cleanup; } } else counter += len2; } if (ris == ASN1_SUCCESS) { switch (type_field (p->type)) { case ASN1_ETYPE_NULL: if (der[counter]) { result = ASN1_DER_ERROR; goto cleanup; } counter++; move = RIGHT; break; case ASN1_ETYPE_BOOLEAN: if (der[counter++] != 1) { result = ASN1_DER_ERROR; goto cleanup; } if (der[counter++] == 0) _asn1_set_value (p, "F", 1); else _asn1_set_value (p, "T", 1); move = RIGHT; break; case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: len2 = asn1_get_length_der (der + counter, len - counter, &len3); if (len2 < 0) { result = ASN1_DER_ERROR; goto cleanup; } _asn1_set_value (p, der + counter, len3 + len2); counter += len3 + len2; move = RIGHT; break; case ASN1_ETYPE_OBJECT_ID: result = _asn1_get_objectid_der (der + counter, len - counter, &len2, temp, sizeof (temp)); if (result != ASN1_SUCCESS) goto cleanup; tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); counter += len2; move = RIGHT; break; case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: result = _asn1_get_time_der (der + counter, len - counter, &len2, temp, sizeof (temp) - 1); if (result != ASN1_SUCCESS) goto cleanup; tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen); counter += len2; move = RIGHT; break; case ASN1_ETYPE_OCTET_STRING: len3 = len - counter; result = _asn1_get_octet_string (der + counter, p, &len3); if (result != ASN1_SUCCESS) goto cleanup; counter += len3; move = RIGHT; break; case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: case ASN1_ETYPE_BIT_STRING: len2 = asn1_get_length_der (der + counter, len - counter, &len3); if (len2 < 0) { result = ASN1_DER_ERROR; goto cleanup; } _asn1_set_value (p, der + counter, len3 + len2); counter += len3 + len2; move = RIGHT; break; case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_SET: if (move == UP) { len2 = _asn1_strtol (p->value, NULL, 10); _asn1_set_value (p, NULL, 0); if (len2 == -1) { /* indefinite length method */ if (len - counter + 1 > 0) { if ((der[counter]) || der[counter + 1]) { result = ASN1_DER_ERROR; goto cleanup; } } else { result = ASN1_DER_ERROR; goto cleanup; } counter += 2; } else { /* definite length method */ if (len2 != counter) { result = ASN1_DER_ERROR; goto cleanup; } } move = RIGHT; } else { /* move==DOWN || move==RIGHT */ len3 = asn1_get_length_der (der + counter, len - counter, &len2); if (len3 < -1) { result = ASN1_DER_ERROR; goto cleanup; } counter += len2; if (len3 > 0) { _asn1_ltostr (counter + len3, temp); tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); move = DOWN; } else if (len3 == 0) { p2 = p->down; while (p2) { if (type_field (p2->type) != ASN1_ETYPE_TAG) { p3 = p2->right; asn1_delete_structure (&p2); p2 = p3; } else p2 = p2->right; } move = RIGHT; } else { /* indefinite length method */ _asn1_set_value (p, "-1", 3); move = DOWN; } } break; case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET_OF: if (move == UP) { len2 = _asn1_strtol (p->value, NULL, 10); if (len2 == -1) { /* indefinite length method */ if ((counter + 2) > len) { result = ASN1_DER_ERROR; goto cleanup; } if ((der[counter]) || der[counter + 1]) { _asn1_append_sequence_set (p); p = p->down; while (p->right) p = p->right; move = RIGHT; continue; } _asn1_set_value (p, NULL, 0); counter += 2; } else { /* definite length method */ if (len2 > counter) { _asn1_append_sequence_set (p); p = p->down; while (p->right) p = p->right; move = RIGHT; continue; } _asn1_set_value (p, NULL, 0); if (len2 != counter) { result = ASN1_DER_ERROR; goto cleanup; } } } else { /* move==DOWN || move==RIGHT */ len3 = asn1_get_length_der (der + counter, len - counter, &len2); if (len3 < -1) { result = ASN1_DER_ERROR; goto cleanup; } counter += len2; if (len3) { if (len3 > 0) { /* definite length method */ _asn1_ltostr (counter + len3, temp); tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); } else { /* indefinite length method */ _asn1_set_value (p, "-1", 3); } p2 = p->down; while ((type_field (p2->type) == ASN1_ETYPE_TAG) || (type_field (p2->type) == ASN1_ETYPE_SIZE)) p2 = p2->right; if (p2->right == NULL) _asn1_append_sequence_set (p); p = p2; } } move = RIGHT; break; case ASN1_ETYPE_ANY: if (asn1_get_tag_der (der + counter, len - counter, &class, &len2, &tag) != ASN1_SUCCESS) { result = ASN1_DER_ERROR; goto cleanup; } if (counter + len2 > len) { result = ASN1_DER_ERROR; goto cleanup; } len4 = asn1_get_length_der (der + counter + len2, len - counter - len2, &len3); if (len4 < -1) { result = ASN1_DER_ERROR; goto cleanup; } if (len4 != -1) { len2 += len4; _asn1_set_value_lv (p, der + counter, len2 + len3); counter += len2 + len3; } else { /* indefinite length */ /* Check indefinite lenth method in an EXPLICIT TAG */ if ((p->type & CONST_TAG) && (der[counter - 1] == 0x80)) indefinite = 1; else indefinite = 0; len2 = len - counter; result = _asn1_get_indefinite_length_string (der + counter, &len2); if (result != ASN1_SUCCESS) goto cleanup; _asn1_set_value_lv (p, der + counter, len2); counter += len2; /* Check if a couple of 0x00 are present due to an EXPLICIT TAG with an indefinite length method. */ if (indefinite) { if (!der[counter] && !der[counter + 1]) { counter += 2; } else { result = ASN1_DER_ERROR; goto cleanup; } } } move = RIGHT; break; default: move = (move == UP) ? RIGHT : DOWN; break; } } if (p == node && move != DOWN) break; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if ((move == RIGHT) && !(p->type & CONST_SET)) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_find_up (p); } _asn1_delete_not_used (*element); if (counter != len) { result = ASN1_DER_ERROR; goto cleanup; } return ASN1_SUCCESS; cleanup: asn1_delete_structure (element); return result; } #define FOUND 1 #define SAME_BRANCH 2 #define OTHER_BRANCH 3 #define EXIT 4 /** * asn1_der_decoding_element: * @structure: pointer to an ASN1 structure * @elementName: name of the element to fill * @ider: vector that contains the DER encoding of the whole structure. * @len: number of bytes of *der: der[0]..der[len-1] * @errorDescription: null-terminated string contains details when an * error occurred. * * Fill the element named @ELEMENTNAME with values of a DER encoding * string. The structure must just be created with function * asn1_create_element(). The DER vector must contain the encoding * string of the whole @STRUCTURE. If an error occurs during the * decoding procedure, the *@STRUCTURE is deleted and set equal to * %NULL. * * Returns: %ASN1_SUCCESS if DER encoding OK, %ASN1_ELEMENT_NOT_FOUND * if ELEMENT is %NULL or @elementName == NULL, and * %ASN1_TAG_ERROR or %ASN1_DER_ERROR if the der encoding doesn't * match the structure @structure (*ELEMENT deleted). **/ int asn1_der_decoding_element (asn1_node * structure, const char *elementName, const void *ider, int len, char *errorDescription) { asn1_node node, p, p2, p3, nodeFound = NULL; char temp[128], currentName[ASN1_MAX_NAME_SIZE * 10], *dot_p, *char_p; int nameLen = ASN1_MAX_NAME_SIZE * 10 - 1, state; int counter, len2, len3, len4, move, ris, tlen; unsigned char class; unsigned long tag; int indefinite, result; const unsigned char *der = ider; node = *structure; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; if (elementName == NULL) { result = ASN1_ELEMENT_NOT_FOUND; goto cleanup; } if (node->type & CONST_OPTION) { result = ASN1_GENERIC_ERROR; goto cleanup; } if ((*structure)->name[0] != 0) { /* Has *structure got a name? */ nameLen -= strlen ((*structure)->name); if (nameLen > 0) strcpy (currentName, (*structure)->name); else { result = ASN1_MEM_ERROR; goto cleanup; } if (!(strcmp (currentName, elementName))) { state = FOUND; nodeFound = *structure; } else if (!memcmp (currentName, elementName, strlen (currentName))) state = SAME_BRANCH; else state = OTHER_BRANCH; } else { /* *structure doesn't have a name? */ currentName[0] = 0; if (elementName[0] == 0) { state = FOUND; nodeFound = *structure; } else { state = SAME_BRANCH; } } counter = 0; move = DOWN; p = node; while (1) { ris = ASN1_SUCCESS; if (move != UP) { if (p->type & CONST_SET) { p2 = _asn1_find_up (p); len2 = _asn1_strtol (p2->value, NULL, 10); if (counter == len2) { p = p2; move = UP; continue; } else if (counter > len2) { result = ASN1_DER_ERROR; goto cleanup; } p2 = p2->down; while (p2) { if ((p2->type & CONST_SET) && (p2->type & CONST_NOT_USED)) { if (type_field (p2->type) != ASN1_ETYPE_CHOICE) ris = _asn1_extract_tag_der (p2, der + counter, len - counter, &len2); else { p3 = p2->down; while (p3) { ris = _asn1_extract_tag_der (p3, der + counter, len - counter, &len2); if (ris == ASN1_SUCCESS) break; p3 = p3->right; } } if (ris == ASN1_SUCCESS) { p2->type &= ~CONST_NOT_USED; p = p2; break; } } p2 = p2->right; } if (p2 == NULL) { result = ASN1_DER_ERROR; goto cleanup; } } if ((p->type & CONST_OPTION) || (p->type & CONST_DEFAULT)) { p2 = _asn1_find_up (p); len2 = _asn1_strtol (p2->value, NULL, 10); if (counter == len2) { if (p->right) { p2 = p->right; move = RIGHT; } else move = UP; if (p->type & CONST_OPTION) asn1_delete_structure (&p); p = p2; continue; } } if (type_field (p->type) == ASN1_ETYPE_CHOICE) { while (p->down) { if (counter < len) ris = _asn1_extract_tag_der (p->down, der + counter, len - counter, &len2); else ris = ASN1_DER_ERROR; if (ris == ASN1_SUCCESS) { while (p->down->right) { p2 = p->down->right; asn1_delete_structure (&p2); } break; } else if (ris == ASN1_ERROR_TYPE_ANY) { result = ASN1_ERROR_TYPE_ANY; goto cleanup; } else { p2 = p->down; asn1_delete_structure (&p2); } } if (p->down == NULL) { if (!(p->type & CONST_OPTION)) { result = ASN1_DER_ERROR; goto cleanup; } } else p = p->down; } if ((p->type & CONST_OPTION) || (p->type & CONST_DEFAULT)) { p2 = _asn1_find_up (p); len2 = _asn1_strtol (p2->value, NULL, 10); if (counter > len2) ris = ASN1_TAG_ERROR; } if (ris == ASN1_SUCCESS) ris = _asn1_extract_tag_der (p, der + counter, len - counter, &len2); if (ris != ASN1_SUCCESS) { if (p->type & CONST_OPTION) { p->type |= CONST_NOT_USED; move = RIGHT; } else if (p->type & CONST_DEFAULT) { _asn1_set_value (p, NULL, 0); move = RIGHT; } else { if (errorDescription != NULL) _asn1_error_description_tag_error (p, errorDescription); result = ASN1_TAG_ERROR; goto cleanup; } } else counter += len2; } if (ris == ASN1_SUCCESS) { switch (type_field (p->type)) { case ASN1_ETYPE_NULL: if (der[counter]) { result = ASN1_DER_ERROR; goto cleanup; } if (p == nodeFound) state = EXIT; counter++; move = RIGHT; break; case ASN1_ETYPE_BOOLEAN: if (der[counter++] != 1) { result = ASN1_DER_ERROR; goto cleanup; } if (state == FOUND) { if (der[counter++] == 0) _asn1_set_value (p, "F", 1); else _asn1_set_value (p, "T", 1); if (p == nodeFound) state = EXIT; } else counter++; move = RIGHT; break; case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: len2 = asn1_get_length_der (der + counter, len - counter, &len3); if (len2 < 0) { result = ASN1_DER_ERROR; goto cleanup; } if (state == FOUND) { if (len3 + len2 > len - counter) { result = ASN1_DER_ERROR; goto cleanup; } _asn1_set_value (p, der + counter, len3 + len2); if (p == nodeFound) state = EXIT; } counter += len3 + len2; move = RIGHT; break; case ASN1_ETYPE_OBJECT_ID: if (state == FOUND) { result = _asn1_get_objectid_der (der + counter, len - counter, &len2, temp, sizeof (temp)); if (result != ASN1_SUCCESS) goto cleanup; tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); if (p == nodeFound) state = EXIT; } else { len2 = asn1_get_length_der (der + counter, len - counter, &len3); if (len2 < 0) { result = ASN1_DER_ERROR; goto cleanup; } len2 += len3; } counter += len2; move = RIGHT; break; case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: if (state == FOUND) { result = _asn1_get_time_der (der + counter, len - counter, &len2, temp, sizeof (temp) - 1); if (result != ASN1_SUCCESS) goto cleanup; tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); if (p == nodeFound) state = EXIT; } else { len2 = asn1_get_length_der (der + counter, len - counter, &len3); if (len2 < 0) { result = ASN1_DER_ERROR; goto cleanup; } len2 += len3; } counter += len2; move = RIGHT; break; case ASN1_ETYPE_OCTET_STRING: len3 = len - counter; if (state == FOUND) { result = _asn1_get_octet_string (der + counter, p, &len3); if (p == nodeFound) state = EXIT; } else result = _asn1_get_octet_string (der + counter, NULL, &len3); if (result != ASN1_SUCCESS) goto cleanup; counter += len3; move = RIGHT; break; case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: case ASN1_ETYPE_BIT_STRING: len2 = asn1_get_length_der (der + counter, len - counter, &len3); if (len2 < 0) { result = ASN1_DER_ERROR; goto cleanup; } if (state == FOUND) { if (len3 + len2 > len - counter) { result = ASN1_DER_ERROR; goto cleanup; } _asn1_set_value (p, der + counter, len3 + len2); if (p == nodeFound) state = EXIT; } counter += len3 + len2; move = RIGHT; break; case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_SET: if (move == UP) { len2 = _asn1_strtol (p->value, NULL, 10); _asn1_set_value (p, NULL, 0); if (len2 == -1) { /* indefinite length method */ if ((der[counter]) || der[counter + 1]) { result = ASN1_DER_ERROR; goto cleanup; } counter += 2; } else { /* definite length method */ if (len2 != counter) { result = ASN1_DER_ERROR; goto cleanup; } } if (p == nodeFound) state = EXIT; move = RIGHT; } else { /* move==DOWN || move==RIGHT */ if (state == OTHER_BRANCH) { len3 = asn1_get_length_der (der + counter, len - counter, &len2); if (len3 < 0) { result = ASN1_DER_ERROR; goto cleanup; } counter += len2 + len3; move = RIGHT; } else { /* state==SAME_BRANCH or state==FOUND */ len3 = asn1_get_length_der (der + counter, len - counter, &len2); if (len3 < 0) { result = ASN1_DER_ERROR; goto cleanup; } counter += len2; if (len3 > 0) { _asn1_ltostr (counter + len3, temp); tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); move = DOWN; } else if (len3 == 0) { p2 = p->down; while (p2) { if (type_field (p2->type) != ASN1_ETYPE_TAG) { p3 = p2->right; asn1_delete_structure (&p2); p2 = p3; } else p2 = p2->right; } move = RIGHT; } else { /* indefinite length method */ _asn1_set_value (p, "-1", 3); move = DOWN; } } } break; case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET_OF: if (move == UP) { len2 = _asn1_strtol (p->value, NULL, 10); if (len2 > counter) { _asn1_append_sequence_set (p); p = p->down; while (p->right) p = p->right; move = RIGHT; continue; } _asn1_set_value (p, NULL, 0); if (len2 != counter) { result = ASN1_DER_ERROR; goto cleanup; } if (p == nodeFound) state = EXIT; } else { /* move==DOWN || move==RIGHT */ if (state == OTHER_BRANCH) { len3 = asn1_get_length_der (der + counter, len - counter, &len2); if (len3 < 0) { result = ASN1_DER_ERROR; goto cleanup; } counter += len2 + len3; move = RIGHT; } else { /* state==FOUND or state==SAME_BRANCH */ len3 = asn1_get_length_der (der + counter, len - counter, &len2); if (len3 < 0) { result = ASN1_DER_ERROR; goto cleanup; } counter += len2; if (len3) { _asn1_ltostr (counter + len3, temp); tlen = strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); p2 = p->down; while ((type_field (p2->type) == ASN1_ETYPE_TAG) || (type_field (p2->type) == ASN1_ETYPE_SIZE)) p2 = p2->right; if (p2->right == NULL) _asn1_append_sequence_set (p); p = p2; state = FOUND; } } } break; case ASN1_ETYPE_ANY: if (asn1_get_tag_der (der + counter, len - counter, &class, &len2, &tag) != ASN1_SUCCESS) { result = ASN1_DER_ERROR; goto cleanup; } if (counter + len2 > len) { result = ASN1_DER_ERROR; goto cleanup; } len4 = asn1_get_length_der (der + counter + len2, len - counter - len2, &len3); if (len4 < -1) { result = ASN1_DER_ERROR; goto cleanup; } if (len4 != -1) { len2 += len4; if (state == FOUND) { _asn1_set_value_lv (p, der + counter, len2 + len3); if (p == nodeFound) state = EXIT; } counter += len2 + len3; } else { /* indefinite length */ /* Check indefinite lenth method in an EXPLICIT TAG */ if ((p->type & CONST_TAG) && (der[counter - 1] == 0x80)) indefinite = 1; else indefinite = 0; len2 = len - counter; result = _asn1_get_indefinite_length_string (der + counter, &len2); if (result != ASN1_SUCCESS) goto cleanup; if (state == FOUND) { _asn1_set_value_lv (p, der + counter, len2); if (p == nodeFound) state = EXIT; } counter += len2; /* Check if a couple of 0x00 are present due to an EXPLICIT TAG with an indefinite length method. */ if (indefinite) { if (!der[counter] && !der[counter + 1]) { counter += 2; } else { result = ASN1_DER_ERROR; goto cleanup; } } } move = RIGHT; break; default: move = (move == UP) ? RIGHT : DOWN; break; } } if ((p == node && move != DOWN) || (state == EXIT)) break; if (move == DOWN) { if (p->down) { p = p->down; if (state != FOUND) { nameLen -= strlen (p->name) + 1; if (nameLen > 0) { if (currentName[0]) strcat (currentName, "."); strcat (currentName, p->name); } else { result = ASN1_MEM_ERROR; goto cleanup; } if (!(strcmp (currentName, elementName))) { state = FOUND; nodeFound = p; } else if (!memcmp (currentName, elementName, strlen (currentName))) state = SAME_BRANCH; else state = OTHER_BRANCH; } } else move = RIGHT; } if ((move == RIGHT) && !(p->type & CONST_SET)) { if (p->right) { p = p->right; if (state != FOUND) { dot_p = char_p = currentName; while ((char_p = strchr (char_p, '.'))) { dot_p = char_p++; dot_p++; } nameLen += strlen (currentName) - (dot_p - currentName); *dot_p = 0; nameLen -= strlen (p->name); if (nameLen > 0) strcat (currentName, p->name); else { result = ASN1_MEM_ERROR; goto cleanup; } if (!(strcmp (currentName, elementName))) { state = FOUND; nodeFound = p; } else if (!memcmp (currentName, elementName, strlen (currentName))) state = SAME_BRANCH; else state = OTHER_BRANCH; } } else move = UP; } if (move == UP) { p = _asn1_find_up (p); if (state != FOUND) { dot_p = char_p = currentName; while ((char_p = strchr (char_p, '.'))) { dot_p = char_p++; dot_p++; } nameLen += strlen (currentName) - (dot_p - currentName); *dot_p = 0; if (!(strcmp (currentName, elementName))) { state = FOUND; nodeFound = p; } else if (!memcmp (currentName, elementName, strlen (currentName))) state = SAME_BRANCH; else state = OTHER_BRANCH; } } } _asn1_delete_not_used (*structure); if (counter > len) { result = ASN1_DER_ERROR; goto cleanup; } return ASN1_SUCCESS; cleanup: asn1_delete_structure (structure); return result; } /** * asn1_der_decoding_startEnd: * @element: pointer to an ASN1 element * @ider: vector that contains the DER encoding. * @len: number of bytes of *@ider: @ider[0]..@ider[len-1] * @name_element: an element of NAME structure. * @start: the position of the first byte of NAME_ELEMENT decoding * (@ider[*start]) * @end: the position of the last byte of NAME_ELEMENT decoding * (@ider[*end]) * * Find the start and end point of an element in a DER encoding * string. I mean that if you have a der encoding and you have already * used the function asn1_der_decoding() to fill a structure, it may * happen that you want to find the piece of string concerning an * element of the structure. * * One example is the sequence "tbsCertificate" inside an X509 * certificate. * * Returns: %ASN1_SUCCESS if DER encoding OK, %ASN1_ELEMENT_NOT_FOUND * if ELEMENT is %asn1_node EMPTY or @name_element is not a valid * element, %ASN1_TAG_ERROR or %ASN1_DER_ERROR if the der encoding * doesn't match the structure ELEMENT. **/ int asn1_der_decoding_startEnd (asn1_node element, const void *ider, int len, const char *name_element, int *start, int *end) { asn1_node node, node_to_find, p, p2, p3; int counter, len2, len3, len4, move, ris; unsigned char class; unsigned long tag; int indefinite; const unsigned char *der = ider; node = element; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; node_to_find = asn1_find_node (node, name_element); if (node_to_find == NULL) return ASN1_ELEMENT_NOT_FOUND; if (node_to_find == node) { *start = 0; *end = len - 1; return ASN1_SUCCESS; } if (node->type & CONST_OPTION) return ASN1_GENERIC_ERROR; counter = 0; move = DOWN; p = node; while (1) { if (p == NULL) return ASN1_DER_ERROR; ris = ASN1_SUCCESS; if (move != UP) { if (p->type & CONST_SET) { p2 = _asn1_find_up (p); if (p2 == NULL) return ASN1_DER_ERROR; len2 = _asn1_strtol (p2->value, NULL, 10); if (len2 == -1) { if (!der[counter] && !der[counter + 1]) { p = p2; move = UP; counter += 2; continue; } } else if (counter == len2) { p = p2; move = UP; continue; } else if (counter > len2) return ASN1_DER_ERROR; p2 = p2->down; while (p2) { if ((p2->type & CONST_SET) && (p2->type & CONST_NOT_USED)) { /* CONTROLLARE */ if (type_field (p2->type) != ASN1_ETYPE_CHOICE) ris = _asn1_extract_tag_der (p2, der + counter, len - counter, &len2); else { p3 = p2->down; if (p3 == NULL) return ASN1_DER_ERROR; ris = _asn1_extract_tag_der (p3, der + counter, len - counter, &len2); } if (ris == ASN1_SUCCESS) { p2->type &= ~CONST_NOT_USED; p = p2; break; } } p2 = p2->right; } if (p2 == NULL) return ASN1_DER_ERROR; } if (p == node_to_find) *start = counter; if (type_field (p->type) == ASN1_ETYPE_CHOICE) { p = p->down; if (p == NULL) return ASN1_DER_ERROR; ris = _asn1_extract_tag_der (p, der + counter, len - counter, &len2); if (p == node_to_find) *start = counter; } if (ris == ASN1_SUCCESS) ris = _asn1_extract_tag_der (p, der + counter, len - counter, &len2); if (ris != ASN1_SUCCESS) { if (p->type & CONST_OPTION) { p->type |= CONST_NOT_USED; move = RIGHT; } else if (p->type & CONST_DEFAULT) { move = RIGHT; } else { return ASN1_TAG_ERROR; } } else counter += len2; } if (ris == ASN1_SUCCESS) { switch (type_field (p->type)) { case ASN1_ETYPE_NULL: if (der[counter]) return ASN1_DER_ERROR; counter++; move = RIGHT; break; case ASN1_ETYPE_BOOLEAN: if (der[counter++] != 1) return ASN1_DER_ERROR; counter++; move = RIGHT; break; case ASN1_ETYPE_OCTET_STRING: len3 = len - counter; ris = _asn1_get_octet_string (der + counter, NULL, &len3); if (ris != ASN1_SUCCESS) return ris; counter += len3; move = RIGHT; break; case ASN1_ETYPE_UTC_TIME: case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_OBJECT_ID: case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: case ASN1_ETYPE_BIT_STRING: len2 = asn1_get_length_der (der + counter, len - counter, &len3); if (len2 < 0) return ASN1_DER_ERROR; counter += len3 + len2; move = RIGHT; break; case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_SET: if (move != UP) { len3 = asn1_get_length_der (der + counter, len - counter, &len2); if (len3 < -1) return ASN1_DER_ERROR; counter += len2; if (len3 == 0) move = RIGHT; else move = DOWN; } else { if (!der[counter] && !der[counter + 1]) /* indefinite length method */ counter += 2; move = RIGHT; } break; case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET_OF: if (move != UP) { len3 = asn1_get_length_der (der + counter, len - counter, &len2); if (len3 < -1) return ASN1_DER_ERROR; counter += len2; if ((len3 == -1) && !der[counter] && !der[counter + 1]) counter += 2; else if (len3) { p2 = p->down; while ((type_field (p2->type) == ASN1_ETYPE_TAG) || (type_field (p2->type) == ASN1_ETYPE_SIZE)) p2 = p2->right; p = p2; } } else { if (!der[counter] && !der[counter + 1]) /* indefinite length method */ counter += 2; } move = RIGHT; break; case ASN1_ETYPE_ANY: if (asn1_get_tag_der (der + counter, len - counter, &class, &len2, &tag) != ASN1_SUCCESS) return ASN1_DER_ERROR; if (counter + len2 > len) return ASN1_DER_ERROR; len4 = asn1_get_length_der (der + counter + len2, len - counter - len2, &len3); if (len4 < -1) return ASN1_DER_ERROR; if (len4 != -1) { counter += len2 + len4 + len3; } else { /* indefinite length */ /* Check indefinite lenth method in an EXPLICIT TAG */ if ((p->type & CONST_TAG) && (der[counter - 1] == 0x80)) indefinite = 1; else indefinite = 0; len2 = len - counter; ris = _asn1_get_indefinite_length_string (der + counter, &len2); if (ris != ASN1_SUCCESS) return ris; counter += len2; /* Check if a couple of 0x00 are present due to an EXPLICIT TAG with an indefinite length method. */ if (indefinite) { if (!der[counter] && !der[counter + 1]) counter += 2; else return ASN1_DER_ERROR; } } move = RIGHT; break; default: move = (move == UP) ? RIGHT : DOWN; break; } } if ((p == node_to_find) && (move == RIGHT)) { *end = counter - 1; return ASN1_SUCCESS; } if (p == node && move != DOWN) break; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if ((move == RIGHT) && !(p->type & CONST_SET)) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_find_up (p); } return ASN1_ELEMENT_NOT_FOUND; } /** * asn1_expand_any_defined_by: * @definitions: ASN1 definitions * @element: pointer to an ASN1 structure * * Expands every "ANY DEFINED BY" element of a structure created from * a DER decoding process (asn1_der_decoding function). The element * ANY must be defined by an OBJECT IDENTIFIER. The type used to * expand the element ANY is the first one following the definition of * the actual value of the OBJECT IDENTIFIER. * * Returns: %ASN1_SUCCESS if Substitution OK, %ASN1_ERROR_TYPE_ANY if * some "ANY DEFINED BY" element couldn't be expanded due to a * problem in OBJECT_ID -> TYPE association, or other error codes * depending on DER decoding. **/ int asn1_expand_any_defined_by (asn1_node definitions, asn1_node * element) { char definitionsName[ASN1_MAX_NAME_SIZE], name[2 * ASN1_MAX_NAME_SIZE + 1], value[ASN1_MAX_NAME_SIZE]; int retCode = ASN1_SUCCESS, result; int len, len2, len3; asn1_node p, p2, p3, aux = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; if ((definitions == NULL) || (*element == NULL)) return ASN1_ELEMENT_NOT_FOUND; strcpy (definitionsName, definitions->name); strcat (definitionsName, "."); p = *element; while (p) { switch (type_field (p->type)) { case ASN1_ETYPE_ANY: if ((p->type & CONST_DEFINED_BY) && (p->value)) { /* search the "DEF_BY" element */ p2 = p->down; while ((p2) && (type_field (p2->type) != ASN1_ETYPE_CONSTANT)) p2 = p2->right; if (!p2) { retCode = ASN1_ERROR_TYPE_ANY; break; } p3 = _asn1_find_up (p); if (!p3) { retCode = ASN1_ERROR_TYPE_ANY; break; } p3 = p3->down; while (p3) { if (!(strcmp (p3->name, p2->name))) break; p3 = p3->right; } if ((!p3) || (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) || (p3->value == NULL)) { p3 = _asn1_find_up (p); p3 = _asn1_find_up (p3); if (!p3) { retCode = ASN1_ERROR_TYPE_ANY; break; } p3 = p3->down; while (p3) { if (!(strcmp (p3->name, p2->name))) break; p3 = p3->right; } if ((!p3) || (type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) || (p3->value == NULL)) { retCode = ASN1_ERROR_TYPE_ANY; break; } } /* search the OBJECT_ID into definitions */ p2 = definitions->down; while (p2) { if ((type_field (p2->type) == ASN1_ETYPE_OBJECT_ID) && (p2->type & CONST_ASSIGN)) { strcpy (name, definitionsName); strcat (name, p2->name); len = ASN1_MAX_NAME_SIZE; result = asn1_read_value (definitions, name, value, &len); if ((result == ASN1_SUCCESS) && (!_asn1_strcmp (p3->value, value))) { p2 = p2->right; /* pointer to the structure to use for expansion */ while ((p2) && (p2->type & CONST_ASSIGN)) p2 = p2->right; if (p2) { strcpy (name, definitionsName); strcat (name, p2->name); result = asn1_create_element (definitions, name, &aux); if (result == ASN1_SUCCESS) { _asn1_cpy_name (aux, p); len2 = asn1_get_length_der (p->value, p->value_len, &len3); if (len2 < 0) return ASN1_DER_ERROR; result = asn1_der_decoding (&aux, p->value + len3, len2, errorDescription); if (result == ASN1_SUCCESS) { _asn1_set_right (aux, p->right); _asn1_set_right (p, aux); result = asn1_delete_structure (&p); if (result == ASN1_SUCCESS) { p = aux; aux = NULL; break; } else { /* error with asn1_delete_structure */ asn1_delete_structure (&aux); retCode = result; break; } } else { /* error with asn1_der_decoding */ retCode = result; break; } } else { /* error with asn1_create_element */ retCode = result; break; } } else { /* error with the pointer to the structure to exapand */ retCode = ASN1_ERROR_TYPE_ANY; break; } } } p2 = p2->right; } /* end while */ if (!p2) { retCode = ASN1_ERROR_TYPE_ANY; break; } } break; default: break; } if (p->down) { p = p->down; } else if (p == *element) { p = NULL; break; } else if (p->right) p = p->right; else { while (1) { p = _asn1_find_up (p); if (p == *element) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } return retCode; } /** * asn1_expand_octet_string: * @definitions: ASN1 definitions * @element: pointer to an ASN1 structure * @octetName: name of the OCTECT STRING field to expand. * @objectName: name of the OBJECT IDENTIFIER field to use to define * the type for expansion. * * Expands an "OCTET STRING" element of a structure created from a DER * decoding process (the asn1_der_decoding() function). The type used * for expansion is the first one following the definition of the * actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. * * Returns: %ASN1_SUCCESS if substitution OK, %ASN1_ELEMENT_NOT_FOUND * if @objectName or @octetName are not correct, * %ASN1_VALUE_NOT_VALID if it wasn't possible to find the type to * use for expansion, or other errors depending on DER decoding. **/ int asn1_expand_octet_string (asn1_node definitions, asn1_node * element, const char *octetName, const char *objectName) { char name[2 * ASN1_MAX_NAME_SIZE + 1], value[ASN1_MAX_NAME_SIZE]; int retCode = ASN1_SUCCESS, result; int len, len2, len3; asn1_node p2, aux = NULL; asn1_node octetNode = NULL, objectNode = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; if ((definitions == NULL) || (*element == NULL)) return ASN1_ELEMENT_NOT_FOUND; octetNode = asn1_find_node (*element, octetName); if (octetNode == NULL) return ASN1_ELEMENT_NOT_FOUND; if (type_field (octetNode->type) != ASN1_ETYPE_OCTET_STRING) return ASN1_ELEMENT_NOT_FOUND; if (octetNode->value == NULL) return ASN1_VALUE_NOT_FOUND; objectNode = asn1_find_node (*element, objectName); if (objectNode == NULL) return ASN1_ELEMENT_NOT_FOUND; if (type_field (objectNode->type) != ASN1_ETYPE_OBJECT_ID) return ASN1_ELEMENT_NOT_FOUND; if (objectNode->value == NULL) return ASN1_VALUE_NOT_FOUND; /* search the OBJECT_ID into definitions */ p2 = definitions->down; while (p2) { if ((type_field (p2->type) == ASN1_ETYPE_OBJECT_ID) && (p2->type & CONST_ASSIGN)) { strcpy (name, definitions->name); strcat (name, "."); strcat (name, p2->name); len = sizeof (value); result = asn1_read_value (definitions, name, value, &len); if ((result == ASN1_SUCCESS) && (!_asn1_strcmp (objectNode->value, value))) { p2 = p2->right; /* pointer to the structure to use for expansion */ while ((p2) && (p2->type & CONST_ASSIGN)) p2 = p2->right; if (p2) { strcpy (name, definitions->name); strcat (name, "."); strcat (name, p2->name); result = asn1_create_element (definitions, name, &aux); if (result == ASN1_SUCCESS) { _asn1_cpy_name (aux, octetNode); len2 = asn1_get_length_der (octetNode->value, octetNode->value_len, &len3); if (len2 < 0) return ASN1_DER_ERROR; result = asn1_der_decoding (&aux, octetNode->value + len3, len2, errorDescription); if (result == ASN1_SUCCESS) { _asn1_set_right (aux, octetNode->right); _asn1_set_right (octetNode, aux); result = asn1_delete_structure (&octetNode); if (result == ASN1_SUCCESS) { aux = NULL; break; } else { /* error with asn1_delete_structure */ asn1_delete_structure (&aux); retCode = result; break; } } else { /* error with asn1_der_decoding */ retCode = result; break; } } else { /* error with asn1_create_element */ retCode = result; break; } } else { /* error with the pointer to the structure to exapand */ retCode = ASN1_VALUE_NOT_VALID; break; } } } p2 = p2->right; } if (!p2) retCode = ASN1_VALUE_NOT_VALID; return retCode; } /** * asn1_decode_simple_der: * @etype: The type of the string to be encoded (ASN1_ETYPE_) * @der: the encoded string * @der_len: the bytes of the encoded string * @str: a pointer to the data * @str_len: the length of the data * * Decodes a simple DER encoded type (e.g. a string, which is not constructed). * The output is a pointer inside the @der. * * Returns: %ASN1_SUCCESS if successful or an error value. **/ int asn1_decode_simple_der (unsigned int etype, const unsigned char *der, unsigned int der_len, const unsigned char **str, unsigned int *str_len) { int tag_len, len_len; const unsigned char *p; unsigned char class; unsigned long tag; long ret; if (der == NULL || der_len == 0) return ASN1_VALUE_NOT_VALID; if (ETYPE_OK (etype) == 0) return ASN1_VALUE_NOT_VALID; /* doesn't handle constructed classes */ if (ETYPE_CLASS (etype) != ASN1_CLASS_UNIVERSAL) return ASN1_VALUE_NOT_VALID; p = der; ret = asn1_get_tag_der (p, der_len, &class, &tag_len, &tag); if (ret != ASN1_SUCCESS) return ret; if (class != ETYPE_CLASS (etype) || tag != ETYPE_TAG (etype)) return ASN1_DER_ERROR; p += tag_len; der_len -= tag_len; ret = asn1_get_length_der (p, der_len, &len_len); if (ret < 0) return ASN1_DER_ERROR; p += len_len; der_len -= len_len; *str_len = ret; *str = p; return ASN1_SUCCESS; } libtasn1-3.4/lib/gllib/0000775000000000000000000000000012244722065011711 500000000000000libtasn1-3.4/lib/gllib/stdint.in.h0000664000000000000000000004463712244720630013726 00000000000000/* Copyright (C) 2001-2002, 2004-2013 Free Software Foundation, Inc. Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. This file is part of gnulib. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /* * ISO C 99 for platforms that lack it. * */ #ifndef _@GUARD_PREFIX@_STDINT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* When including a system file that in turn includes , use the system , not our substitute. This avoids problems with (for example) VMS, whose includes . */ #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* On Android (Bionic libc), includes this file before having defined 'time_t'. Therefore in this case avoid including other system header files; just include the system's . Ideally we should test __BIONIC__ here, but it is only defined after has been included; hence test __ANDROID__ instead. */ #if defined __ANDROID__ \ && defined _SYS_TYPES_H_ && !defined __need_size_t # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #else /* Get those types that are already defined in other system include files, so that we can "#define int8_t signed char" below without worrying about a later system include file containing a "typedef signed char int8_t;" that will get messed up by our macro. Our macros should all be consistent with the system versions, except for the "fast" types and macros, which we recommend against using in public interfaces due to compiler differences. */ #if @HAVE_STDINT_H@ # if defined __sgi && ! defined __c99 /* Bypass IRIX's if in C89 mode, since it merely annoys users with "This header file is to be used only for c99 mode compilations" diagnostics. */ # define __STDINT_H__ # endif /* Some pre-C++11 implementations need this. */ # ifdef __cplusplus # ifndef __STDC_CONSTANT_MACROS # define __STDC_CONSTANT_MACROS 1 # endif # ifndef __STDC_LIMIT_MACROS # define __STDC_LIMIT_MACROS 1 # endif # endif /* Other systems may have an incomplete or buggy . Include it before , since any "#include " in would reinclude us, skipping our contents because _@GUARD_PREFIX@_STDINT_H is defined. The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #endif #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H #define _@GUARD_PREFIX@_STDINT_H /* defines some of the stdint.h types as well, on glibc, IRIX 6.5, and OpenBSD 3.8 (via ). AIX 5.2 isn't needed and causes troubles. Mac OS X 10.4.6 includes (which is us), but relies on the system definitions, so include after @NEXT_STDINT_H@. */ #if @HAVE_SYS_TYPES_H@ && ! defined _AIX # include #endif /* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, LONG_MIN, LONG_MAX, ULONG_MAX. */ #include #if @HAVE_INTTYPES_H@ /* In OpenBSD 3.8, includes , which defines int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. also defines intptr_t and uintptr_t. */ # include #elif @HAVE_SYS_INTTYPES_H@ /* Solaris 7 has the types except the *_fast*_t types, and the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ # include #endif #if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__ /* Linux libc4 >= 4.6.7 and libc5 have a that defines int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is included by . */ # include #endif #undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* Minimum and maximum values for an integer type under the usual assumption. Return an unspecified value if BITS == 0, adding a check to pacify picky compilers. */ #define _STDINT_MIN(signed, bits, zero) \ ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero)) #define _STDINT_MAX(signed, bits, zero) \ ((signed) \ ? ~ _STDINT_MIN (signed, bits, zero) \ : /* The expression for the unsigned case. The subtraction of (signed) \ is a nop in the unsigned case and avoids "signed integer overflow" \ warnings in the signed case. */ \ ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) #if !GNULIB_defined_stdint_types /* 7.18.1.1. Exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef int8_t #undef uint8_t typedef signed char gl_int8_t; typedef unsigned char gl_uint8_t; #define int8_t gl_int8_t #define uint8_t gl_uint8_t #undef int16_t #undef uint16_t typedef short int gl_int16_t; typedef unsigned short int gl_uint16_t; #define int16_t gl_int16_t #define uint16_t gl_uint16_t #undef int32_t #undef uint32_t typedef int gl_int32_t; typedef unsigned int gl_uint32_t; #define int32_t gl_int32_t #define uint32_t gl_uint32_t /* If the system defines INT64_MAX, assume int64_t works. That way, if the underlying platform defines int64_t to be a 64-bit long long int, the code below won't mistakenly define it to be a 64-bit long int, which would mess up C++ name mangling. We must use #ifdef rather than #if, to avoid an error with HP-UX 10.20 cc. */ #ifdef INT64_MAX # define GL_INT64_T #else /* Do not undefine int64_t if gnulib is not being used with 64-bit types, since otherwise it breaks platforms like Tandem/NSK. */ # if LONG_MAX >> 31 >> 31 == 1 # undef int64_t typedef long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif defined _MSC_VER # undef int64_t typedef __int64 gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif @HAVE_LONG_LONG_INT@ # undef int64_t typedef long long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # endif #endif #ifdef UINT64_MAX # define GL_UINT64_T #else # if ULONG_MAX >> 31 >> 31 >> 1 == 1 # undef uint64_t typedef unsigned long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif defined _MSC_VER # undef uint64_t typedef unsigned __int64 gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif @HAVE_UNSIGNED_LONG_LONG_INT@ # undef uint64_t typedef unsigned long long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # endif #endif /* Avoid collision with Solaris 2.5.1 etc. */ #define _UINT8_T #define _UINT32_T #define _UINT64_T /* 7.18.1.2. Minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef int_least8_t #undef uint_least8_t #undef int_least16_t #undef uint_least16_t #undef int_least32_t #undef uint_least32_t #undef int_least64_t #undef uint_least64_t #define int_least8_t int8_t #define uint_least8_t uint8_t #define int_least16_t int16_t #define uint_least16_t uint16_t #define int_least32_t int32_t #define uint_least32_t uint32_t #ifdef GL_INT64_T # define int_least64_t int64_t #endif #ifdef GL_UINT64_T # define uint_least64_t uint64_t #endif /* 7.18.1.3. Fastest minimum-width integer types */ /* Note: Other substitutes may define these types differently. It is not recommended to use these types in public header files. */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. The following code normally uses types consistent with glibc, as that lessens the chance of incompatibility with older GNU hosts. */ #undef int_fast8_t #undef uint_fast8_t #undef int_fast16_t #undef uint_fast16_t #undef int_fast32_t #undef uint_fast32_t #undef int_fast64_t #undef uint_fast64_t typedef signed char gl_int_fast8_t; typedef unsigned char gl_uint_fast8_t; #ifdef __sun /* Define types compatible with SunOS 5.10, so that code compiled under earlier SunOS versions works with code compiled under SunOS 5.10. */ typedef int gl_int_fast32_t; typedef unsigned int gl_uint_fast32_t; #else typedef long int gl_int_fast32_t; typedef unsigned long int gl_uint_fast32_t; #endif typedef gl_int_fast32_t gl_int_fast16_t; typedef gl_uint_fast32_t gl_uint_fast16_t; #define int_fast8_t gl_int_fast8_t #define uint_fast8_t gl_uint_fast8_t #define int_fast16_t gl_int_fast16_t #define uint_fast16_t gl_uint_fast16_t #define int_fast32_t gl_int_fast32_t #define uint_fast32_t gl_uint_fast32_t #ifdef GL_INT64_T # define int_fast64_t int64_t #endif #ifdef GL_UINT64_T # define uint_fast64_t uint64_t #endif /* 7.18.1.4. Integer types capable of holding object pointers */ #undef intptr_t #undef uintptr_t typedef long int gl_intptr_t; typedef unsigned long int gl_uintptr_t; #define intptr_t gl_intptr_t #define uintptr_t gl_uintptr_t /* 7.18.1.5. Greatest-width integer types */ /* Note: These types are compiler dependent. It may be unwise to use them in public header files. */ /* If the system defines INTMAX_MAX, assume that intmax_t works, and similarly for UINTMAX_MAX and uintmax_t. This avoids problems with assuming one type where another is used by the system. */ #ifndef INTMAX_MAX # undef INTMAX_C # undef intmax_t # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 typedef long long int gl_intmax_t; # define intmax_t gl_intmax_t # elif defined GL_INT64_T # define intmax_t int64_t # else typedef long int gl_intmax_t; # define intmax_t gl_intmax_t # endif #endif #ifndef UINTMAX_MAX # undef UINTMAX_C # undef uintmax_t # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 typedef unsigned long long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # elif defined GL_UINT64_T # define uintmax_t uint64_t # else typedef unsigned long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # endif #endif /* Verify that intmax_t and uintmax_t have the same size. Too much code breaks if this is not the case. If this check fails, the reason is likely to be found in the autoconf macros. */ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) ? 1 : -1]; #define GNULIB_defined_stdint_types 1 #endif /* !GNULIB_defined_stdint_types */ /* 7.18.2. Limits of specified-width integer types */ /* 7.18.2.1. Limits of exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef INT8_MIN #undef INT8_MAX #undef UINT8_MAX #define INT8_MIN (~ INT8_MAX) #define INT8_MAX 127 #define UINT8_MAX 255 #undef INT16_MIN #undef INT16_MAX #undef UINT16_MAX #define INT16_MIN (~ INT16_MAX) #define INT16_MAX 32767 #define UINT16_MAX 65535 #undef INT32_MIN #undef INT32_MAX #undef UINT32_MAX #define INT32_MIN (~ INT32_MAX) #define INT32_MAX 2147483647 #define UINT32_MAX 4294967295U #if defined GL_INT64_T && ! defined INT64_MAX /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 evaluates the latter incorrectly in preprocessor expressions. */ # define INT64_MIN (- INTMAX_C (1) << 63) # define INT64_MAX INTMAX_C (9223372036854775807) #endif #if defined GL_UINT64_T && ! defined UINT64_MAX # define UINT64_MAX UINTMAX_C (18446744073709551615) #endif /* 7.18.2.2. Limits of minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef INT_LEAST8_MIN #undef INT_LEAST8_MAX #undef UINT_LEAST8_MAX #define INT_LEAST8_MIN INT8_MIN #define INT_LEAST8_MAX INT8_MAX #define UINT_LEAST8_MAX UINT8_MAX #undef INT_LEAST16_MIN #undef INT_LEAST16_MAX #undef UINT_LEAST16_MAX #define INT_LEAST16_MIN INT16_MIN #define INT_LEAST16_MAX INT16_MAX #define UINT_LEAST16_MAX UINT16_MAX #undef INT_LEAST32_MIN #undef INT_LEAST32_MAX #undef UINT_LEAST32_MAX #define INT_LEAST32_MIN INT32_MIN #define INT_LEAST32_MAX INT32_MAX #define UINT_LEAST32_MAX UINT32_MAX #undef INT_LEAST64_MIN #undef INT_LEAST64_MAX #ifdef GL_INT64_T # define INT_LEAST64_MIN INT64_MIN # define INT_LEAST64_MAX INT64_MAX #endif #undef UINT_LEAST64_MAX #ifdef GL_UINT64_T # define UINT_LEAST64_MAX UINT64_MAX #endif /* 7.18.2.3. Limits of fastest minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. */ #undef INT_FAST8_MIN #undef INT_FAST8_MAX #undef UINT_FAST8_MAX #define INT_FAST8_MIN SCHAR_MIN #define INT_FAST8_MAX SCHAR_MAX #define UINT_FAST8_MAX UCHAR_MAX #undef INT_FAST16_MIN #undef INT_FAST16_MAX #undef UINT_FAST16_MAX #define INT_FAST16_MIN INT_FAST32_MIN #define INT_FAST16_MAX INT_FAST32_MAX #define UINT_FAST16_MAX UINT_FAST32_MAX #undef INT_FAST32_MIN #undef INT_FAST32_MAX #undef UINT_FAST32_MAX #ifdef __sun # define INT_FAST32_MIN INT_MIN # define INT_FAST32_MAX INT_MAX # define UINT_FAST32_MAX UINT_MAX #else # define INT_FAST32_MIN LONG_MIN # define INT_FAST32_MAX LONG_MAX # define UINT_FAST32_MAX ULONG_MAX #endif #undef INT_FAST64_MIN #undef INT_FAST64_MAX #ifdef GL_INT64_T # define INT_FAST64_MIN INT64_MIN # define INT_FAST64_MAX INT64_MAX #endif #undef UINT_FAST64_MAX #ifdef GL_UINT64_T # define UINT_FAST64_MAX UINT64_MAX #endif /* 7.18.2.4. Limits of integer types capable of holding object pointers */ #undef INTPTR_MIN #undef INTPTR_MAX #undef UINTPTR_MAX #define INTPTR_MIN LONG_MIN #define INTPTR_MAX LONG_MAX #define UINTPTR_MAX ULONG_MAX /* 7.18.2.5. Limits of greatest-width integer types */ #ifndef INTMAX_MAX # undef INTMAX_MIN # ifdef INT64_MAX # define INTMAX_MIN INT64_MIN # define INTMAX_MAX INT64_MAX # else # define INTMAX_MIN INT32_MIN # define INTMAX_MAX INT32_MAX # endif #endif #ifndef UINTMAX_MAX # ifdef UINT64_MAX # define UINTMAX_MAX UINT64_MAX # else # define UINTMAX_MAX UINT32_MAX # endif #endif /* 7.18.3. Limits of other integer types */ /* ptrdiff_t limits */ #undef PTRDIFF_MIN #undef PTRDIFF_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l) # define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) # else # define PTRDIFF_MIN _STDINT_MIN (1, 32, 0) # define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) # endif #else # define PTRDIFF_MIN \ _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) # define PTRDIFF_MAX \ _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) #endif /* sig_atomic_t limits */ #undef SIG_ATOMIC_MIN #undef SIG_ATOMIC_MAX #define SIG_ATOMIC_MIN \ _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) #define SIG_ATOMIC_MAX \ _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) /* size_t limit */ #undef SIZE_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define SIZE_MAX _STDINT_MAX (0, 64, 0ul) # else # define SIZE_MAX _STDINT_MAX (0, 32, 0ul) # endif #else # define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@) #endif /* wchar_t limits */ /* Get WCHAR_MIN, WCHAR_MAX. This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested includes -> -> -> , and the latter includes and assumes its types are already defined. */ #if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX) /* BSD/OS 4.0.1 has a bug: , and must be included before . */ # include # include # include # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H # include # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H #endif #undef WCHAR_MIN #undef WCHAR_MAX #define WCHAR_MIN \ _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) #define WCHAR_MAX \ _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) /* wint_t limits */ #undef WINT_MIN #undef WINT_MAX #define WINT_MIN \ _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) #define WINT_MAX \ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) /* 7.18.4. Macros for integer constants */ /* 7.18.4.1. Macros for minimum-width integer constants */ /* According to ISO C 99 Technical Corrigendum 1 */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ #undef INT8_C #undef UINT8_C #define INT8_C(x) x #define UINT8_C(x) x #undef INT16_C #undef UINT16_C #define INT16_C(x) x #define UINT16_C(x) x #undef INT32_C #undef UINT32_C #define INT32_C(x) x #define UINT32_C(x) x ## U #undef INT64_C #undef UINT64_C #if LONG_MAX >> 31 >> 31 == 1 # define INT64_C(x) x##L #elif defined _MSC_VER # define INT64_C(x) x##i64 #elif @HAVE_LONG_LONG_INT@ # define INT64_C(x) x##LL #endif #if ULONG_MAX >> 31 >> 31 >> 1 == 1 # define UINT64_C(x) x##UL #elif defined _MSC_VER # define UINT64_C(x) x##ui64 #elif @HAVE_UNSIGNED_LONG_LONG_INT@ # define UINT64_C(x) x##ULL #endif /* 7.18.4.2. Macros for greatest-width integer constants */ #ifndef INTMAX_C # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 # define INTMAX_C(x) x##LL # elif defined GL_INT64_T # define INTMAX_C(x) INT64_C(x) # else # define INTMAX_C(x) x##L # endif #endif #ifndef UINTMAX_C # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 # define UINTMAX_C(x) x##ULL # elif defined GL_UINT64_T # define UINTMAX_C(x) UINT64_C(x) # else # define UINTMAX_C(x) x##UL # endif #endif #endif /* _@GUARD_PREFIX@_STDINT_H */ #endif /* !(defined __ANDROID__ && ...) */ #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ libtasn1-3.4/lib/gllib/strverscmp.c0000664000000000000000000000750612244720630014211 00000000000000/* Compare strings while treating digits characters numerically. Copyright (C) 1997, 2000, 2002, 2004, 2006, 2009-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jean-François Bignolles , 1997. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #if !_LIBC # include #endif #include #include /* states: S_N: normal, S_I: comparing integral part, S_F: comparing fractional parts, S_Z: idem but with leading Zeroes only */ #define S_N 0x0 #define S_I 0x4 #define S_F 0x8 #define S_Z 0xC /* result_type: CMP: return diff; LEN: compare using len_diff/diff */ #define CMP 2 #define LEN 3 /* ISDIGIT differs from isdigit, as follows: - Its arg may be any int or unsigned int; it need not be an unsigned char or EOF. - It's typically faster. POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to isdigit unless it's important to use the locale's definition of "digit" even when the host does not conform to POSIX. */ #define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) #undef __strverscmp #undef strverscmp #ifndef weak_alias # define __strverscmp strverscmp #endif /* Compare S1 and S2 as strings holding indices/version numbers, returning less than, equal to or greater than zero if S1 is less than, equal to or greater than S2 (for more info, see the texinfo doc). */ int __strverscmp (const char *s1, const char *s2) { const unsigned char *p1 = (const unsigned char *) s1; const unsigned char *p2 = (const unsigned char *) s2; unsigned char c1, c2; int state; int diff; /* Symbol(s) 0 [1-9] others (padding) Transition (10) 0 (01) d (00) x (11) - */ static const unsigned int next_state[] = { /* state x d 0 - */ /* S_N */ S_N, S_I, S_Z, S_N, /* S_I */ S_N, S_I, S_I, S_I, /* S_F */ S_N, S_F, S_F, S_F, /* S_Z */ S_N, S_F, S_Z, S_Z }; static const int result_type[] = { /* state x/x x/d x/0 x/- d/x d/d d/0 d/- 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */ /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, /* S_I */ CMP, -1, -1, CMP, 1, LEN, LEN, CMP, 1, LEN, LEN, CMP, CMP, CMP, CMP, CMP, /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, /* S_Z */ CMP, 1, 1, CMP, -1, CMP, CMP, CMP, -1, CMP, CMP, CMP }; if (p1 == p2) return 0; c1 = *p1++; c2 = *p2++; /* Hint: '0' is a digit too. */ state = S_N | ((c1 == '0') + (ISDIGIT (c1) != 0)); while ((diff = c1 - c2) == 0 && c1 != '\0') { state = next_state[state]; c1 = *p1++; c2 = *p2++; state |= (c1 == '0') + (ISDIGIT (c1) != 0); } state = result_type[state << 2 | ((c2 == '0') + (ISDIGIT (c2) != 0))]; switch (state) { case CMP: return diff; case LEN: while (ISDIGIT (*p1++)) if (!ISDIGIT (*p2++)) return 1; return ISDIGIT (*p2) ? -1 : diff; default: return state; } } #ifdef weak_alias weak_alias (__strverscmp, strverscmp) #endif libtasn1-3.4/lib/gllib/intprops.h0000664000000000000000000003503512244720630013662 00000000000000/* intprops.h -- properties of integer types Copyright (C) 2001-2005, 2009-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ /* Written by Paul Eggert. */ #ifndef _GL_INTPROPS_H #define _GL_INTPROPS_H #include /* Return an integer value, converted to the same type as the integer expression E after integer type promotion. V is the unconverted value. */ #define _GL_INT_CONVERT(e, v) (0 * (e) + (v)) /* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see . */ #define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v)) /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ /* True if the arithmetic type T is an integer type. bool counts as an integer. */ #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) /* True if negative values of the signed integer type T use two's complement, ones' complement, or signed magnitude representation, respectively. Much GNU code assumes two's complement, but some people like to be portable to all possible C hosts. */ #define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1) #define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0) #define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) /* True if the signed integer expression E uses two's complement. */ #define _GL_INT_TWOS_COMPLEMENT(e) (~ _GL_INT_CONVERT (e, 0) == -1) /* True if the arithmetic type T is signed. */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) /* Return 1 if the integer expression E, after integer promotion, has a signed type. */ #define _GL_INT_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) /* Minimum and maximum values for integer types and expressions. These macros have undefined behavior if T is signed and has padding bits. If this is a problem for you, please let us know how to fix it for your host. */ /* The maximum and minimum values for the integer type T. */ #define TYPE_MINIMUM(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) 0 \ : TYPE_SIGNED_MAGNITUDE (t) \ ? ~ (t) 0 \ : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) /* The maximum and minimum values for the type of the expression E, after integer promotion. E should not have side effects. */ #define _GL_INT_MINIMUM(e) \ (_GL_INT_SIGNED (e) \ ? - _GL_INT_TWOS_COMPLEMENT (e) - _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_CONVERT (e, 0)) #define _GL_INT_MAXIMUM(e) \ (_GL_INT_SIGNED (e) \ ? _GL_SIGNED_INT_MAXIMUM (e) \ : _GL_INT_NEGATE_CONVERT (e, 1)) #define _GL_SIGNED_INT_MAXIMUM(e) \ (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1) /* Return 1 if the __typeof__ keyword works. This could be done by 'configure', but for now it's easier to do it by hand. */ #if 2 <= __GNUC__ || 0x5110 <= __SUNPRO_C # define _GL_HAVE___TYPEOF__ 1 #else # define _GL_HAVE___TYPEOF__ 0 #endif /* Return 1 if the integer type or expression T might be signed. Return 0 if it is definitely unsigned. This macro does not evaluate its argument, and expands to an integer constant expression. */ #if _GL_HAVE___TYPEOF__ # define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t)) #else # define _GL_SIGNED_TYPE_OR_EXPR(t) 1 #endif /* Bound on length of the string representing an unsigned integer value representable in B bits. log10 (2.0) < 146/485. The smallest value of B where this bound is not tight is 2621. */ #define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) /* Bound on length of the string representing an integer type or expression T. Subtract 1 for the sign bit if T is signed, and then add 1 more for a minus sign if needed. Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 0 when its argument is signed, this macro may overestimate the true bound by one byte when applied to unsigned types of size 2, 4, 16, ... bytes. */ #define INT_STRLEN_BOUND(t) \ (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \ - _GL_SIGNED_TYPE_OR_EXPR (t)) \ + _GL_SIGNED_TYPE_OR_EXPR (t)) /* Bound on buffer size needed to represent an integer type or expression T, including the terminating null. */ #define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) /* Range overflow checks. The INT__RANGE_OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. They do not rely on undefined or implementation-defined behavior. Their implementations are simple and straightforward, but they are a bit harder to use than the INT__OVERFLOW macros described below. Example usage: long int i = ...; long int j = ...; if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX)) printf ("multiply would overflow"); else printf ("product is %ld", i * j); Restrictions on *_RANGE_OVERFLOW macros: These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division by zero, for bad shift counts, or for shifting negative numbers. These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. The arithmetic arguments (including the MIN and MAX arguments) must be of the same integer type after the usual arithmetic conversions, and the type must have minimum value MIN and maximum MAX. Unsigned types should use a zero MIN of the proper type. These macros are tuned for constant MIN and MAX. For commutative operations such as A + B, they are also tuned for constant B. */ /* Return 1 if A + B would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? (a) < (min) - (b) \ : (max) - (b) < (a)) /* Return 1 if A - B would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? (max) + (b) < (a) \ : (a) < (min) + (b)) /* Return 1 if - A would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ ((min) < 0 \ ? (a) < - (max) \ : 0 < (a)) /* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Avoid && and || as they tickle bugs in Sun C 5.11 2010/08/13 and other compilers; see . */ #define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \ ((b) < 0 \ ? ((a) < 0 \ ? (a) < (max) / (b) \ : (b) == -1 \ ? 0 \ : (min) / (b) < (a)) \ : (b) == 0 \ ? 0 \ : ((a) < 0 \ ? (a) < (min) / (b) \ : (max) / (b) < (a))) /* Return 1 if A / B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Do not check for division by zero. */ #define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \ ((min) < 0 && (b) == -1 && (a) < - (max)) /* Return 1 if A % B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Do not check for division by zero. Mathematically, % should never overflow, but on x86-like hosts INT_MIN % -1 traps, and the C standard permits this, so treat this as an overflow too. */ #define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \ INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max) /* Return 1 if A << B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Here, MIN and MAX are for A only, and B need not be of the same type as the other arguments. The C standard says that behavior is undefined for shifts unless 0 <= B < wordwidth, and that when A is negative then A << B has undefined behavior and A >> B has implementation-defined behavior, but do not check these other restrictions. */ #define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \ ((a) < 0 \ ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands (e.g., A and B) have the same type as MIN and MAX. Instead, they assume that the result (e.g., A + B) has that type. */ #define _GL_ADD_OVERFLOW(a, b, min, max) \ ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ : (a) < 0 ? (b) <= (a) + (b) \ : (b) < 0 ? (a) <= (a) + (b) \ : (a) + (b) < (b)) #define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \ : (a) < 0 ? 1 \ : (b) < 0 ? (a) - (b) <= (a) \ : (a) < (b)) #define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \ || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)) #define _GL_DIVIDE_OVERFLOW(a, b, min, max) \ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ : (a) < 0 ? (b) <= (a) + (b) - 1 \ : (b) < 0 && (a) + (b) <= (a)) #define _GL_REMAINDER_OVERFLOW(a, b, min, max) \ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \ : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max)) /* Return a nonzero value if A is a mathematical multiple of B, where A is unsigned, B is negative, and MAX is the maximum value of A's type. A's type must be the same as (A % B)'s type. Normally (A % -B == 0) suffices, but things get tricky if -B would overflow. */ #define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \ (((b) < -_GL_SIGNED_INT_MAXIMUM (b) \ ? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \ ? (a) \ : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \ : (a) % - (b)) \ == 0) /* Integer overflow checks. The INT__OVERFLOW macros return 1 if the corresponding C operators might not yield numerically correct answers due to arithmetic overflow. They work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. Example usage: long int i = ...; long int j = ...; if (INT_MULTIPLY_OVERFLOW (i, j)) printf ("multiply would overflow"); else printf ("product is %ld", i * j); These macros do not check for all possible numerical problems or undefined or unspecified behavior: they do not check for division by zero, for bad shift counts, or for shifting negative numbers. These macros may evaluate their arguments zero or multiple times, so the arguments should not have side effects. These macros are tuned for their last argument being a constant. Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, A % B, and A << B would overflow, respectively. */ #define INT_ADD_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) #define INT_NEGATE_OVERFLOW(a) \ INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) #define INT_MULTIPLY_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) #define INT_DIVIDE_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW) #define INT_REMAINDER_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW) #define INT_LEFT_SHIFT_OVERFLOW(a, b) \ INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \ _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) /* Return 1 if the expression A B would overflow, where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test, assuming MIN and MAX are the minimum and maximum for the result type. Arguments should be free of side effects. */ #define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \ op_result_overflow (a, b, \ _GL_INT_MINIMUM (0 * (b) + (a)), \ _GL_INT_MAXIMUM (0 * (b) + (a))) #endif /* _GL_INTPROPS_H */ libtasn1-3.4/lib/gllib/hash-pjw-bare.h0000664000000000000000000000224112244720630014425 00000000000000/* hash-pjw-bare.h -- declaration for a simple hash function Copyright (C) 2012-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #include /* Compute a hash code for a buffer starting at X and of size N, and return the hash code. Note that unlike hash_pjw(), it does not return it modulo a table size. The result is platform dependent: it depends on the size of the 'size_t' type and on the signedness of the 'char' type. */ extern size_t hash_pjw_bare (const void *x, size_t n) _GL_ATTRIBUTE_PURE; libtasn1-3.4/lib/gllib/hash-pjw-bare.c0000664000000000000000000000255012244720630014423 00000000000000/* hash-pjw-bare.c -- compute a hash value from a provided buffer. Copyright (C) 2012-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #include #include "hash-pjw-bare.h" #include #define SIZE_BITS (sizeof (size_t) * CHAR_BIT) /* Return a hash of the N bytes of X using the method described by Bruno Haible in http://www.haible.de/bruno/hashfunc.html. Note that while many hash functions reduce their result via modulo to a 0..table_size-1 range, this function does not do that. */ size_t hash_pjw_bare (const void *x, size_t n) { const unsigned char *s = x; size_t h = 0; unsigned i; for (i = 0; i < n; i++) h = s[i] + ((h << 9) | (h >> (SIZE_BITS - 9))); return h; } libtasn1-3.4/lib/gllib/string.in.h0000664000000000000000000011651012244720630013715 00000000000000/* A GNU-like . Copyright (C) 1995-1996, 2001-2013 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ #ifndef _@GUARD_PREFIX@_STRING_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STRING_H@ #ifndef _@GUARD_PREFIX@_STRING_H #define _@GUARD_PREFIX@_STRING_H /* NetBSD 5.0 mis-defines NULL. */ #include /* MirBSD defines mbslen as a macro. */ #if @GNULIB_MBSLEN@ && defined __MirBSD__ # include #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* NetBSD 5.0 declares strsignal in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ && ! defined __GLIBC__ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Find the index of the least-significant set bit. */ #if @GNULIB_FFSL@ # if !@HAVE_FFSL@ _GL_FUNCDECL_SYS (ffsl, int, (long int i)); # endif _GL_CXXALIAS_SYS (ffsl, int, (long int i)); _GL_CXXALIASWARN (ffsl); #elif defined GNULIB_POSIXCHECK # undef ffsl # if HAVE_RAW_DECL_FFSL _GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); # endif #endif /* Find the index of the least-significant set bit. */ #if @GNULIB_FFSLL@ # if !@HAVE_FFSLL@ _GL_FUNCDECL_SYS (ffsll, int, (long long int i)); # endif _GL_CXXALIAS_SYS (ffsll, int, (long long int i)); _GL_CXXALIASWARN (ffsll); #elif defined GNULIB_POSIXCHECK # undef ffsll # if HAVE_RAW_DECL_FFSLL _GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); # endif #endif /* Return the first instance of C within N bytes of S, or NULL. */ #if @GNULIB_MEMCHR@ # if @REPLACE_MEMCHR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define memchr rpl_memchr # endif _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); # else # if ! @HAVE_MEMCHR@ _GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C" { const void * std::memchr (const void *, int, size_t); } extern "C++" { void * std::memchr (void *, int, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (memchr, void *, (void const *__s, int __c, size_t __n), void const *, (void const *__s, int __c, size_t __n)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); _GL_CXXALIASWARN1 (memchr, void const *, (void const *__s, int __c, size_t __n)); # else _GL_CXXALIASWARN (memchr); # endif #elif defined GNULIB_POSIXCHECK # undef memchr /* Assume memchr is always declared. */ _GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " "use gnulib module memchr for portability" ); #endif /* Return the first occurrence of NEEDLE in HAYSTACK. */ #if @GNULIB_MEMMEM@ # if @REPLACE_MEMMEM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define memmem rpl_memmem # endif _GL_FUNCDECL_RPL (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 3))); _GL_CXXALIAS_RPL (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len)); # else # if ! @HAVE_DECL_MEMMEM@ _GL_FUNCDECL_SYS (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 3))); # endif _GL_CXXALIAS_SYS (memmem, void *, (void const *__haystack, size_t __haystack_len, void const *__needle, size_t __needle_len)); # endif _GL_CXXALIASWARN (memmem); #elif defined GNULIB_POSIXCHECK # undef memmem # if HAVE_RAW_DECL_MEMMEM _GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - " "use gnulib module memmem-simple for portability, " "and module memmem for speed" ); # endif #endif /* Copy N bytes of SRC to DEST, return pointer to bytes after the last written byte. */ #if @GNULIB_MEMPCPY@ # if ! @HAVE_MEMPCPY@ _GL_FUNCDECL_SYS (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (mempcpy, void *, (void *restrict __dest, void const *restrict __src, size_t __n)); _GL_CXXALIASWARN (mempcpy); #elif defined GNULIB_POSIXCHECK # undef mempcpy # if HAVE_RAW_DECL_MEMPCPY _GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " "use gnulib module mempcpy for portability"); # endif #endif /* Search backwards through a block for a byte (specified as an int). */ #if @GNULIB_MEMRCHR@ # if ! @HAVE_DECL_MEMRCHR@ _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const void * std::memrchr (const void *, int, size_t); } extern "C++" { void * std::memrchr (void *, int, size_t); } */ _GL_CXXALIAS_SYS_CAST2 (memrchr, void *, (void const *, int, size_t), void const *, (void const *, int, size_t)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); _GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); # else _GL_CXXALIASWARN (memrchr); # endif #elif defined GNULIB_POSIXCHECK # undef memrchr # if HAVE_RAW_DECL_MEMRCHR _GL_WARN_ON_USE (memrchr, "memrchr is unportable - " "use gnulib module memrchr for portability"); # endif #endif /* Find the first occurrence of C in S. More efficient than memchr(S,C,N), at the expense of undefined behavior if C does not occur within N bytes. */ #if @GNULIB_RAWMEMCHR@ # if ! @HAVE_RAWMEMCHR@ _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const void * std::rawmemchr (const void *, int); } extern "C++" { void * std::rawmemchr (void *, int); } */ _GL_CXXALIAS_SYS_CAST2 (rawmemchr, void *, (void const *__s, int __c_in), void const *, (void const *__s, int __c_in)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); _GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); # else _GL_CXXALIASWARN (rawmemchr); # endif #elif defined GNULIB_POSIXCHECK # undef rawmemchr # if HAVE_RAW_DECL_RAWMEMCHR _GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - " "use gnulib module rawmemchr for portability"); # endif #endif /* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ #if @GNULIB_STPCPY@ # if ! @HAVE_STPCPY@ _GL_FUNCDECL_SYS (stpcpy, char *, (char *restrict __dst, char const *restrict __src) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (stpcpy, char *, (char *restrict __dst, char const *restrict __src)); _GL_CXXALIASWARN (stpcpy); #elif defined GNULIB_POSIXCHECK # undef stpcpy # if HAVE_RAW_DECL_STPCPY _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " "use gnulib module stpcpy for portability"); # endif #endif /* Copy no more than N bytes of SRC to DST, returning a pointer past the last non-NUL byte written into DST. */ #if @GNULIB_STPNCPY@ # if @REPLACE_STPNCPY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef stpncpy # define stpncpy rpl_stpncpy # endif _GL_FUNCDECL_RPL (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n)); # else # if ! @HAVE_STPNCPY@ _GL_FUNCDECL_SYS (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (stpncpy, char *, (char *restrict __dst, char const *restrict __src, size_t __n)); # endif _GL_CXXALIASWARN (stpncpy); #elif defined GNULIB_POSIXCHECK # undef stpncpy # if HAVE_RAW_DECL_STPNCPY _GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - " "use gnulib module stpncpy for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strchr() does not work with multibyte strings if the locale encoding is GB18030 and the character to be searched is a digit. */ # undef strchr /* Assume strchr is always declared. */ _GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " "in some multibyte locales - " "use mbschr if you care about internationalization"); #endif /* Find the first occurrence of C in S or the final NUL byte. */ #if @GNULIB_STRCHRNUL@ # if @REPLACE_STRCHRNUL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strchrnul rpl_strchrnul # endif _GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strchrnul, char *, (const char *str, int ch)); # else # if ! @HAVE_STRCHRNUL@ _GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * std::strchrnul (const char *, int); } extern "C++" { char * std::strchrnul (char *, int); } */ _GL_CXXALIAS_SYS_CAST2 (strchrnul, char *, (char const *__s, int __c_in), char const *, (char const *__s, int __c_in)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); _GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); # else _GL_CXXALIASWARN (strchrnul); # endif #elif defined GNULIB_POSIXCHECK # undef strchrnul # if HAVE_RAW_DECL_STRCHRNUL _GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " "use gnulib module strchrnul for portability"); # endif #endif /* Duplicate S, returning an identical malloc'd string. */ #if @GNULIB_STRDUP@ # if @REPLACE_STRDUP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strdup # define strdup rpl_strdup # endif _GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); # else # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup /* strdup exists as a function and as a macro. Get rid of the macro. */ # undef strdup # endif # if !(@HAVE_DECL_STRDUP@ || defined strdup) _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); # endif _GL_CXXALIASWARN (strdup); #elif defined GNULIB_POSIXCHECK # undef strdup # if HAVE_RAW_DECL_STRDUP _GL_WARN_ON_USE (strdup, "strdup is unportable - " "use gnulib module strdup for portability"); # endif #endif /* Append no more than N characters from SRC onto DEST. */ #if @GNULIB_STRNCAT@ # if @REPLACE_STRNCAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strncat # define strncat rpl_strncat # endif _GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n)); # else _GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n)); # endif _GL_CXXALIASWARN (strncat); #elif defined GNULIB_POSIXCHECK # undef strncat # if HAVE_RAW_DECL_STRNCAT _GL_WARN_ON_USE (strncat, "strncat is unportable - " "use gnulib module strncat for portability"); # endif #endif /* Return a newly allocated copy of at most N bytes of STRING. */ #if @GNULIB_STRNDUP@ # if @REPLACE_STRNDUP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strndup # define strndup rpl_strndup # endif _GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n)); # else # if ! @HAVE_DECL_STRNDUP@ _GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n)); # endif _GL_CXXALIASWARN (strndup); #elif defined GNULIB_POSIXCHECK # undef strndup # if HAVE_RAW_DECL_STRNDUP _GL_WARN_ON_USE (strndup, "strndup is unportable - " "use gnulib module strndup for portability"); # endif #endif /* Find the length (number of bytes) of STRING, but scan at most MAXLEN bytes. If no '\0' terminator is found in that many bytes, return MAXLEN. */ #if @GNULIB_STRNLEN@ # if @REPLACE_STRNLEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strnlen # define strnlen rpl_strnlen # endif _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); # else # if ! @HAVE_DECL_STRNLEN@ _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); # endif _GL_CXXALIASWARN (strnlen); #elif defined GNULIB_POSIXCHECK # undef strnlen # if HAVE_RAW_DECL_STRNLEN _GL_WARN_ON_USE (strnlen, "strnlen is unportable - " "use gnulib module strnlen for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strcspn() assumes the second argument is a list of single-byte characters. Even in this simple case, it does not work with multibyte strings if the locale encoding is GB18030 and one of the characters to be searched is a digit. */ # undef strcspn /* Assume strcspn is always declared. */ _GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings " "in multibyte locales - " "use mbscspn if you care about internationalization"); #endif /* Find the first occurrence in S of any character in ACCEPT. */ #if @GNULIB_STRPBRK@ # if ! @HAVE_STRPBRK@ _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif /* On some systems, this function is defined as an overloaded function: extern "C" { const char * strpbrk (const char *, const char *); } extern "C++" { char * strpbrk (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strpbrk, char *, (char const *__s, char const *__accept), const char *, (char const *__s, char const *__accept)); # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); _GL_CXXALIASWARN1 (strpbrk, char const *, (char const *__s, char const *__accept)); # else _GL_CXXALIASWARN (strpbrk); # endif # if defined GNULIB_POSIXCHECK /* strpbrk() assumes the second argument is a list of single-byte characters. Even in this simple case, it does not work with multibyte strings if the locale encoding is GB18030 and one of the characters to be searched is a digit. */ # undef strpbrk _GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings " "in multibyte locales - " "use mbspbrk if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strpbrk # if HAVE_RAW_DECL_STRPBRK _GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - " "use gnulib module strpbrk for portability"); # endif #endif #if defined GNULIB_POSIXCHECK /* strspn() assumes the second argument is a list of single-byte characters. Even in this simple case, it cannot work with multibyte strings. */ # undef strspn /* Assume strspn is always declared. */ _GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings " "in multibyte locales - " "use mbsspn if you care about internationalization"); #endif #if defined GNULIB_POSIXCHECK /* strrchr() does not work with multibyte strings if the locale encoding is GB18030 and the character to be searched is a digit. */ # undef strrchr /* Assume strrchr is always declared. */ _GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings " "in some multibyte locales - " "use mbsrchr if you care about internationalization"); #endif /* Search the next delimiter (char listed in DELIM) starting at *STRINGP. If one is found, overwrite it with a NUL, and advance *STRINGP to point to the next char after it. Otherwise, set *STRINGP to NULL. If *STRINGP was already NULL, nothing happens. Return the old value of *STRINGP. This is a variant of strtok() that is multithread-safe and supports empty fields. Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. Caveat: It doesn't work with multibyte strings unless all of the delimiter characters are ASCII characters < 0x30. See also strtok_r(). */ #if @GNULIB_STRSEP@ # if ! @HAVE_STRSEP@ _GL_FUNCDECL_SYS (strsep, char *, (char **restrict __stringp, char const *restrict __delim) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (strsep, char *, (char **restrict __stringp, char const *restrict __delim)); _GL_CXXALIASWARN (strsep); # if defined GNULIB_POSIXCHECK # undef strsep _GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings " "in multibyte locales - " "use mbssep if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strsep # if HAVE_RAW_DECL_STRSEP _GL_WARN_ON_USE (strsep, "strsep is unportable - " "use gnulib module strsep for portability"); # endif #endif #if @GNULIB_STRSTR@ # if @REPLACE_STRSTR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strstr rpl_strstr # endif _GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); # else /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * strstr (const char *, const char *); } extern "C++" { char * strstr (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strstr, char *, (const char *haystack, const char *needle), const char *, (const char *haystack, const char *needle)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); _GL_CXXALIASWARN1 (strstr, const char *, (const char *haystack, const char *needle)); # else _GL_CXXALIASWARN (strstr); # endif #elif defined GNULIB_POSIXCHECK /* strstr() does not work with multibyte strings if the locale encoding is different from UTF-8: POSIX says that it operates on "strings", and "string" in POSIX is defined as a sequence of bytes, not of characters. */ # undef strstr /* Assume strstr is always declared. */ _GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " "work correctly on character strings in most " "multibyte locales - " "use mbsstr if you care about internationalization, " "or use strstr if you care about speed"); #endif /* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive comparison. */ #if @GNULIB_STRCASESTR@ # if @REPLACE_STRCASESTR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strcasestr rpl_strcasestr # endif _GL_FUNCDECL_RPL (strcasestr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (strcasestr, char *, (const char *haystack, const char *needle)); # else # if ! @HAVE_STRCASESTR@ _GL_FUNCDECL_SYS (strcasestr, char *, (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif /* On some systems, this function is defined as an overloaded function: extern "C++" { const char * strcasestr (const char *, const char *); } extern "C++" { char * strcasestr (char *, const char *); } */ _GL_CXXALIAS_SYS_CAST2 (strcasestr, char *, (const char *haystack, const char *needle), const char *, (const char *haystack, const char *needle)); # endif # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) _GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); _GL_CXXALIASWARN1 (strcasestr, const char *, (const char *haystack, const char *needle)); # else _GL_CXXALIASWARN (strcasestr); # endif #elif defined GNULIB_POSIXCHECK /* strcasestr() does not work with multibyte strings: It is a glibc extension, and glibc implements it only for unibyte locales. */ # undef strcasestr # if HAVE_RAW_DECL_STRCASESTR _GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character " "strings in multibyte locales - " "use mbscasestr if you care about " "internationalization, or use c-strcasestr if you want " "a locale independent function"); # endif #endif /* Parse S into tokens separated by characters in DELIM. If S is NULL, the saved pointer in SAVE_PTR is used as the next starting point. For example: char s[] = "-abc-=-def"; char *sp; x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL x = strtok_r(NULL, "=", &sp); // x = NULL // s = "abc\0-def\0" This is a variant of strtok() that is multithread-safe. For the POSIX documentation for this function, see: http://www.opengroup.org/susv3xsh/strtok.html Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. Caveat: It doesn't work with multibyte strings unless all of the delimiter characters are ASCII characters < 0x30. See also strsep(). */ #if @GNULIB_STRTOK_R@ # if @REPLACE_STRTOK_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strtok_r # define strtok_r rpl_strtok_r # endif _GL_FUNCDECL_RPL (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr)); # else # if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK # undef strtok_r # endif # if ! @HAVE_DECL_STRTOK_R@ _GL_FUNCDECL_SYS (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (strtok_r, char *, (char *restrict s, char const *restrict delim, char **restrict save_ptr)); # endif _GL_CXXALIASWARN (strtok_r); # if defined GNULIB_POSIXCHECK _GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character " "strings in multibyte locales - " "use mbstok_r if you care about internationalization"); # endif #elif defined GNULIB_POSIXCHECK # undef strtok_r # if HAVE_RAW_DECL_STRTOK_R _GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " "use gnulib module strtok_r for portability"); # endif #endif /* The following functions are not specified by POSIX. They are gnulib extensions. */ #if @GNULIB_MBSLEN@ /* Return the number of multibyte characters in the character string STRING. This considers multibyte characters, unlike strlen, which counts bytes. */ # ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */ # undef mbslen # endif # if @HAVE_MBSLEN@ /* AIX, OSF/1, MirBSD define mbslen already in libc. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbslen rpl_mbslen # endif _GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); # else _GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); # endif _GL_CXXALIASWARN (mbslen); #endif #if @GNULIB_MBSNLEN@ /* Return the number of multibyte characters in the character string starting at STRING and ending at STRING + LEN. */ _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1)); #endif #if @GNULIB_MBSCHR@ /* Locate the first single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. Unlike strchr(), this function works correctly in multibyte locales with encodings such as GB18030. */ # if defined __hpux # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbschr rpl_mbschr /* avoid collision with HP-UX function */ # endif _GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); # else _GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); # endif _GL_CXXALIASWARN (mbschr); #endif #if @GNULIB_MBSRCHR@ /* Locate the last single-byte character C in the character string STRING, and return a pointer to it. Return NULL if C is not found in STRING. Unlike strrchr(), this function works correctly in multibyte locales with encodings such as GB18030. */ # if defined __hpux || defined __INTERIX # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbsrchr rpl_mbsrchr /* avoid collision with system function */ # endif _GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); # else _GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); # endif _GL_CXXALIASWARN (mbsrchr); #endif #if @GNULIB_MBSSTR@ /* Find the first occurrence of the character string NEEDLE in the character string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. Unlike strstr(), this function works correctly in multibyte locales with encodings different from UTF-8. */ _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCASECMP@ /* Compare the character strings S1 and S2, ignoring case, returning less than, equal to or greater than zero if S1 is lexicographically less than, equal to or greater than S2. Note: This function may, in multibyte locales, return 0 for strings of different lengths! Unlike strcasecmp(), this function works correctly in multibyte locales. */ _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSNCASECMP@ /* Compare the initial segment of the character string S1 consisting of at most N characters with the initial segment of the character string S2 consisting of at most N characters, ignoring case, returning less than, equal to or greater than zero if the initial segment of S1 is lexicographically less than, equal to or greater than the initial segment of S2. Note: This function may, in multibyte locales, return 0 for initial segments of different lengths! Unlike strncasecmp(), this function works correctly in multibyte locales. But beware that N is not a byte count but a character count! */ _GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSPCASECMP@ /* Compare the initial segment of the character string STRING consisting of at most mbslen (PREFIX) characters with the character string PREFIX, ignoring case. If the two match, return a pointer to the first byte after this prefix in STRING. Otherwise, return NULL. Note: This function may, in multibyte locales, return non-NULL if STRING is of smaller length than PREFIX! Unlike strncasecmp(), this function works correctly in multibyte locales. */ _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCASESTR@ /* Find the first occurrence of the character string NEEDLE in the character string HAYSTACK, using case-insensitive comparison. Note: This function may, in multibyte locales, return success even if strlen (haystack) < strlen (needle) ! Unlike strcasestr(), this function works correctly in multibyte locales. */ _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSCSPN@ /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the number of bytes from the beginning of the string to this occurrence, or to the end of the string if none exists. Unlike strcspn(), this function works correctly in multibyte locales. */ _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSPBRK@ /* Find the first occurrence in the character string STRING of any character in the character string ACCEPT. Return the pointer to it, or NULL if none exists. Unlike strpbrk(), this function works correctly in multibyte locales. */ # if defined __hpux # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ # endif _GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); # else _GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); # endif _GL_CXXALIASWARN (mbspbrk); #endif #if @GNULIB_MBSSPN@ /* Find the first occurrence in the character string STRING of any character not in the character string REJECT. Return the number of bytes from the beginning of the string to this occurrence, or to the end of the string if none exists. Unlike strspn(), this function works correctly in multibyte locales. */ _GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSSEP@ /* Search the next delimiter (multibyte character listed in the character string DELIM) starting at the character string *STRINGP. If one is found, overwrite it with a NUL, and advance *STRINGP to point to the next multibyte character after it. Otherwise, set *STRINGP to NULL. If *STRINGP was already NULL, nothing happens. Return the old value of *STRINGP. This is a variant of mbstok_r() that supports empty fields. Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. See also mbstok_r(). */ _GL_EXTERN_C char * mbssep (char **stringp, const char *delim) _GL_ARG_NONNULL ((1, 2)); #endif #if @GNULIB_MBSTOK_R@ /* Parse the character string STRING into tokens separated by characters in the character string DELIM. If STRING is NULL, the saved pointer in SAVE_PTR is used as the next starting point. For example: char s[] = "-abc-=-def"; char *sp; x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL x = mbstok_r(NULL, "=", &sp); // x = NULL // s = "abc\0-def\0" Caveat: It modifies the original string. Caveat: These functions cannot be used on constant strings. Caveat: The identity of the delimiting character is lost. See also mbssep(). */ _GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr) _GL_ARG_NONNULL ((2, 3)); #endif /* Map any int, typically from errno, into an error message. */ #if @GNULIB_STRERROR@ # if @REPLACE_STRERROR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strerror # define strerror rpl_strerror # endif _GL_FUNCDECL_RPL (strerror, char *, (int)); _GL_CXXALIAS_RPL (strerror, char *, (int)); # else _GL_CXXALIAS_SYS (strerror, char *, (int)); # endif _GL_CXXALIASWARN (strerror); #elif defined GNULIB_POSIXCHECK # undef strerror /* Assume strerror is always declared. */ _GL_WARN_ON_USE (strerror, "strerror is unportable - " "use gnulib module strerror to guarantee non-NULL result"); #endif /* Map any int, typically from errno, into an error message. Multithread-safe. Uses the POSIX declaration, not the glibc declaration. */ #if @GNULIB_STRERROR_R@ # if @REPLACE_STRERROR_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef strerror_r # define strerror_r rpl_strerror_r # endif _GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); # else # if !@HAVE_DECL_STRERROR_R@ _GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); # endif # if @HAVE_DECL_STRERROR_R@ _GL_CXXALIASWARN (strerror_r); # endif #elif defined GNULIB_POSIXCHECK # undef strerror_r # if HAVE_RAW_DECL_STRERROR_R _GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " "use gnulib module strerror_r-posix for portability"); # endif #endif #if @GNULIB_STRSIGNAL@ # if @REPLACE_STRSIGNAL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strsignal rpl_strsignal # endif _GL_FUNCDECL_RPL (strsignal, char *, (int __sig)); _GL_CXXALIAS_RPL (strsignal, char *, (int __sig)); # else # if ! @HAVE_DECL_STRSIGNAL@ _GL_FUNCDECL_SYS (strsignal, char *, (int __sig)); # endif /* Need to cast, because on Cygwin 1.5.x systems, the return type is 'const char *'. */ _GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig)); # endif _GL_CXXALIASWARN (strsignal); #elif defined GNULIB_POSIXCHECK # undef strsignal # if HAVE_RAW_DECL_STRSIGNAL _GL_WARN_ON_USE (strsignal, "strsignal is unportable - " "use gnulib module strsignal for portability"); # endif #endif #if @GNULIB_STRVERSCMP@ # if !@HAVE_STRVERSCMP@ _GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); _GL_CXXALIASWARN (strverscmp); #elif defined GNULIB_POSIXCHECK # undef strverscmp # if HAVE_RAW_DECL_STRVERSCMP _GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " "use gnulib module strverscmp for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_STRING_H */ #endif /* _@GUARD_PREFIX@_STRING_H */ libtasn1-3.4/lib/gllib/Makefile.in0000664000000000000000000016002312244721751013701 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib/gllib --m4-base=lib/glm4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=2 --no-conditional-dependencies --libtool --macro-prefix=lgl --no-vc-files hash-pjw-bare intprops lib-symbol-versions lib-symbol-visibility stdint strverscmp VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ subdir = lib/gllib DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/build-aux/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = am_libgnu_la_OBJECTS = hash-pjw-bare.lo libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libgnu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libgnu_la_LDFLAGS) $(LDFLAGS) -o $@ 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES) DIST_SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_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 HEADERS = $(noinst_HEADERS) 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 \ distdir 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 DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 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" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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@ AUTOMAKE_OPTIONS = 1.5 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = libgnu.la EXTRA_DIST = intprops.h $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ $(top_srcdir)/build-aux/snippet/c++defs.h \ $(top_srcdir)/build-aux/snippet/warn-on-use.h stddef.in.h \ stdint.in.h string.in.h strverscmp.c # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES = arg-nonnull.h c++defs.h warn-on-use.h $(STDDEF_H) \ $(STDINT_H) string.h SUFFIXES = MOSTLYCLEANFILES = core *.stackdump arg-nonnull.h arg-nonnull.h-t \ c++defs.h c++defs.h-t warn-on-use.h warn-on-use.h-t stddef.h \ stddef.h-t stdint.h stdint.h-t string.h string.h-t MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = AM_CPPFLAGS = # The value of $(CFLAG_VISIBILITY) needs to be added to the CFLAGS for the # compilation of all sources that make up the library. This line here does it # only for the gnulib part of it. The developer is responsible for adding # $(CFLAG_VISIBILITY) to the Makefile.ams of the other portions of the library. AM_CFLAGS = $(CFLAG_VISIBILITY) libgnu_la_SOURCES = hash-pjw-bare.h hash-pjw-bare.c libgnu_la_LIBADD = $(lgl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(lgl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = strverscmp.c libgnu_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined ARG_NONNULL_H = arg-nonnull.h CXXDEFS_H = c++defs.h WARN_ON_USE_H = warn-on-use.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(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) --gnits lib/gllib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits lib/gllib/Makefile .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libgnu.la: $(libgnu_la_OBJECTS) $(libgnu_la_DEPENDENCIES) $(EXTRA_libgnu_la_DEPENDENCIES) $(AM_V_CCLD)$(libgnu_la_LINK) $(libgnu_la_OBJECTS) $(libgnu_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-pjw-bare.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strverscmp.Plo@am__quote@ .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 $< .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 `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # 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" 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 distdir: $(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 @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 check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) 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) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) 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 "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ clean-noinstLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool mostlyclean-local pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all check install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool \ clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags 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 installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/build-aux/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDDEF_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_STDDEF_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ < $(srcdir)/stddef.in.h; \ @GL_GENERATE_STDDEF_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDDEF_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status @GL_GENERATE_STDINT_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDINT_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ @GL_GENERATE_STDINT_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ < $(srcdir)/stdint.in.h; \ @GL_GENERATE_STDINT_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDINT_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status @GL_GENERATE_STDINT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \ < $(srcdir)/string.in.h | \ sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ < $(srcdir)/string.in.h; \ } > $@-t && \ mv $@-t $@ mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : # 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: libtasn1-3.4/lib/gllib/stddef.in.h0000664000000000000000000000526112244720630013660 00000000000000/* A substitute for POSIX 2008 , for platforms that have issues. Copyright (C) 2009-2013 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1, 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, see . */ /* Written by Eric Blake. */ /* * POSIX 2008 for platforms that have issues. * */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_wchar_t || defined __need_size_t \ || defined __need_ptrdiff_t || defined __need_NULL \ || defined __need_wint_t /* Special invocation convention inside gcc header files. In particular, gcc provides a version of that blindly redefines NULL even when __need_wint_t was defined, even though wint_t is not normally provided by . Hence, we must remember if special invocation has ever been used to obtain wint_t, in which case we need to clean up NULL yet again. */ # if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T) # ifdef __need_wint_t # undef _@GUARD_PREFIX@_STDDEF_H # define _GL_STDDEF_WINT_T # endif # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # endif #else /* Normal invocation convention. */ # ifndef _@GUARD_PREFIX@_STDDEF_H /* The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # ifndef _@GUARD_PREFIX@_STDDEF_H # define _@GUARD_PREFIX@_STDDEF_H /* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ #if @REPLACE_NULL@ # undef NULL # ifdef __cplusplus /* ISO C++ says that the macro NULL must expand to an integer constant expression, hence '((void *) 0)' is not allowed in C++. */ # if __GNUG__ >= 3 /* GNU C++ has a __null macro that behaves like an integer ('int' or 'long') but has the same size as a pointer. Use that, to avoid warnings. */ # define NULL __null # else # define NULL 0L # endif # else # define NULL ((void *) 0) # endif #endif /* Some platforms lack wchar_t. */ #if !@HAVE_WCHAR_T@ # define wchar_t int #endif # endif /* _@GUARD_PREFIX@_STDDEF_H */ # endif /* _@GUARD_PREFIX@_STDDEF_H */ #endif /* __need_XXX */ libtasn1-3.4/lib/gllib/Makefile.am0000664000000000000000000003261612244720630013671 00000000000000## DO NOT EDIT! GENERATED AUTOMATICALLY! ## Process this file with automake to produce Makefile.in. # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib/gllib --m4-base=lib/glm4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=2 --no-conditional-dependencies --libtool --macro-prefix=lgl --no-vc-files hash-pjw-bare intprops lib-symbol-versions lib-symbol-visibility stdint strverscmp AUTOMAKE_OPTIONS = 1.5 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = EXTRA_DIST = BUILT_SOURCES = SUFFIXES = MOSTLYCLEANFILES = core *.stackdump MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = AM_CPPFLAGS = AM_CFLAGS = noinst_LTLIBRARIES += libgnu.la libgnu_la_SOURCES = libgnu_la_LIBADD = $(lgl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(lgl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = libgnu_la_LDFLAGS = $(AM_LDFLAGS) libgnu_la_LDFLAGS += -no-undefined ## begin gnulib module hash-pjw-bare libgnu_la_SOURCES += hash-pjw-bare.h hash-pjw-bare.c ## end gnulib module hash-pjw-bare ## begin gnulib module intprops EXTRA_DIST += intprops.h ## end gnulib module intprops ## begin gnulib module lib-symbol-visibility # The value of $(CFLAG_VISIBILITY) needs to be added to the CFLAGS for the # compilation of all sources that make up the library. This line here does it # only for the gnulib part of it. The developer is responsible for adding # $(CFLAG_VISIBILITY) to the Makefile.ams of the other portions of the library. AM_CFLAGS += $(CFLAG_VISIBILITY) ## end gnulib module lib-symbol-visibility ## begin gnulib module snippet/arg-nonnull # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += arg-nonnull.h # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t ARG_NONNULL_H=arg-nonnull.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/arg-nonnull.h ## end gnulib module snippet/arg-nonnull ## begin gnulib module snippet/c++defs # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += c++defs.h # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/build-aux/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += c++defs.h c++defs.h-t CXXDEFS_H=c++defs.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/c++defs.h ## end gnulib module snippet/c++defs ## begin gnulib module snippet/warn-on-use BUILT_SOURCES += warn-on-use.h # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t WARN_ON_USE_H=warn-on-use.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/warn-on-use.h ## end gnulib module snippet/warn-on-use ## begin gnulib module stddef BUILT_SOURCES += $(STDDEF_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDDEF_H stddef.h: stddef.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ < $(srcdir)/stddef.in.h; \ } > $@-t && \ mv $@-t $@ else stddef.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stddef.h stddef.h-t EXTRA_DIST += stddef.in.h ## end gnulib module stddef ## begin gnulib module stdint BUILT_SOURCES += $(STDINT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDINT_H stdint.h: stdint.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ < $(srcdir)/stdint.in.h; \ } > $@-t && \ mv $@-t $@ else stdint.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdint.h stdint.h-t EXTRA_DIST += stdint.in.h ## end gnulib module stdint ## begin gnulib module string BUILT_SOURCES += string.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL_LGL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \ < $(srcdir)/string.in.h | \ sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \ -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ < $(srcdir)/string.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += string.h string.h-t EXTRA_DIST += string.in.h ## end gnulib module string ## begin gnulib module strverscmp EXTRA_DIST += strverscmp.c EXTRA_libgnu_la_SOURCES += strverscmp.c ## end gnulib module strverscmp mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : libtasn1-3.4/lib/element.h0000664000000000000000000000220112244720630012331 00000000000000/* * Copyright (C) 2000-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ #ifndef _ELEMENT_H #define _ELEMENT_H int _asn1_append_sequence_set (asn1_node node); int _asn1_convert_integer (const unsigned char *value, unsigned char *value_out, int value_out_size, int *len); void _asn1_hierarchical_name (asn1_node node, char *name, int name_size); #endif libtasn1-3.4/lib/gstr.h0000664000000000000000000000221112244720630011660 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ unsigned int _asn1_str_cpy (char *dest, size_t dest_tot_size, const char *src); void _asn1_str_cat (char *dest, size_t dest_tot_size, const char *src); #define Estrcpy(x,y) _asn1_str_cpy(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y) #define Estrcat(x,y) _asn1_str_cat(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y) libtasn1-3.4/lib/int.h0000664000000000000000000001271212244720630011502 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ #ifndef INT_H #define INT_H #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #ifdef HAVE_SYS_TYPES_H #include #endif #include #define ASN1_SMALL_VALUE_SIZE 16 /* This structure is also in libtasn1.h, but then contains less fields. You cannot make any modifications to these first fields without breaking ABI. */ struct asn1_node_st { /* public fields: */ char name[ASN1_MAX_NAME_SIZE + 1]; /* Node name */ unsigned int name_hash; unsigned int type; /* Node type */ unsigned char *value; /* Node value */ int value_len; asn1_node down; /* Pointer to the son node */ asn1_node right; /* Pointer to the brother node */ asn1_node left; /* Pointer to the next list element */ /* private fields: */ unsigned char small_value[ASN1_SMALL_VALUE_SIZE]; /* For small values */ }; typedef struct tag_and_class_st { unsigned tag; unsigned class; const char *desc; } tag_and_class_st; /* the types that are handled in _asn1_tags */ #define CASE_HANDLED_ETYPES \ case ASN1_ETYPE_NULL: \ case ASN1_ETYPE_BOOLEAN: \ case ASN1_ETYPE_INTEGER: \ case ASN1_ETYPE_ENUMERATED: \ case ASN1_ETYPE_OBJECT_ID: \ case ASN1_ETYPE_OCTET_STRING: \ case ASN1_ETYPE_GENERALSTRING: \ case ASN1_ETYPE_NUMERIC_STRING: \ case ASN1_ETYPE_IA5_STRING: \ case ASN1_ETYPE_TELETEX_STRING: \ case ASN1_ETYPE_PRINTABLE_STRING: \ case ASN1_ETYPE_UNIVERSAL_STRING: \ case ASN1_ETYPE_BMP_STRING: \ case ASN1_ETYPE_UTF8_STRING: \ case ASN1_ETYPE_VISIBLE_STRING: \ case ASN1_ETYPE_BIT_STRING: \ case ASN1_ETYPE_SEQUENCE: \ case ASN1_ETYPE_SEQUENCE_OF: \ case ASN1_ETYPE_SET: \ case ASN1_ETYPE_UTC_TIME: \ case ASN1_ETYPE_GENERALIZED_TIME: \ case ASN1_ETYPE_SET_OF #define ETYPE_TAG(etype) (_asn1_tags[etype].tag) #define ETYPE_CLASS(etype) (_asn1_tags[etype].class) #define ETYPE_OK(etype) ((etype != ASN1_ETYPE_INVALID && \ etype <= _asn1_tags_size && \ _asn1_tags[etype].desc != NULL)?1:0) extern unsigned int _asn1_tags_size; extern const tag_and_class_st _asn1_tags[]; #define _asn1_strlen(s) strlen((const char *) s) #define _asn1_strtol(n,e,b) strtol((const char *) n, e, b) #define _asn1_strtoul(n,e,b) strtoul((const char *) n, e, b) #define _asn1_strcmp(a,b) strcmp((const char *)a, (const char *)b) #define _asn1_strcpy(a,b) strcpy((char *)a, (const char *)b) #define _asn1_strcat(a,b) strcat((char *)a, (const char *)b) #define MAX_LOG_SIZE 1024 /* maximum number of characters of a log message */ /* Define used for visiting trees. */ #define UP 1 #define RIGHT 2 #define DOWN 3 /***********************************************************************/ /* List of constants to better specify the type of typedef asn1_node_st. */ /***********************************************************************/ /* Used with TYPE_TAG */ #define CONST_UNIVERSAL (1<<8) #define CONST_PRIVATE (1<<9) #define CONST_APPLICATION (1<<10) #define CONST_EXPLICIT (1<<11) #define CONST_IMPLICIT (1<<12) #define CONST_TAG (1<<13) /* Used in ASN.1 assignement */ #define CONST_OPTION (1<<14) #define CONST_DEFAULT (1<<15) #define CONST_TRUE (1<<16) #define CONST_FALSE (1<<17) #define CONST_LIST (1<<18) /* Used with TYPE_INTEGER and TYPE_BIT_STRING */ #define CONST_MIN_MAX (1<<19) #define CONST_1_PARAM (1<<20) #define CONST_SIZE (1<<21) #define CONST_DEFINED_BY (1<<22) /* Those two are deprecated and used for backwards compatibility */ #define CONST_GENERALIZED (1<<23) #define CONST_UTC (1<<24) /* #define CONST_IMPORTS (1<<25) */ #define CONST_NOT_USED (1<<26) #define CONST_SET (1<<27) #define CONST_ASSIGN (1<<28) #define CONST_DOWN (1<<29) #define CONST_RIGHT (1<<30) #define ASN1_ETYPE_TIME 17 /****************************************/ /* Returns the first 8 bits. */ /* Used with the field type of asn1_node_st */ /****************************************/ inline static unsigned int type_field (unsigned int ntype) { return (ntype & 0xff); } /* To convert old types from a static structure */ inline static unsigned int convert_old_type (unsigned int ntype) { unsigned int type = ntype & 0xff; if (type == ASN1_ETYPE_TIME) { if (ntype & CONST_UTC) type = ASN1_ETYPE_UTC_TIME; else type = ASN1_ETYPE_GENERALIZED_TIME; ntype &= ~(CONST_UTC | CONST_GENERALIZED); ntype &= 0xffffff00; ntype |= type; return ntype; } else return ntype; } #endif /* INT_H */ libtasn1-3.4/lib/ASN1.y0000664000000000000000000010262012244720630011431 00000000000000%{ /* * Copyright (C) 2001-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ /*****************************************************/ /* File: x509_ASN.y */ /* Description: input file for 'bison' program. */ /* The output file is a parser (in C language) for */ /* ASN.1 syntax */ /*****************************************************/ #include #include #include #include static FILE *file_asn1; /* Pointer to file to parse */ static int result_parse = 0; /* result of the parser algorithm */ static asn1_node p_tree; /* pointer to the root of the structure created by the parser*/ static unsigned int line_number; /* line number describing the parser position inside the file */ static char last_error[ASN1_MAX_ERROR_DESCRIPTION_SIZE] = ""; static char last_error_token[ASN1_MAX_ERROR_DESCRIPTION_SIZE+1] = ""; /* used when expected errors occur */ static char last_token[ASN1_MAX_NAME_SIZE+1] = ""; /* last token find in the file to parse before the 'parse error' */ extern char _asn1_identifierMissing[]; static const char *file_name; /* file to parse */ static void _asn1_yyerror (const char *); static int _asn1_yylex(void); %} /* Prefix symbols and functions with _asn1_ */ /* %define parse.lac full */ %error-verbose %name-prefix="_asn1_yy" %union { unsigned int constant; char str[ASN1_MAX_NAME_SIZE+1]; asn1_node node; } %token ASSIG "::=" %token NUM %token IDENTIFIER %token OPTIONAL %token INTEGER %token SIZE %token OCTET %token STRING %token SEQUENCE %token BIT %token UNIVERSAL %token PRIVATE %token APPLICATION %token DEFAULT %token CHOICE %token OF %token OBJECT %token STR_IDENTIFIER %token BOOLEAN %token ASN1_TRUE %token ASN1_FALSE %token TOKEN_NULL %token ANY %token DEFINED %token BY %token SET %token EXPLICIT %token IMPLICIT %token DEFINITIONS %token TAGS %token BEGIN %token END %token UTCTime %token GeneralizedTime %token GeneralString %token NumericString %token IA5String %token TeletexString %token PrintableString %token UniversalString %token BMPString %token UTF8String %token VisibleString %token FROM %token IMPORTS %token ENUMERATED %type octet_string_def constant constant_list type_assig_right %type integer_def type_assig type_assig_list sequence_def type_def %type bit_string_def default size_def choise_def object_def %type boolean_def any_def size_def2 obj_constant obj_constant_list %type constant_def type_constant type_constant_list definitions %type definitions_id Time bit_element bit_element_list set_def %type tag_type tag type_assig_right_tag generalstring_def %type numericstring_def ia5string_def printablestring_def universalstring_def %type bmpstring_def utf8string_def visiblestring_def teletexstring_def %type type_assig_right_tag_default enumerated_def %type pos_num neg_num pos_neg_num pos_neg_identifier pos_neg_list %type num_identifier %type int_identifier %type class explicit_implicit %% definitions: definitions_id DEFINITIONS explicit_implicit TAGS "::=" BEGIN /* imports_def */ type_constant_list END {$$=_asn1_add_static_node(ASN1_ETYPE_DEFINITIONS|$3); _asn1_set_name($$,_asn1_get_name($1)); _asn1_set_name($1,""); _asn1_set_right($1,$7); _asn1_set_down($$,$1); p_tree=$$; } ; pos_num : NUM {snprintf($$,sizeof($$),"%s",$1);} | '+' NUM {snprintf($$,sizeof($$),"%s",$2);} ; neg_num : '-' NUM {snprintf($$,sizeof($$),"-%s",$2);} ; pos_neg_num : pos_num {snprintf($$,sizeof($$),"%s",$1);} | neg_num {snprintf($$,sizeof($$),"%s",$1);} ; num_identifier : NUM {snprintf($$,sizeof($$),"%s",$1);} | IDENTIFIER {snprintf($$,sizeof($$),"%s",$1);} ; int_identifier : NUM {snprintf($$,sizeof($$),"%s",$1);} | '-' NUM {snprintf($$,sizeof($$),"-%s",$2);} | IDENTIFIER {snprintf($$,sizeof($$),"%s",$1);} ; pos_neg_identifier : pos_neg_num {snprintf($$,sizeof($$),"%s",$1);} | IDENTIFIER {snprintf($$,sizeof($$),"%s",$1);} ; constant: '(' pos_neg_num ')' {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_value($$,$2,strlen($2)+1);} | IDENTIFIER'('pos_neg_num')' {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name($$,$1); _asn1_set_value($$,$3,strlen($3)+1);} ; constant_list: constant {$$=$1;} | constant_list ',' constant {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$3);} ; obj_constant: num_identifier {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_value($$,$1,strlen($1)+1);} | IDENTIFIER'('NUM')' {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name($$,$1); _asn1_set_value($$,$3,strlen($3)+1);} ; obj_constant_list: obj_constant {$$=$1;} | obj_constant_list obj_constant {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$2);} ; class : UNIVERSAL {$$=CONST_UNIVERSAL;} | PRIVATE {$$=CONST_PRIVATE;} | APPLICATION {$$=CONST_APPLICATION;} ; tag_type : '[' NUM ']' {$$=_asn1_add_static_node(ASN1_ETYPE_TAG); _asn1_set_value($$,$2,strlen($2)+1);} | '[' class NUM ']' {$$=_asn1_add_static_node(ASN1_ETYPE_TAG | $2); _asn1_set_value($$,$3,strlen($3)+1);} ; tag : tag_type {$$=$1;} | tag_type EXPLICIT {$$=_asn1_mod_type($1,CONST_EXPLICIT);} | tag_type IMPLICIT {$$=_asn1_mod_type($1,CONST_IMPLICIT);} ; default : DEFAULT pos_neg_identifier {$$=_asn1_add_static_node(ASN1_ETYPE_DEFAULT); _asn1_set_value($$,$2,strlen($2)+1);} | DEFAULT ASN1_TRUE {$$=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_TRUE);} | DEFAULT ASN1_FALSE {$$=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_FALSE);} ; pos_neg_list: pos_neg_num | pos_neg_list '|' pos_neg_num ; integer_def: INTEGER {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER);} | INTEGER'{'constant_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_LIST); _asn1_set_down($$,$3);} | integer_def'(' pos_neg_list ')' {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER);} | integer_def'('int_identifier'.''.'int_identifier')' {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_MIN_MAX); _asn1_set_down($$,_asn1_add_static_node(ASN1_ETYPE_SIZE)); _asn1_set_value(_asn1_get_down($$),$6,strlen($6)+1); _asn1_set_name(_asn1_get_down($$),$3);} ; boolean_def: BOOLEAN {$$=_asn1_add_static_node(ASN1_ETYPE_BOOLEAN);} ; Time: UTCTime {$$=_asn1_add_static_node(ASN1_ETYPE_UTC_TIME);} | GeneralizedTime {$$=_asn1_add_static_node(ASN1_ETYPE_GENERALIZED_TIME);} ; size_def2: SIZE'('num_identifier')' {$$=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_1_PARAM); _asn1_set_value($$,$3,strlen($3)+1);} | SIZE'('num_identifier'.''.'num_identifier')' {$$=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_MIN_MAX); _asn1_set_value($$,$3,strlen($3)+1); _asn1_set_name($$,$6);} ; size_def: size_def2 {$$=$1;} | '(' size_def2 ')' {$$=$2;} ; generalstring_def: GeneralString {$$=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING);} | GeneralString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING|CONST_SIZE); _asn1_set_down($$,$2);} ; numericstring_def: NumericString {$$=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_UNIVERSAL);} | NumericString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; ia5string_def: IA5String {$$=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING);} | IA5String size_def {$$=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; teletexstring_def: TeletexString {$$=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING);} | TeletexString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; printablestring_def: PrintableString {$$=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING);} | PrintableString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; universalstring_def: UniversalString {$$=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING);} | UniversalString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; bmpstring_def: BMPString {$$=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING);} | BMPString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; utf8string_def: UTF8String {$$=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING);} | UTF8String size_def {$$=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; visiblestring_def: VisibleString {$$=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING);} | VisibleString size_def {$$=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING|CONST_SIZE); _asn1_set_down($$,$2);} ; octet_string_def : OCTET STRING {$$=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING);} | OCTET STRING size_def {$$=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING|CONST_SIZE); _asn1_set_down($$,$3);} ; bit_element : IDENTIFIER'('NUM')' {$$=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name($$,$1); _asn1_set_value($$,$3,strlen($3)+1);} ; bit_element_list : bit_element {$$=$1;} | bit_element_list ',' bit_element {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$3);} ; bit_string_def : BIT STRING {$$=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING);} | BIT STRING size_def {$$=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_SIZE);} | BIT STRING'{'bit_element_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_LIST); _asn1_set_down($$,$4);} ; enumerated_def : ENUMERATED'{'bit_element_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_ENUMERATED|CONST_LIST); _asn1_set_down($$,$3);} ; object_def : OBJECT STR_IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID);} ; type_assig_right: IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER); _asn1_set_value($$,$1,strlen($1)+1);} | IDENTIFIER size_def {$$=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER|CONST_SIZE); _asn1_set_value($$,$1,strlen($1)+1); _asn1_set_down($$,$2);} | integer_def {$$=$1;} | enumerated_def {$$=$1;} | boolean_def {$$=$1;} | Time | octet_string_def {$$=$1;} | bit_string_def {$$=$1;} | generalstring_def {$$=$1;} | numericstring_def {$$=$1;} | ia5string_def {$$=$1;} | teletexstring_def {$$=$1;} | printablestring_def {$$=$1;} | universalstring_def {$$=$1;} | bmpstring_def {$$=$1;} | utf8string_def {$$=$1;} | visiblestring_def {$$=$1;} | sequence_def {$$=$1;} | object_def {$$=$1;} | choise_def {$$=$1;} | any_def {$$=$1;} | set_def {$$=$1;} | TOKEN_NULL {$$=_asn1_add_static_node(ASN1_ETYPE_NULL);} ; type_assig_right_tag : type_assig_right {$$=$1;} | tag type_assig_right {$$=_asn1_mod_type($2,CONST_TAG); _asn1_set_right($1,_asn1_get_down($$)); _asn1_set_down($$,$1);} ; type_assig_right_tag_default : type_assig_right_tag {$$=$1;} | type_assig_right_tag default {$$=_asn1_mod_type($1,CONST_DEFAULT); _asn1_set_right($2,_asn1_get_down($$)); _asn1_set_down($$,$2);} | type_assig_right_tag OPTIONAL {$$=_asn1_mod_type($1,CONST_OPTION);} ; type_assig : IDENTIFIER type_assig_right_tag_default {$$=_asn1_set_name($2,$1);} ; type_assig_list : type_assig {$$=$1;} | type_assig_list','type_assig {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$3);} ; sequence_def : SEQUENCE'{'type_assig_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE); _asn1_set_down($$,$3);} | SEQUENCE OF type_assig_right {$$=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF); _asn1_set_down($$,$3);} | SEQUENCE size_def OF type_assig_right {$$=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF|CONST_SIZE); _asn1_set_right($2,$4); _asn1_set_down($$,$2);} ; set_def : SET'{'type_assig_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_SET); _asn1_set_down($$,$3);} | SET OF type_assig_right {$$=_asn1_add_static_node(ASN1_ETYPE_SET_OF); _asn1_set_down($$,$3);} | SET size_def OF type_assig_right {$$=_asn1_add_static_node(ASN1_ETYPE_SET_OF|CONST_SIZE); _asn1_set_right($2,$4); _asn1_set_down($$,$2);} ; choise_def : CHOICE'{'type_assig_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_CHOICE); _asn1_set_down($$,$3);} ; any_def : ANY {$$=_asn1_add_static_node(ASN1_ETYPE_ANY);} | ANY DEFINED BY IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_ANY|CONST_DEFINED_BY); _asn1_set_down($$,_asn1_add_static_node(ASN1_ETYPE_CONSTANT)); _asn1_set_name(_asn1_get_down($$),$4);} ; type_def : IDENTIFIER "::=" type_assig_right_tag {$$=_asn1_set_name($3,$1);} /* below should match: BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING etc*/ | error "::=" type_assig_right_tag {$$=_asn1_set_name($3, last_error_token);} ; constant_def : IDENTIFIER OBJECT STR_IDENTIFIER "::=" '{'obj_constant_list'}' {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN); _asn1_set_name($$,$1); _asn1_set_down($$,$6);} | IDENTIFIER IDENTIFIER "::=" '{' obj_constant_list '}' {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN|CONST_1_PARAM); _asn1_set_name($$,$1); _asn1_set_value($$,$2,strlen($2)+1); _asn1_set_down($$,$5);} | IDENTIFIER INTEGER "::=" pos_neg_num {$$=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_ASSIGN); _asn1_set_name($$,$1); _asn1_set_value($$,$4,strlen($4)+1);} ; type_constant: type_def {$$=$1;} | constant_def {$$=$1;} ; type_constant_list : type_constant {$$=$1;} | type_constant_list type_constant {$$=$1; _asn1_set_right(_asn1_get_last_right($1),$2);} ; definitions_id : IDENTIFIER '{' obj_constant_list '}' {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_down($$,$3); _asn1_set_name($$,$1);} | IDENTIFIER '{' '}' {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_name($$,$1);} | IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_name($$,$1);} ; /* identifier_list : IDENTIFIER {$$=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER); _asn1_set_name($$,$1);} | identifier_list IDENTIFIER {$$=$1; _asn1_set_right(_asn1_get_last_right($$),_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER)); _asn1_set_name(_asn1_get_last_right($$),$2);} ; imports_def : empty {$$=NULL;} | IMPORTS identifier_list FROM IDENTIFIER obj_constant_list {$$=_asn1_add_static_node(ASN1_ETYPE_IMPORTS); _asn1_set_down($$,_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID)); _asn1_set_name(_asn1_get_down($$),$4); _asn1_set_down(_asn1_get_down($$),$5); _asn1_set_right($$,$2);} ; */ explicit_implicit : EXPLICIT {$$=CONST_EXPLICIT;} | IMPLICIT {$$=CONST_IMPLICIT;} ; %% static const char *key_word[] = { "::=","OPTIONAL","INTEGER","SIZE","OCTET","STRING", "SEQUENCE","BIT","UNIVERSAL","PRIVATE","OPTIONAL", "DEFAULT","CHOICE","OF","OBJECT","IDENTIFIER", "BOOLEAN","TRUE","FALSE","APPLICATION","ANY","DEFINED", "SET","BY","EXPLICIT","IMPLICIT","DEFINITIONS","TAGS", "BEGIN","END","UTCTime","GeneralizedTime", "GeneralString","FROM","IMPORTS","NULL","ENUMERATED", "NumericString", "IA5String", "TeletexString", "PrintableString", "UniversalString", "BMPString", "UTF8String", "VisibleString"}; static const int key_word_token[] = { ASSIG, OPTIONAL, INTEGER, SIZE, OCTET, STRING, SEQUENCE, BIT, UNIVERSAL, PRIVATE, OPTIONAL, DEFAULT, CHOICE, OF, OBJECT, STR_IDENTIFIER, BOOLEAN, ASN1_TRUE, ASN1_FALSE, APPLICATION, ANY, DEFINED, SET, BY, EXPLICIT, IMPLICIT, DEFINITIONS, TAGS, BEGIN, END, UTCTime, GeneralizedTime, GeneralString, FROM, IMPORTS, TOKEN_NULL, ENUMERATED, NumericString, IA5String, TeletexString, PrintableString, UniversalString, BMPString, UTF8String, VisibleString }; /*************************************************************/ /* Function: _asn1_yylex */ /* Description: looks for tokens in file_asn1 pointer file. */ /* Return: int */ /* Token identifier or ASCII code or 0(zero: End Of File) */ /*************************************************************/ static int _asn1_yylex () { int c, counter = 0, k, lastc; char string[ASN1_MAX_NAME_SIZE + 1]; /* will contain the next token */ size_t i; while (1) { while ((c = fgetc (file_asn1)) == ' ' || c == '\t' || c == '\n') if (c == '\n') line_number++; if (c == EOF) { snprintf (last_token, sizeof(last_token), "End Of File"); return 0; } if (c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == ',' || c == '.' || c == '+' || c == '|') { last_token[0] = c; last_token[1] = 0; return c; } if (c == '-') { /* Maybe the first '-' of a comment */ if ((c = fgetc (file_asn1)) != '-') { ungetc (c, file_asn1); last_token[0] = '-'; last_token[1] = 0; return '-'; } else { /* Comments */ lastc = 0; counter = 0; /* A comment finishes at the next double hypen or the end of line */ while ((c = fgetc (file_asn1)) != EOF && c != '\n' && (lastc != '-' || (lastc == '-' && c != '-'))) lastc = c; if (c == EOF) { snprintf (last_token, sizeof(last_token), "End Of File"); return 0; } else { if (c == '\n') line_number++; continue; /* next char, please! (repeat the search) */ } } } string[counter++] = c; /* Till the end of the token */ while (! ((c = fgetc (file_asn1)) == EOF || c == ' ' || c == '\t' || c == '\n' || c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == ',' || c == '.')) { if (counter >= ASN1_MAX_NAME_SIZE) { result_parse = ASN1_NAME_TOO_LONG; return 0; } string[counter++] = c; } ungetc (c, file_asn1); string[counter] = 0; snprintf (last_token, sizeof(last_token), "%s", string); /* Is STRING a number? */ for (k = 0; k < counter; k++) if (!isdigit (string[k])) break; if (k >= counter) { snprintf (yylval.str, sizeof(yylval.str), "%s", string); return NUM; /* return the number */ } /* Is STRING a keyword? */ for (i = 0; i < (sizeof (key_word) / sizeof (char *)); i++) if (!strcmp (string, key_word[i])) return key_word_token[i]; /* STRING is an IDENTIFIER */ snprintf (yylval.str, sizeof(yylval.str), "%s", string); return IDENTIFIER; } } /*************************************************************/ /* Function: _asn1_create_errorDescription */ /* Description: creates a string with the description of the*/ /* error. */ /* Parameters: */ /* error : error to describe. */ /* error_desc: string that will contain the */ /* description. */ /*************************************************************/ static void _asn1_create_errorDescription (int error, char *error_desc) { if (error_desc == NULL) return; switch (error) { case ASN1_FILE_NOT_FOUND: snprintf(error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s file was not found", file_name); break; case ASN1_SYNTAX_ERROR: snprintf(error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s", last_error); break; case ASN1_NAME_TOO_LONG: snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s:%u: name too long (more than %u characters)", file_name, line_number, ASN1_MAX_NAME_SIZE); break; case ASN1_IDENTIFIER_NOT_FOUND: snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s:: identifier '%s' not found", file_name, _asn1_identifierMissing); break; default: error_desc[0] = 0; break; } } /** * asn1_parser2tree: * @file: specify the path and the name of file that contains * ASN.1 declarations. * @definitions: return the pointer to the structure created from * "file" ASN.1 declarations. * @error_desc: return the error description or an empty * string if success. * * Function used to start the parse algorithm. Creates the structures * needed to manage the definitions included in @file file. * * Returns: %ASN1_SUCCESS if the file has a correct syntax and every * identifier is known, %ASN1_ELEMENT_NOT_EMPTY if @definitions not * %NULL, %ASN1_FILE_NOT_FOUND if an error occured while * opening @file, %ASN1_SYNTAX_ERROR if the syntax is not * correct, %ASN1_IDENTIFIER_NOT_FOUND if in the file there is an * identifier that is not defined, %ASN1_NAME_TOO_LONG if in the * file there is an identifier whith more than %ASN1_MAX_NAME_SIZE * characters. **/ int asn1_parser2tree (const char *file, asn1_node * definitions, char *error_desc) { p_tree = NULL; if (*definitions != NULL) return ASN1_ELEMENT_NOT_EMPTY; *definitions = NULL; file_name = file; /* open the file to parse */ file_asn1 = fopen (file, "r"); if (file_asn1 == NULL) { result_parse = ASN1_FILE_NOT_FOUND; } else { result_parse = ASN1_SUCCESS; line_number = 1; yyparse (); fclose (file_asn1); if (result_parse == ASN1_SUCCESS) { /* syntax OK */ /* set IMPLICIT or EXPLICIT property */ _asn1_set_default_tag (p_tree); /* set CONST_SET and CONST_NOT_USED */ _asn1_type_set_config (p_tree); /* check the identifier definitions */ result_parse = _asn1_check_identifier (p_tree); if (result_parse == ASN1_SUCCESS) { /* all identifier defined */ /* Delete the list and keep the ASN1 structure */ _asn1_delete_list (); /* Convert into DER coding the value assign to INTEGER constants */ _asn1_change_integer_value (p_tree); /* Expand the IDs of OBJECT IDENTIFIER constants */ _asn1_expand_object_id (p_tree); *definitions = p_tree; } else /* some identifiers not defined */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } else /* syntax error */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } _asn1_create_errorDescription (result_parse, error_desc); return result_parse; } /** * asn1_parser2array: * @inputFileName: specify the path and the name of file that * contains ASN.1 declarations. * @outputFileName: specify the path and the name of file that will * contain the C vector definition. * @vectorName: specify the name of the C vector. * @error_desc: return the error description or an empty * string if success. * * Function that generates a C structure from an ASN1 file. Creates a * file containing a C vector to use to manage the definitions * included in @inputFileName file. If @inputFileName is * "/aa/bb/xx.yy" and @outputFileName is %NULL, the file created is * "/aa/bb/xx_asn1_tab.c". If @vectorName is %NULL the vector name * will be "xx_asn1_tab". * * Returns: %ASN1_SUCCESS if the file has a correct syntax and every * identifier is known, %ASN1_FILE_NOT_FOUND if an error occured * while opening @inputFileName, %ASN1_SYNTAX_ERROR if the syntax is * not correct, %ASN1_IDENTIFIER_NOT_FOUND if in the file there is * an identifier that is not defined, %ASN1_NAME_TOO_LONG if in the * file there is an identifier whith more than %ASN1_MAX_NAME_SIZE * characters. **/ int asn1_parser2array (const char *inputFileName, const char *outputFileName, const char *vectorName, char *error_desc) { char *file_out_name = NULL; char *vector_name = NULL; const char *char_p, *slash_p, *dot_p; p_tree = NULL; file_name = inputFileName; /* open the file to parse */ file_asn1 = fopen (inputFileName, "r"); if (file_asn1 == NULL) result_parse = ASN1_FILE_NOT_FOUND; else { result_parse = ASN1_SUCCESS; line_number = 1; yyparse (); fclose (file_asn1); if (result_parse == ASN1_SUCCESS) { /* syntax OK */ /* set IMPLICIT or EXPLICIT property */ _asn1_set_default_tag (p_tree); /* set CONST_SET and CONST_NOT_USED */ _asn1_type_set_config (p_tree); /* check the identifier definitions */ result_parse = _asn1_check_identifier (p_tree); if (result_parse == ASN1_SUCCESS) { /* all identifier defined */ /* searching the last '/' and '.' in inputFileName */ char_p = inputFileName; slash_p = inputFileName; while ((char_p = strchr (char_p, '/'))) { char_p++; slash_p = char_p; } char_p = slash_p; dot_p = inputFileName + strlen (inputFileName); while ((char_p = strchr (char_p, '.'))) { dot_p = char_p; char_p++; } if (outputFileName == NULL) { /* file_out_name = inputFileName + _asn1_tab.c */ file_out_name = malloc (dot_p - inputFileName + 1 + strlen ("_asn1_tab.c")); memcpy (file_out_name, inputFileName, dot_p - inputFileName); file_out_name[dot_p - inputFileName] = 0; strcat (file_out_name, "_asn1_tab.c"); } else { /* file_out_name = inputFileName */ file_out_name = (char *) malloc (strlen (outputFileName) + 1); strcpy (file_out_name, outputFileName); } if (vectorName == NULL) { /* vector_name = file name + _asn1_tab */ vector_name = malloc (dot_p - slash_p + 1 + strlen ("_asn1_tab")); memcpy (vector_name, slash_p, dot_p - slash_p); vector_name[dot_p - slash_p] = 0; strcat (vector_name, "_asn1_tab"); } else { /* vector_name = vectorName */ vector_name = (char *) malloc (strlen (vectorName) + 1); strcpy (vector_name, vectorName); } /* Save structure in a file */ _asn1_create_static_structure (p_tree, file_out_name, vector_name); free (file_out_name); free (vector_name); } /* result == OK */ } /* result == OK */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } /* inputFile exist */ _asn1_create_errorDescription (result_parse, error_desc); return result_parse; } /*************************************************************/ /* Function: _asn1_yyerror */ /* Description: function called when there are syntax errors*/ /* Parameters: */ /* char *s : error description */ /* Return: int */ /* */ /*************************************************************/ static void _asn1_yyerror (const char *s) { /* Sends the error description to the std_out */ if (strcmp (last_token, "VisibleString") == 0 || strcmp (last_token, "PrintableString") == 0 || strcmp (last_token, "UniversalString") == 0 || strcmp (last_token, "IA5String") == 0 || strcmp (last_token, "UTF8String") == 0 || strcmp (last_token, "NumericString") == 0 || strcmp (last_token, "TeletexString") == 0 || strcmp (last_token, "BMPString") == 0) { snprintf (last_error_token, sizeof(last_error_token), "%s", last_token); fprintf(stderr, "%s:%u: Warning: %s is a built-in ASN.1 type.\n", file_name, line_number, last_token); return; } last_error_token[0] = 0; if (result_parse != ASN1_NAME_TOO_LONG) { snprintf (last_error, sizeof(last_error), "%s:%u: Error: %s near '%s'", file_name, line_number, s, last_token); result_parse = ASN1_SYNTAX_ERROR; } return; } libtasn1-3.4/lib/libtasn1.pc.in0000664000000000000000000000210612244720630013201 00000000000000# Copyright (C) 2005-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # The LIBTASN1 library is free software; you can redistribute it # and/or modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: libtasn1 Description: Library for ASN.1 and DER manipulation URL: http://www.gnu.org/software/libtasn1/ Version: @VERSION@ Libs: -L${libdir} -ltasn1 Cflags: -I${includedir} libtasn1-3.4/lib/structure.c0000664000000000000000000006272712244720630012756 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ /*****************************************************/ /* File: structure.c */ /* Description: Functions to create and delete an */ /* ASN1 tree. */ /*****************************************************/ #include #include #include "parser_aux.h" #include extern char _asn1_identifierMissing[]; /******************************************************/ /* Function : _asn1_add_single_node */ /* Description: creates a new NODE_ASN element. */ /* Parameters: */ /* type: type of the new element (see ASN1_ETYPE_ */ /* and CONST_ constants). */ /* Return: pointer to the new element. */ /******************************************************/ asn1_node _asn1_add_single_node (unsigned int type) { asn1_node punt; punt = calloc (1, sizeof (struct asn1_node_st)); if (punt == NULL) return NULL; punt->type = type; return punt; } /******************************************************************/ /* Function : _asn1_find_left */ /* Description: returns the NODE_ASN element with RIGHT field that*/ /* points the element NODE. */ /* Parameters: */ /* node: NODE_ASN element pointer. */ /* Return: NULL if not found. */ /******************************************************************/ asn1_node _asn1_find_left (asn1_node node) { if ((node == NULL) || (node->left == NULL) || (node->left->down == node)) return NULL; return node->left; } int _asn1_create_static_structure (asn1_node pointer, char *output_file_name, char *vector_name) { FILE *file; asn1_node p; unsigned long t; file = fopen (output_file_name, "w"); if (file == NULL) return ASN1_FILE_NOT_FOUND; fprintf (file, "#if HAVE_CONFIG_H\n"); fprintf (file, "# include \"config.h\"\n"); fprintf (file, "#endif\n\n"); fprintf (file, "#include \n\n"); fprintf (file, "const asn1_static_node %s[] = {\n", vector_name); p = pointer; while (p) { fprintf (file, " { "); if (p->name[0] != 0) fprintf (file, "\"%s\", ", p->name); else fprintf (file, "NULL, "); t = p->type; if (p->down) t |= CONST_DOWN; if (p->right) t |= CONST_RIGHT; fprintf (file, "%lu, ", t); if (p->value) fprintf (file, "\"%s\"},\n", p->value); else fprintf (file, "NULL },\n"); if (p->down) { p = p->down; } else if (p->right) { p = p->right; } else { while (1) { p = _asn1_find_up (p); if (p == pointer) { p = NULL; break; } if (p->right) { p = p->right; break; } } } } fprintf (file, " { NULL, 0, NULL }\n};\n"); fclose (file); return ASN1_SUCCESS; } /** * asn1_array2tree: * @array: specify the array that contains ASN.1 declarations * @definitions: return the pointer to the structure created by * *ARRAY ASN.1 declarations * @errorDescription: return the error description. * * Creates the structures needed to manage the ASN.1 definitions. * @array is a vector created by asn1_parser2array(). * * Returns: %ASN1_SUCCESS if structure was created correctly, * %ASN1_ELEMENT_NOT_EMPTY if *@definitions not NULL, * %ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier * that is not defined (see @errorDescription for more information), * %ASN1_ARRAY_ERROR if the array pointed by @array is wrong. **/ int asn1_array2tree (const asn1_static_node * array, asn1_node * definitions, char *errorDescription) { asn1_node p, p_last = NULL; unsigned long k; int move; int result; unsigned int type; if (*definitions != NULL) return ASN1_ELEMENT_NOT_EMPTY; move = UP; k = 0; while (array[k].value || array[k].type || array[k].name) { type = convert_old_type (array[k].type); p = _asn1_add_static_node (type & (~CONST_DOWN)); if (array[k].name) _asn1_set_name (p, array[k].name); if (array[k].value) _asn1_set_value (p, array[k].value, strlen (array[k].value) + 1); if (*definitions == NULL) *definitions = p; if (move == DOWN) _asn1_set_down (p_last, p); else if (move == RIGHT) _asn1_set_right (p_last, p); p_last = p; if (type & CONST_DOWN) move = DOWN; else if (type & CONST_RIGHT) move = RIGHT; else { while (1) { if (p_last == *definitions) break; p_last = _asn1_find_up (p_last); if (p_last == NULL) break; if (p_last->type & CONST_RIGHT) { p_last->type &= ~CONST_RIGHT; move = RIGHT; break; } } /* while */ } k++; } /* while */ if (p_last == *definitions) { result = _asn1_check_identifier (*definitions); if (result == ASN1_SUCCESS) { _asn1_change_integer_value (*definitions); _asn1_expand_object_id (*definitions); } } else { result = ASN1_ARRAY_ERROR; } if (errorDescription != NULL) { if (result == ASN1_IDENTIFIER_NOT_FOUND) { Estrcpy (errorDescription, ":: identifier '"); Estrcat (errorDescription, _asn1_identifierMissing); Estrcat (errorDescription, "' not found"); } else errorDescription[0] = 0; } if (result != ASN1_SUCCESS) { _asn1_delete_list_and_nodes (); *definitions = NULL; } else _asn1_delete_list (); return result; } /** * asn1_delete_structure: * @structure: pointer to the structure that you want to delete. * * Deletes the structure *@structure. At the end, *@structure is set * to NULL. * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * *@structure was NULL. **/ int asn1_delete_structure (asn1_node * structure) { return asn1_delete_structure2(structure, 0); } /** * asn1_delete_structure2: * @structure: pointer to the structure that you want to delete. * @flags: additional flags (see %ASN1_DELETE_FLAG) * * Deletes the structure *@structure. At the end, *@structure is set * to NULL. * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * *@structure was NULL. **/ int asn1_delete_structure2 (asn1_node * structure, unsigned int flags) { asn1_node p, p2, p3; if (*structure == NULL) return ASN1_ELEMENT_NOT_FOUND; p = *structure; while (p) { if (p->down) { p = p->down; } else { /* no down */ p2 = p->right; if (p != *structure) { p3 = _asn1_find_up (p); _asn1_set_down (p3, p2); _asn1_remove_node (p, flags); p = p3; } else { /* p==root */ p3 = _asn1_find_left (p); if (!p3) { p3 = _asn1_find_up (p); if (p3) _asn1_set_down (p3, p2); else { if (p->right) p->right->left = NULL; } } else _asn1_set_right (p3, p2); _asn1_remove_node (p, flags); p = NULL; } } } *structure = NULL; return ASN1_SUCCESS; } /** * asn1_delete_element: * @structure: pointer to the structure that contains the element you * want to delete. * @element_name: element's name you want to delete. * * Deletes the element named *@element_name inside *@structure. * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * the @element_name was not found. **/ int asn1_delete_element (asn1_node structure, const char *element_name) { asn1_node p2, p3, source_node; source_node = asn1_find_node (structure, element_name); if (source_node == NULL) return ASN1_ELEMENT_NOT_FOUND; p2 = source_node->right; p3 = _asn1_find_left (source_node); if (!p3) { p3 = _asn1_find_up (source_node); if (p3) _asn1_set_down (p3, p2); else if (source_node->right) source_node->right->left = NULL; } else _asn1_set_right (p3, p2); return asn1_delete_structure (&source_node); } asn1_node _asn1_copy_structure3 (asn1_node source_node) { asn1_node dest_node, p_s, p_d, p_d_prev; int move; if (source_node == NULL) return NULL; dest_node = _asn1_add_single_node (source_node->type); p_s = source_node; p_d = dest_node; move = DOWN; do { if (move != UP) { if (p_s->name[0] != 0) _asn1_cpy_name (p_d, p_s); if (p_s->value) _asn1_set_value (p_d, p_s->value, p_s->value_len); if (p_s->down) { p_s = p_s->down; p_d_prev = p_d; p_d = _asn1_add_single_node (p_s->type); _asn1_set_down (p_d_prev, p_d); continue; } } if (p_s == source_node) break; if (p_s->right) { move = RIGHT; p_s = p_s->right; p_d_prev = p_d; p_d = _asn1_add_single_node (p_s->type); _asn1_set_right (p_d_prev, p_d); } else { move = UP; p_s = _asn1_find_up (p_s); p_d = _asn1_find_up (p_d); } } while (p_s != source_node); return dest_node; } static asn1_node _asn1_copy_structure2 (asn1_node root, const char *source_name) { asn1_node source_node; source_node = asn1_find_node (root, source_name); return _asn1_copy_structure3 (source_node); } static int _asn1_type_choice_config (asn1_node node) { asn1_node p, p2, p3, p4; int move, tlen; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node; move = DOWN; while (!((p == node) && (move == UP))) { if (move != UP) { if ((type_field (p->type) == ASN1_ETYPE_CHOICE) && (p->type & CONST_TAG)) { p2 = p->down; while (p2) { if (type_field (p2->type) != ASN1_ETYPE_TAG) { p2->type |= CONST_TAG; p3 = _asn1_find_left (p2); while (p3) { if (type_field (p3->type) == ASN1_ETYPE_TAG) { p4 = _asn1_add_single_node (p3->type); tlen = _asn1_strlen (p3->value); if (tlen > 0) _asn1_set_value (p4, p3->value, tlen + 1); _asn1_set_right (p4, p2->down); _asn1_set_down (p2, p4); } p3 = _asn1_find_left (p3); } } p2 = p2->right; } p->type &= ~(CONST_TAG); p2 = p->down; while (p2) { p3 = p2->right; if (type_field (p2->type) == ASN1_ETYPE_TAG) asn1_delete_structure (&p2); p2 = p3; } } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_find_up (p); } return ASN1_SUCCESS; } static int _asn1_expand_identifier (asn1_node * node, asn1_node root) { asn1_node p, p2, p3; char name2[ASN1_MAX_NAME_SIZE + 2]; int move; if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = *node; move = DOWN; while (!((p == *node) && (move == UP))) { if (move != UP) { if (type_field (p->type) == ASN1_ETYPE_IDENTIFIER) { snprintf (name2, sizeof (name2), "%s.%s", root->name, p->value); p2 = _asn1_copy_structure2 (root, name2); if (p2 == NULL) { return ASN1_IDENTIFIER_NOT_FOUND; } _asn1_cpy_name (p2, p); p2->right = p->right; p2->left = p->left; if (p->right) p->right->left = p2; p3 = p->down; if (p3) { while (p3->right) p3 = p3->right; _asn1_set_right (p3, p2->down); _asn1_set_down (p2, p->down); } p3 = _asn1_find_left (p); if (p3) _asn1_set_right (p3, p2); else { p3 = _asn1_find_up (p); if (p3) _asn1_set_down (p3, p2); else { p2->left = NULL; } } if (p->type & CONST_SIZE) p2->type |= CONST_SIZE; if (p->type & CONST_TAG) p2->type |= CONST_TAG; if (p->type & CONST_OPTION) p2->type |= CONST_OPTION; if (p->type & CONST_DEFAULT) p2->type |= CONST_DEFAULT; if (p->type & CONST_SET) p2->type |= CONST_SET; if (p->type & CONST_NOT_USED) p2->type |= CONST_NOT_USED; if (p == *node) *node = p2; _asn1_remove_node (p, 0); p = p2; move = DOWN; continue; } move = DOWN; } else move = RIGHT; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (p == *node) { move = UP; continue; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_find_up (p); } return ASN1_SUCCESS; } /** * asn1_create_element: * @definitions: pointer to the structure returned by "parser_asn1" function * @source_name: the name of the type of the new structure (must be * inside p_structure). * @element: pointer to the structure created. * * Creates a structure of type @source_name. Example using * "pkix.asn": * * rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); * * Returns: %ASN1_SUCCESS if creation OK, %ASN1_ELEMENT_NOT_FOUND if * @source_name is not known. **/ int asn1_create_element (asn1_node definitions, const char *source_name, asn1_node * element) { asn1_node dest_node; int res; dest_node = _asn1_copy_structure2 (definitions, source_name); if (dest_node == NULL) return ASN1_ELEMENT_NOT_FOUND; _asn1_set_name (dest_node, ""); res = _asn1_expand_identifier (&dest_node, definitions); _asn1_type_choice_config (dest_node); *element = dest_node; return res; } /** * asn1_print_structure: * @out: pointer to the output file (e.g. stdout). * @structure: pointer to the structure that you want to visit. * @name: an element of the structure * @mode: specify how much of the structure to print, can be * %ASN1_PRINT_NAME, %ASN1_PRINT_NAME_TYPE, * %ASN1_PRINT_NAME_TYPE_VALUE, or %ASN1_PRINT_ALL. * * Prints on the @out file descriptor the structure's tree starting * from the @name element inside the structure @structure. **/ void asn1_print_structure (FILE * out, asn1_node structure, const char *name, int mode) { asn1_node p, root; int k, indent = 0, len, len2, len3; if (out == NULL) return; root = asn1_find_node (structure, name); if (root == NULL) return; p = root; while (p) { if (mode == ASN1_PRINT_ALL) { for (k = 0; k < indent; k++) fprintf (out, " "); fprintf (out, "name:"); if (p->name[0] != 0) fprintf (out, "%s ", p->name); else fprintf (out, "NULL "); } else { switch (type_field (p->type)) { case ASN1_ETYPE_CONSTANT: case ASN1_ETYPE_TAG: case ASN1_ETYPE_SIZE: break; default: for (k = 0; k < indent; k++) fprintf (out, " "); fprintf (out, "name:"); if (p->name[0] != 0) fprintf (out, "%s ", p->name); else fprintf (out, "NULL "); } } if (mode != ASN1_PRINT_NAME) { unsigned type = type_field (p->type); switch (type) { case ASN1_ETYPE_CONSTANT: if (mode == ASN1_PRINT_ALL) fprintf (out, "type:CONST"); break; case ASN1_ETYPE_TAG: if (mode == ASN1_PRINT_ALL) fprintf (out, "type:TAG"); break; case ASN1_ETYPE_SIZE: if (mode == ASN1_PRINT_ALL) fprintf (out, "type:SIZE"); break; case ASN1_ETYPE_DEFAULT: fprintf (out, "type:DEFAULT"); break; case ASN1_ETYPE_IDENTIFIER: fprintf (out, "type:IDENTIFIER"); break; case ASN1_ETYPE_ANY: fprintf (out, "type:ANY"); break; case ASN1_ETYPE_CHOICE: fprintf (out, "type:CHOICE"); break; case ASN1_ETYPE_DEFINITIONS: fprintf (out, "type:DEFINITIONS"); break; CASE_HANDLED_ETYPES: fprintf (out, "%s", _asn1_tags[type].desc); break; default: break; } } if ((mode == ASN1_PRINT_NAME_TYPE_VALUE) || (mode == ASN1_PRINT_ALL)) { switch (type_field (p->type)) { case ASN1_ETYPE_CONSTANT: if (mode == ASN1_PRINT_ALL) if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_TAG: if (mode == ASN1_PRINT_ALL) if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_SIZE: if (mode == ASN1_PRINT_ALL) if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_DEFAULT: if (p->value) fprintf (out, " value:%s", p->value); else if (p->type & CONST_TRUE) fprintf (out, " value:TRUE"); else if (p->type & CONST_FALSE) fprintf (out, " value:FALSE"); break; case ASN1_ETYPE_IDENTIFIER: if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_INTEGER: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); fprintf (out, " value:0x"); if (len > 0) for (k = 0; k < len; k++) fprintf (out, "%02x", (p->value)[k + len2]); } break; case ASN1_ETYPE_ENUMERATED: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); fprintf (out, " value:0x"); if (len > 0) for (k = 0; k < len; k++) fprintf (out, "%02x", (p->value)[k + len2]); } break; case ASN1_ETYPE_BOOLEAN: if (p->value) { if (p->value[0] == 'T') fprintf (out, " value:TRUE"); else if (p->value[0] == 'F') fprintf (out, " value:FALSE"); } break; case ASN1_ETYPE_BIT_STRING: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); if (len > 0) { fprintf (out, " value(%i):", (len - 1) * 8 - (p->value[len2])); for (k = 1; k < len; k++) fprintf (out, "%02x", (p->value)[k + len2]); } } break; case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: if (p->value) { fprintf (out, " value:"); for (k = 0; k < p->value_len; k++) fprintf (out, "%c", (p->value)[k]); } break; case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); fprintf (out, " value:"); if (len > 0) for (k = 0; k < len; k++) fprintf (out, "%c", (p->value)[k + len2]); } break; case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_OCTET_STRING: if (p->value) { len2 = -1; len = asn1_get_length_der (p->value, p->value_len, &len2); fprintf (out, " value:"); if (len > 0) for (k = 0; k < len; k++) fprintf (out, "%02x", (p->value)[k + len2]); } break; case ASN1_ETYPE_OBJECT_ID: if (p->value) fprintf (out, " value:%s", p->value); break; case ASN1_ETYPE_ANY: if (p->value) { len3 = -1; len2 = asn1_get_length_der (p->value, p->value_len, &len3); fprintf (out, " value:"); if (len2 > 0) for (k = 0; k < len2; k++) fprintf (out, "%02x", (p->value)[k + len3]); } break; case ASN1_ETYPE_SET: case ASN1_ETYPE_SET_OF: case ASN1_ETYPE_CHOICE: case ASN1_ETYPE_DEFINITIONS: case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_NULL: break; default: break; } } if (mode == ASN1_PRINT_ALL) { if (p->type & 0x1FFFFF00) { fprintf (out, " attr:"); if (p->type & CONST_UNIVERSAL) fprintf (out, "UNIVERSAL,"); if (p->type & CONST_PRIVATE) fprintf (out, "PRIVATE,"); if (p->type & CONST_APPLICATION) fprintf (out, "APPLICATION,"); if (p->type & CONST_EXPLICIT) fprintf (out, "EXPLICIT,"); if (p->type & CONST_IMPLICIT) fprintf (out, "IMPLICIT,"); if (p->type & CONST_TAG) fprintf (out, "TAG,"); if (p->type & CONST_DEFAULT) fprintf (out, "DEFAULT,"); if (p->type & CONST_TRUE) fprintf (out, "TRUE,"); if (p->type & CONST_FALSE) fprintf (out, "FALSE,"); if (p->type & CONST_LIST) fprintf (out, "LIST,"); if (p->type & CONST_MIN_MAX) fprintf (out, "MIN_MAX,"); if (p->type & CONST_OPTION) fprintf (out, "OPTION,"); if (p->type & CONST_1_PARAM) fprintf (out, "1_PARAM,"); if (p->type & CONST_SIZE) fprintf (out, "SIZE,"); if (p->type & CONST_DEFINED_BY) fprintf (out, "DEF_BY,"); if (p->type & CONST_GENERALIZED) fprintf (out, "GENERALIZED,"); if (p->type & CONST_UTC) fprintf (out, "UTC,"); if (p->type & CONST_SET) fprintf (out, "SET,"); if (p->type & CONST_NOT_USED) fprintf (out, "NOT_USED,"); if (p->type & CONST_ASSIGN) fprintf (out, "ASSIGNMENT,"); } } if (mode == ASN1_PRINT_ALL) { fprintf (out, "\n"); } else { switch (type_field (p->type)) { case ASN1_ETYPE_CONSTANT: case ASN1_ETYPE_TAG: case ASN1_ETYPE_SIZE: break; default: fprintf (out, "\n"); } } if (p->down) { p = p->down; indent += 2; } else if (p == root) { p = NULL; break; } else if (p->right) p = p->right; else { while (1) { p = _asn1_find_up (p); if (p == root) { p = NULL; break; } indent -= 2; if (p->right) { p = p->right; break; } } } } } /** * asn1_number_of_elements: * @element: pointer to the root of an ASN1 structure. * @name: the name of a sub-structure of ROOT. * @num: pointer to an integer where the result will be stored * * Counts the number of elements of a sub-structure called NAME with * names equal to "?1","?2", ... * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * @name is not known, %ASN1_GENERIC_ERROR if pointer @num is %NULL. **/ int asn1_number_of_elements (asn1_node element, const char *name, int *num) { asn1_node node, p; if (num == NULL) return ASN1_GENERIC_ERROR; *num = 0; node = asn1_find_node (element, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node->down; while (p) { if (p->name[0] == '?') (*num)++; p = p->right; } return ASN1_SUCCESS; } /** * asn1_find_structure_from_oid: * @definitions: ASN1 definitions * @oidValue: value of the OID to search (e.g. "1.2.3.4"). * * Search the structure that is defined just after an OID definition. * * Returns: %NULL when @oidValue not found, otherwise the pointer to a * constant string that contains the element name defined just after * the OID. **/ const char * asn1_find_structure_from_oid (asn1_node definitions, const char *oidValue) { char definitionsName[ASN1_MAX_NAME_SIZE], name[2 * ASN1_MAX_NAME_SIZE + 1]; char value[ASN1_MAX_NAME_SIZE]; asn1_node p; int len; int result; if ((definitions == NULL) || (oidValue == NULL)) return NULL; /* ASN1_ELEMENT_NOT_FOUND; */ strcpy (definitionsName, definitions->name); strcat (definitionsName, "."); /* search the OBJECT_ID into definitions */ p = definitions->down; while (p) { if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) && (p->type & CONST_ASSIGN)) { strcpy (name, definitionsName); strcat (name, p->name); len = ASN1_MAX_NAME_SIZE; result = asn1_read_value (definitions, name, value, &len); if ((result == ASN1_SUCCESS) && (!strcmp (oidValue, value))) { p = p->right; if (p == NULL) /* reach the end of ASN1 definitions */ return NULL; /* ASN1_ELEMENT_NOT_FOUND; */ return p->name; } } p = p->right; } return NULL; /* ASN1_ELEMENT_NOT_FOUND; */ } /** * asn1_copy_node: * @dst: Destination asn1_node node. * @dst_name: Field name in destination node. * @src: Source asn1_node node. * @src_name: Field name in source node. * * Create a deep copy of a asn1_node variable. * * Returns: Return %ASN1_SUCCESS on success. **/ int asn1_copy_node (asn1_node dst, const char *dst_name, asn1_node src, const char *src_name) { /* FIXME: rewrite using copy_structure(). * It seems quite hard to do. */ int result; asn1_node dst_node; void *data = NULL; int size = 0; result = asn1_der_coding (src, src_name, NULL, &size, NULL); if (result != ASN1_MEM_ERROR) return result; data = malloc (size); if (data == NULL) return ASN1_MEM_ERROR; result = asn1_der_coding (src, src_name, data, &size, NULL); if (result != ASN1_SUCCESS) { free (data); return result; } dst_node = asn1_find_node (dst, dst_name); if (dst_node == NULL) { free (data); return ASN1_ELEMENT_NOT_FOUND; } result = asn1_der_decoding (&dst_node, data, size, NULL); free (data); return result; } libtasn1-3.4/lib/ASN1.c0000664000000000000000000031217112244720630011407 00000000000000/* A Bison parser, made by GNU Bison 2.7. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2012 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 "2.7" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Substitute the variable and function names. */ #define yyparse _asn1_yyparse #define yylex _asn1_yylex #define yyerror _asn1_yyerror #define yylval _asn1_yylval #define yychar _asn1_yychar #define yydebug _asn1_yydebug #define yynerrs _asn1_yynerrs /* Copy the first part of user declarations. */ /* Line 371 of yacc.c */ #line 1 "ASN1.y" /* * Copyright (C) 2001-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ /*****************************************************/ /* File: x509_ASN.y */ /* Description: input file for 'bison' program. */ /* The output file is a parser (in C language) for */ /* ASN.1 syntax */ /*****************************************************/ #include #include #include #include static FILE *file_asn1; /* Pointer to file to parse */ static int result_parse = 0; /* result of the parser algorithm */ static asn1_node p_tree; /* pointer to the root of the structure created by the parser*/ static unsigned int line_number; /* line number describing the parser position inside the file */ static char last_error[ASN1_MAX_ERROR_DESCRIPTION_SIZE] = ""; static char last_error_token[ASN1_MAX_ERROR_DESCRIPTION_SIZE+1] = ""; /* used when expected errors occur */ static char last_token[ASN1_MAX_NAME_SIZE+1] = ""; /* last token find in the file to parse before the 'parse error' */ extern char _asn1_identifierMissing[]; static const char *file_name; /* file to parse */ static void _asn1_yyerror (const char *); static int _asn1_yylex(void); /* Line 371 of yacc.c */ #line 131 "ASN1.c" # ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus # define YY_NULL nullptr # else # define YY_NULL 0 # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 1 #endif /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int _asn1_yydebug; #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { ASSIG = 258, NUM = 259, IDENTIFIER = 260, OPTIONAL = 261, INTEGER = 262, SIZE = 263, OCTET = 264, STRING = 265, SEQUENCE = 266, BIT = 267, UNIVERSAL = 268, PRIVATE = 269, APPLICATION = 270, DEFAULT = 271, CHOICE = 272, OF = 273, OBJECT = 274, STR_IDENTIFIER = 275, BOOLEAN = 276, ASN1_TRUE = 277, ASN1_FALSE = 278, TOKEN_NULL = 279, ANY = 280, DEFINED = 281, BY = 282, SET = 283, EXPLICIT = 284, IMPLICIT = 285, DEFINITIONS = 286, TAGS = 287, BEGIN = 288, END = 289, UTCTime = 290, GeneralizedTime = 291, GeneralString = 292, NumericString = 293, IA5String = 294, TeletexString = 295, PrintableString = 296, UniversalString = 297, BMPString = 298, UTF8String = 299, VisibleString = 300, FROM = 301, IMPORTS = 302, ENUMERATED = 303 }; #endif /* Tokens. */ #define ASSIG 258 #define NUM 259 #define IDENTIFIER 260 #define OPTIONAL 261 #define INTEGER 262 #define SIZE 263 #define OCTET 264 #define STRING 265 #define SEQUENCE 266 #define BIT 267 #define UNIVERSAL 268 #define PRIVATE 269 #define APPLICATION 270 #define DEFAULT 271 #define CHOICE 272 #define OF 273 #define OBJECT 274 #define STR_IDENTIFIER 275 #define BOOLEAN 276 #define ASN1_TRUE 277 #define ASN1_FALSE 278 #define TOKEN_NULL 279 #define ANY 280 #define DEFINED 281 #define BY 282 #define SET 283 #define EXPLICIT 284 #define IMPLICIT 285 #define DEFINITIONS 286 #define TAGS 287 #define BEGIN 288 #define END 289 #define UTCTime 290 #define GeneralizedTime 291 #define GeneralString 292 #define NumericString 293 #define IA5String 294 #define TeletexString 295 #define PrintableString 296 #define UniversalString 297 #define BMPString 298 #define UTF8String 299 #define VisibleString 300 #define FROM 301 #define IMPORTS 302 #define ENUMERATED 303 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 387 of yacc.c */ #line 62 "ASN1.y" unsigned int constant; char str[ASN1_MAX_NAME_SIZE+1]; asn1_node node; /* Line 387 of yacc.c */ #line 274 "ASN1.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE _asn1_yylval; #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int _asn1_yyparse (void *YYPARSE_PARAM); #else int _asn1_yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int _asn1_yyparse (void); #else int _asn1_yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /* Copy the second part of user declarations. */ /* Line 390 of yacc.c */ #line 302 "ASN1.c" #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; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int 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 && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # 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 /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) #else # define YYUSE(E) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(N) (N) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #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 && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # 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 (YYID (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 && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) 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 (YYID (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 (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 223 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 60 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 52 /* YYNRULES -- Number of rules. */ #define YYNRULES 128 /* YYNRULES -- Number of states. */ #define YYNSTATES 223 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 303 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 51, 52, 2, 49, 53, 50, 59, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 54, 2, 55, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 57, 56, 58, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 12, 14, 17, 20, 22, 24, 26, 28, 30, 33, 35, 37, 39, 43, 48, 50, 54, 56, 61, 63, 66, 68, 70, 72, 76, 81, 83, 86, 89, 92, 95, 98, 100, 104, 106, 111, 116, 124, 126, 128, 130, 135, 143, 145, 149, 151, 154, 156, 159, 161, 164, 166, 169, 171, 174, 176, 179, 181, 184, 186, 189, 191, 194, 197, 201, 206, 208, 212, 215, 219, 225, 230, 233, 235, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 285, 287, 290, 293, 296, 298, 302, 307, 311, 316, 321, 325, 330, 335, 337, 342, 346, 350, 358, 365, 370, 372, 374, 376, 379, 384, 388, 390, 392 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 61, 0, -1, 110, 31, 111, 32, 3, 33, 109, 34, -1, 4, -1, 49, 4, -1, 50, 4, -1, 62, -1, 63, -1, 4, -1, 5, -1, 4, -1, 50, 4, -1, 5, -1, 64, -1, 5, -1, 51, 64, 52, -1, 5, 51, 64, 52, -1, 68, -1, 69, 53, 68, -1, 65, -1, 5, 51, 4, 52, -1, 70, -1, 71, 70, -1, 13, -1, 14, -1, 15, -1, 54, 4, 55, -1, 54, 72, 4, 55, -1, 73, -1, 73, 29, -1, 73, 30, -1, 16, 67, -1, 16, 22, -1, 16, 23, -1, 64, -1, 76, 56, 64, -1, 7, -1, 7, 57, 69, 58, -1, 77, 51, 76, 52, -1, 77, 51, 66, 59, 59, 66, 52, -1, 21, -1, 35, -1, 36, -1, 8, 51, 65, 52, -1, 8, 51, 65, 59, 59, 65, 52, -1, 80, -1, 51, 80, 52, -1, 37, -1, 37, 81, -1, 38, -1, 38, 81, -1, 39, -1, 39, 81, -1, 40, -1, 40, 81, -1, 41, -1, 41, 81, -1, 42, -1, 42, 81, -1, 43, -1, 43, 81, -1, 44, -1, 44, 81, -1, 45, -1, 45, 81, -1, 9, 10, -1, 9, 10, 81, -1, 5, 51, 4, 52, -1, 92, -1, 93, 53, 92, -1, 12, 10, -1, 12, 10, 81, -1, 12, 10, 57, 93, 58, -1, 48, 57, 93, 58, -1, 19, 20, -1, 5, -1, 5, 81, -1, 77, -1, 95, -1, 78, -1, 79, -1, 91, -1, 94, -1, 82, -1, 83, -1, 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 89, -1, 90, -1, 102, -1, 96, -1, 104, -1, 105, -1, 103, -1, 24, -1, 97, -1, 74, 97, -1, 98, -1, 98, 75, -1, 98, 6, -1, 5, 99, -1, 100, -1, 101, 53, 100, -1, 11, 57, 101, 58, -1, 11, 18, 97, -1, 11, 81, 18, 97, -1, 28, 57, 101, 58, -1, 28, 18, 97, -1, 28, 81, 18, 97, -1, 17, 57, 101, 58, -1, 25, -1, 25, 26, 27, 5, -1, 5, 3, 98, -1, 1, 3, 98, -1, 5, 19, 20, 3, 57, 71, 58, -1, 5, 5, 3, 57, 71, 58, -1, 5, 7, 3, 64, -1, 106, -1, 107, -1, 108, -1, 109, 108, -1, 5, 57, 71, 58, -1, 5, 57, 58, -1, 5, -1, 29, -1, 30, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 135, 135, 148, 149, 152, 155, 156, 159, 160, 163, 164, 165, 168, 169, 172, 174, 179, 180, 184, 186, 191, 192, 196, 197, 198, 201, 203, 207, 208, 209, 212, 214, 215, 219, 220, 224, 225, 227, 228, 235, 238, 239, 242, 244, 250, 251, 254, 255, 259, 260, 264, 265, 269, 270, 274, 275, 279, 280, 284, 285, 289, 290, 294, 295, 299, 300, 304, 309, 310, 314, 315, 316, 321, 327, 330, 332, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 358, 359, 364, 365, 368, 371, 374, 375, 379, 381, 383, 388, 390, 392, 397, 401, 402, 407, 409, 412, 416, 421, 427, 428, 431, 432, 436, 439, 441, 465, 466 }; #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", "\"::=\"", "NUM", "IDENTIFIER", "OPTIONAL", "INTEGER", "SIZE", "OCTET", "STRING", "SEQUENCE", "BIT", "UNIVERSAL", "PRIVATE", "APPLICATION", "DEFAULT", "CHOICE", "OF", "OBJECT", "STR_IDENTIFIER", "BOOLEAN", "ASN1_TRUE", "ASN1_FALSE", "TOKEN_NULL", "ANY", "DEFINED", "BY", "SET", "EXPLICIT", "IMPLICIT", "DEFINITIONS", "TAGS", "BEGIN", "END", "UTCTime", "GeneralizedTime", "GeneralString", "NumericString", "IA5String", "TeletexString", "PrintableString", "UniversalString", "BMPString", "UTF8String", "VisibleString", "FROM", "IMPORTS", "ENUMERATED", "'+'", "'-'", "'('", "')'", "','", "'['", "']'", "'|'", "'{'", "'}'", "'.'", "$accept", "definitions", "pos_num", "neg_num", "pos_neg_num", "num_identifier", "int_identifier", "pos_neg_identifier", "constant", "constant_list", "obj_constant", "obj_constant_list", "class", "tag_type", "tag", "default", "pos_neg_list", "integer_def", "boolean_def", "Time", "size_def2", "size_def", "generalstring_def", "numericstring_def", "ia5string_def", "teletexstring_def", "printablestring_def", "universalstring_def", "bmpstring_def", "utf8string_def", "visiblestring_def", "octet_string_def", "bit_element", "bit_element_list", "bit_string_def", "enumerated_def", "object_def", "type_assig_right", "type_assig_right_tag", "type_assig_right_tag_default", "type_assig", "type_assig_list", "sequence_def", "set_def", "choise_def", "any_def", "type_def", "constant_def", "type_constant", "type_constant_list", "definitions_id", "explicit_implicit", YY_NULL }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ 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, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 43, 45, 40, 41, 44, 91, 93, 124, 123, 125, 46 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 60, 61, 62, 62, 63, 64, 64, 65, 65, 66, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 72, 73, 73, 74, 74, 74, 75, 75, 75, 76, 76, 77, 77, 77, 77, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 93, 93, 94, 94, 94, 95, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 99, 99, 99, 100, 101, 101, 102, 102, 102, 103, 103, 103, 104, 105, 105, 106, 106, 107, 107, 107, 108, 108, 109, 109, 110, 110, 110, 111, 111 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 8, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 4, 1, 3, 1, 4, 1, 2, 1, 1, 1, 3, 4, 1, 2, 2, 2, 2, 2, 1, 3, 1, 4, 4, 7, 1, 1, 1, 4, 7, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 3, 4, 1, 3, 2, 3, 5, 4, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 3, 4, 3, 4, 4, 3, 4, 4, 1, 4, 3, 3, 7, 6, 4, 1, 1, 1, 2, 4, 3, 1, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 0, 126, 0, 0, 0, 1, 0, 8, 9, 125, 19, 21, 0, 127, 128, 0, 0, 124, 22, 0, 0, 0, 20, 0, 0, 0, 120, 121, 122, 0, 0, 0, 0, 0, 0, 2, 123, 75, 36, 0, 0, 0, 0, 0, 40, 97, 113, 0, 41, 42, 47, 49, 51, 53, 55, 57, 59, 61, 63, 0, 0, 28, 0, 77, 79, 80, 83, 84, 85, 86, 87, 88, 89, 90, 91, 81, 82, 78, 93, 98, 116, 92, 96, 94, 95, 115, 0, 0, 0, 0, 0, 45, 76, 0, 65, 0, 0, 0, 70, 0, 74, 0, 0, 0, 0, 48, 50, 52, 54, 56, 58, 60, 62, 64, 0, 0, 23, 24, 25, 0, 29, 30, 99, 0, 0, 3, 0, 0, 6, 7, 119, 0, 0, 0, 0, 0, 17, 0, 66, 107, 0, 104, 0, 0, 0, 71, 0, 0, 110, 0, 0, 0, 68, 0, 26, 0, 3, 12, 0, 34, 0, 0, 0, 4, 5, 0, 9, 0, 46, 0, 0, 0, 37, 100, 103, 0, 106, 108, 0, 112, 114, 109, 111, 0, 0, 73, 27, 5, 0, 38, 0, 118, 0, 43, 0, 0, 15, 18, 102, 0, 101, 105, 72, 0, 69, 0, 35, 117, 0, 16, 14, 32, 33, 13, 31, 67, 10, 0, 0, 0, 11, 39, 44 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 2, 128, 129, 130, 10, 160, 214, 136, 137, 11, 12, 119, 61, 62, 200, 161, 63, 64, 65, 91, 92, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 152, 153, 76, 77, 78, 79, 80, 174, 141, 142, 81, 82, 83, 84, 26, 27, 28, 29, 3, 15 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -129 static const yytype_int16 yypact[] = { 36, -7, 74, 22, 3, -129, 26, -129, 34, -129, -129, -129, 5, -129, -129, 55, 89, -129, -129, 97, 57, 101, -129, 122, 141, 132, -129, -129, -129, 32, 77, 77, 152, 165, 150, -129, -129, 6, 119, 167, 18, 168, 124, 159, -129, -129, 156, 21, -129, -129, 6, 6, 6, 6, 6, 6, 6, 6, 6, 126, 30, 38, 121, 133, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, 128, 58, 183, 136, 180, -129, -129, 20, 6, 121, 184, 172, -3, 184, -129, 164, 121, 184, 174, -129, -129, -129, -129, -129, -129, -129, -129, -129, 188, 139, -129, -129, -129, 191, -129, -129, -129, 42, 149, -129, 192, 193, -129, -129, -129, 142, 169, 146, 151, 58, -129, 53, -129, -129, 77, -129, 71, 121, 188, -129, 83, 195, -129, 90, 121, 153, -129, 94, -129, 148, 147, -129, 197, -129, 154, 43, 7, -129, -129, 149, -129, -21, -129, 58, 155, 20, -129, 24, -129, 184, -129, -129, 114, -129, -129, -129, -129, 201, 188, -129, -129, 157, 158, -129, 58, -129, 23, -129, 160, 162, -129, -129, -129, 54, -129, -129, -129, 163, -129, 47, -129, -129, 169, -129, -129, -129, -129, -129, -129, -129, -129, 204, 166, 170, -129, -129, -129 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -129, -129, -129, -129, -120, -128, 4, -129, 39, -129, -12, -92, -129, -129, -129, -129, -129, -129, -129, -129, 130, -34, -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, 27, 68, -129, -129, -129, -60, -30, -129, 46, 72, -129, -129, -129, -129, -129, -129, 194, -129, -129, -129 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -12 static const yytype_int16 yytable[] = { 18, 85, 122, 159, 167, 89, 97, 7, 8, 7, 8, 7, 8, 104, 89, 170, 105, 106, 107, 108, 109, 110, 111, 112, 113, 134, 89, 7, 8, 89, 198, 193, 162, 24, 115, 139, 95, 25, 194, 102, 199, 1, 148, 116, 117, 118, 156, 157, 90, 195, 4, 216, 157, 6, 144, 13, 14, 90, 125, 210, 138, 9, 125, 17, 145, 191, 35, 120, 121, 90, 206, 135, 90, 192, 5, 96, 211, 212, 103, 213, 219, 207, 37, 177, 38, 16, 39, 19, 40, 41, 182, 126, 158, 20, 42, 189, 43, 217, 44, 190, 21, 45, 46, 126, 127, 47, 171, 126, 127, 22, 173, 172, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 24, 175, 59, 37, 25, 38, 176, 39, 60, 40, 41, 23, 31, 175, 32, 42, 33, 43, 179, 44, 175, 30, 45, 46, 184, 181, 47, 18, 34, 185, 7, 8, 86, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 184, 87, 59, 88, 146, 202, 7, 166, 149, 93, 94, 98, 100, 18, 99, 101, 114, 123, 124, 131, 132, 89, 140, 143, 147, 150, 151, 154, 155, 163, 164, 168, 165, 180, 187, 169, 186, 183, 203, -10, 196, 220, 218, 197, 204, 178, 188, 209, 215, -11, 205, 221, 208, 133, 201, 222, 36 }; #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-129))) #define yytable_value_is_error(Yytable_value) \ YYID (0) static const yytype_uint8 yycheck[] = { 12, 31, 62, 123, 132, 8, 40, 4, 5, 4, 5, 4, 5, 47, 8, 135, 50, 51, 52, 53, 54, 55, 56, 57, 58, 5, 8, 4, 5, 8, 6, 52, 124, 1, 4, 95, 18, 5, 59, 18, 16, 5, 102, 13, 14, 15, 4, 5, 51, 169, 57, 4, 5, 31, 57, 29, 30, 51, 4, 5, 94, 58, 4, 58, 98, 58, 34, 29, 30, 51, 190, 51, 51, 165, 0, 57, 22, 23, 57, 199, 208, 58, 5, 143, 7, 51, 9, 32, 11, 12, 150, 49, 50, 4, 17, 52, 19, 50, 21, 56, 3, 24, 25, 49, 50, 28, 53, 49, 50, 52, 140, 58, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 1, 53, 48, 5, 5, 7, 58, 9, 54, 11, 12, 33, 3, 53, 5, 17, 7, 19, 58, 21, 53, 3, 24, 25, 53, 58, 28, 162, 19, 58, 4, 5, 3, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 53, 3, 48, 20, 99, 58, 4, 5, 103, 57, 10, 10, 20, 192, 57, 26, 57, 51, 57, 3, 51, 8, 5, 18, 27, 18, 5, 55, 4, 4, 4, 52, 57, 5, 4, 51, 55, 51, 4, 59, 52, 4, 205, 171, 184, 144, 59, 52, 52, 59, 59, 52, 59, 90, 175, 52, 29 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 5, 61, 110, 57, 0, 31, 4, 5, 58, 65, 70, 71, 29, 30, 111, 51, 58, 70, 32, 4, 3, 52, 33, 1, 5, 106, 107, 108, 109, 3, 3, 5, 7, 19, 34, 108, 5, 7, 9, 11, 12, 17, 19, 21, 24, 25, 28, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 48, 54, 73, 74, 77, 78, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 94, 95, 96, 97, 98, 102, 103, 104, 105, 98, 3, 3, 20, 8, 51, 80, 81, 57, 10, 18, 57, 81, 10, 57, 20, 26, 18, 57, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 57, 4, 13, 14, 15, 72, 29, 30, 97, 51, 57, 4, 49, 50, 62, 63, 64, 3, 51, 80, 5, 51, 68, 69, 81, 97, 5, 100, 101, 18, 57, 81, 101, 27, 97, 101, 18, 5, 92, 93, 55, 4, 4, 5, 50, 64, 66, 76, 71, 4, 4, 57, 5, 65, 52, 51, 64, 53, 58, 98, 99, 53, 58, 97, 93, 58, 5, 58, 97, 51, 53, 58, 55, 4, 59, 52, 56, 58, 71, 52, 59, 64, 52, 68, 6, 16, 75, 100, 58, 4, 92, 59, 64, 58, 59, 52, 5, 22, 23, 64, 67, 52, 4, 50, 66, 65, 4, 52, 52 }; #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 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. However, YYFAIL appears to be in use. Nevertheless, it is formally deprecated in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ #define YYFAIL goto yyerrlab #if defined YYFAIL /* This is here to suppress warnings from the GCC cpp's -Wunused-macros. Normally we don't worry about that warning, but some users do, and we want to make it easy for users to remove YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #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 (YYID (0)) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* 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 (YYID (0)) # 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 (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { FILE *yyo = yyoutput; YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", 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). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { 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 (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; 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, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (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. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { 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. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { 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_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULL; /* 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: - Assume YYFAIL is not used. It's too flawed to consider. See for details. YYERROR is fine as it does not invoke this function. - 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_NULL, 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. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* The lookahead symbol. */ int yychar; #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 /* The semantic value of the lookahead symbol. */ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { 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 1792 of yacc.c */ #line 138 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFINITIONS|(yyvsp[(3) - (8)].constant)); _asn1_set_name((yyval.node),_asn1_get_name((yyvsp[(1) - (8)].node))); _asn1_set_name((yyvsp[(1) - (8)].node),""); _asn1_set_right((yyvsp[(1) - (8)].node),(yyvsp[(7) - (8)].node)); _asn1_set_down((yyval.node),(yyvsp[(1) - (8)].node)); p_tree=(yyval.node); } break; case 3: /* Line 1792 of yacc.c */ #line 148 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(1) - (1)].str));} break; case 4: /* Line 1792 of yacc.c */ #line 149 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(2) - (2)].str));} break; case 5: /* Line 1792 of yacc.c */ #line 152 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"-%s",(yyvsp[(2) - (2)].str));} break; case 6: /* Line 1792 of yacc.c */ #line 155 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(1) - (1)].str));} break; case 7: /* Line 1792 of yacc.c */ #line 156 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(1) - (1)].str));} break; case 8: /* Line 1792 of yacc.c */ #line 159 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(1) - (1)].str));} break; case 9: /* Line 1792 of yacc.c */ #line 160 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(1) - (1)].str));} break; case 10: /* Line 1792 of yacc.c */ #line 163 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(1) - (1)].str));} break; case 11: /* Line 1792 of yacc.c */ #line 164 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"-%s",(yyvsp[(2) - (2)].str));} break; case 12: /* Line 1792 of yacc.c */ #line 165 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(1) - (1)].str));} break; case 13: /* Line 1792 of yacc.c */ #line 168 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(1) - (1)].str));} break; case 14: /* Line 1792 of yacc.c */ #line 169 "ASN1.y" {snprintf((yyval.str),sizeof((yyval.str)),"%s",(yyvsp[(1) - (1)].str));} break; case 15: /* Line 1792 of yacc.c */ #line 172 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_value((yyval.node),(yyvsp[(2) - (3)].str),strlen((yyvsp[(2) - (3)].str))+1);} break; case 16: /* Line 1792 of yacc.c */ #line 174 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name((yyval.node),(yyvsp[(1) - (4)].str)); _asn1_set_value((yyval.node),(yyvsp[(3) - (4)].str),strlen((yyvsp[(3) - (4)].str))+1);} break; case 17: /* Line 1792 of yacc.c */ #line 179 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 18: /* Line 1792 of yacc.c */ #line 180 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (3)].node); _asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (3)].node)),(yyvsp[(3) - (3)].node));} break; case 19: /* Line 1792 of yacc.c */ #line 184 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_value((yyval.node),(yyvsp[(1) - (1)].str),strlen((yyvsp[(1) - (1)].str))+1);} break; case 20: /* Line 1792 of yacc.c */ #line 186 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name((yyval.node),(yyvsp[(1) - (4)].str)); _asn1_set_value((yyval.node),(yyvsp[(3) - (4)].str),strlen((yyvsp[(3) - (4)].str))+1);} break; case 21: /* Line 1792 of yacc.c */ #line 191 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 22: /* Line 1792 of yacc.c */ #line 192 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (2)].node); _asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (2)].node)),(yyvsp[(2) - (2)].node));} break; case 23: /* Line 1792 of yacc.c */ #line 196 "ASN1.y" {(yyval.constant)=CONST_UNIVERSAL;} break; case 24: /* Line 1792 of yacc.c */ #line 197 "ASN1.y" {(yyval.constant)=CONST_PRIVATE;} break; case 25: /* Line 1792 of yacc.c */ #line 198 "ASN1.y" {(yyval.constant)=CONST_APPLICATION;} break; case 26: /* Line 1792 of yacc.c */ #line 201 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TAG); _asn1_set_value((yyval.node),(yyvsp[(2) - (3)].str),strlen((yyvsp[(2) - (3)].str))+1);} break; case 27: /* Line 1792 of yacc.c */ #line 203 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TAG | (yyvsp[(2) - (4)].constant)); _asn1_set_value((yyval.node),(yyvsp[(3) - (4)].str),strlen((yyvsp[(3) - (4)].str))+1);} break; case 28: /* Line 1792 of yacc.c */ #line 207 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 29: /* Line 1792 of yacc.c */ #line 208 "ASN1.y" {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_EXPLICIT);} break; case 30: /* Line 1792 of yacc.c */ #line 209 "ASN1.y" {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_IMPLICIT);} break; case 31: /* Line 1792 of yacc.c */ #line 212 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFAULT); _asn1_set_value((yyval.node),(yyvsp[(2) - (2)].str),strlen((yyvsp[(2) - (2)].str))+1);} break; case 32: /* Line 1792 of yacc.c */ #line 214 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_TRUE);} break; case 33: /* Line 1792 of yacc.c */ #line 215 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_DEFAULT|CONST_FALSE);} break; case 36: /* Line 1792 of yacc.c */ #line 224 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER);} break; case 37: /* Line 1792 of yacc.c */ #line 225 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_LIST); _asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));} break; case 38: /* Line 1792 of yacc.c */ #line 227 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER);} break; case 39: /* Line 1792 of yacc.c */ #line 229 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_MIN_MAX); _asn1_set_down((yyval.node),_asn1_add_static_node(ASN1_ETYPE_SIZE)); _asn1_set_value(_asn1_get_down((yyval.node)),(yyvsp[(6) - (7)].str),strlen((yyvsp[(6) - (7)].str))+1); _asn1_set_name(_asn1_get_down((yyval.node)),(yyvsp[(3) - (7)].str));} break; case 40: /* Line 1792 of yacc.c */ #line 235 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BOOLEAN);} break; case 41: /* Line 1792 of yacc.c */ #line 238 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTC_TIME);} break; case 42: /* Line 1792 of yacc.c */ #line 239 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALIZED_TIME);} break; case 43: /* Line 1792 of yacc.c */ #line 242 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_1_PARAM); _asn1_set_value((yyval.node),(yyvsp[(3) - (4)].str),strlen((yyvsp[(3) - (4)].str))+1);} break; case 44: /* Line 1792 of yacc.c */ #line 245 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SIZE|CONST_MIN_MAX); _asn1_set_value((yyval.node),(yyvsp[(3) - (7)].str),strlen((yyvsp[(3) - (7)].str))+1); _asn1_set_name((yyval.node),(yyvsp[(6) - (7)].str));} break; case 45: /* Line 1792 of yacc.c */ #line 250 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 46: /* Line 1792 of yacc.c */ #line 251 "ASN1.y" {(yyval.node)=(yyvsp[(2) - (3)].node);} break; case 47: /* Line 1792 of yacc.c */ #line 254 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING);} break; case 48: /* Line 1792 of yacc.c */ #line 255 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_GENERALSTRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 49: /* Line 1792 of yacc.c */ #line 259 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_UNIVERSAL);} break; case 50: /* Line 1792 of yacc.c */ #line 260 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_NUMERIC_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 51: /* Line 1792 of yacc.c */ #line 264 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING);} break; case 52: /* Line 1792 of yacc.c */ #line 265 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IA5_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 53: /* Line 1792 of yacc.c */ #line 269 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING);} break; case 54: /* Line 1792 of yacc.c */ #line 270 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_TELETEX_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 55: /* Line 1792 of yacc.c */ #line 274 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING);} break; case 56: /* Line 1792 of yacc.c */ #line 275 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_PRINTABLE_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 57: /* Line 1792 of yacc.c */ #line 279 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING);} break; case 58: /* Line 1792 of yacc.c */ #line 280 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UNIVERSAL_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 59: /* Line 1792 of yacc.c */ #line 284 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING);} break; case 60: /* Line 1792 of yacc.c */ #line 285 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BMP_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 61: /* Line 1792 of yacc.c */ #line 289 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING);} break; case 62: /* Line 1792 of yacc.c */ #line 290 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_UTF8_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 63: /* Line 1792 of yacc.c */ #line 294 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING);} break; case 64: /* Line 1792 of yacc.c */ #line 295 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_VISIBLE_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 65: /* Line 1792 of yacc.c */ #line 299 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING);} break; case 66: /* Line 1792 of yacc.c */ #line 300 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OCTET_STRING|CONST_SIZE); _asn1_set_down((yyval.node),(yyvsp[(3) - (3)].node));} break; case 67: /* Line 1792 of yacc.c */ #line 304 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CONSTANT); _asn1_set_name((yyval.node),(yyvsp[(1) - (4)].str)); _asn1_set_value((yyval.node),(yyvsp[(3) - (4)].str),strlen((yyvsp[(3) - (4)].str))+1);} break; case 68: /* Line 1792 of yacc.c */ #line 309 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 69: /* Line 1792 of yacc.c */ #line 310 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (3)].node); _asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (3)].node)),(yyvsp[(3) - (3)].node));} break; case 70: /* Line 1792 of yacc.c */ #line 314 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING);} break; case 71: /* Line 1792 of yacc.c */ #line 315 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_SIZE);} break; case 72: /* Line 1792 of yacc.c */ #line 317 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_BIT_STRING|CONST_LIST); _asn1_set_down((yyval.node),(yyvsp[(4) - (5)].node));} break; case 73: /* Line 1792 of yacc.c */ #line 322 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_ENUMERATED|CONST_LIST); _asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));} break; case 74: /* Line 1792 of yacc.c */ #line 327 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID);} break; case 75: /* Line 1792 of yacc.c */ #line 330 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER); _asn1_set_value((yyval.node),(yyvsp[(1) - (1)].str),strlen((yyvsp[(1) - (1)].str))+1);} break; case 76: /* Line 1792 of yacc.c */ #line 332 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_IDENTIFIER|CONST_SIZE); _asn1_set_value((yyval.node),(yyvsp[(1) - (2)].str),strlen((yyvsp[(1) - (2)].str))+1); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 77: /* Line 1792 of yacc.c */ #line 335 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 78: /* Line 1792 of yacc.c */ #line 336 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 79: /* Line 1792 of yacc.c */ #line 337 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 81: /* Line 1792 of yacc.c */ #line 339 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 82: /* Line 1792 of yacc.c */ #line 340 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 83: /* Line 1792 of yacc.c */ #line 341 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 84: /* Line 1792 of yacc.c */ #line 342 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 85: /* Line 1792 of yacc.c */ #line 343 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 86: /* Line 1792 of yacc.c */ #line 344 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 87: /* Line 1792 of yacc.c */ #line 345 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 88: /* Line 1792 of yacc.c */ #line 346 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 89: /* Line 1792 of yacc.c */ #line 347 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 90: /* Line 1792 of yacc.c */ #line 348 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 91: /* Line 1792 of yacc.c */ #line 349 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 92: /* Line 1792 of yacc.c */ #line 350 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 93: /* Line 1792 of yacc.c */ #line 351 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 94: /* Line 1792 of yacc.c */ #line 352 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 95: /* Line 1792 of yacc.c */ #line 353 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 96: /* Line 1792 of yacc.c */ #line 354 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 97: /* Line 1792 of yacc.c */ #line 355 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_NULL);} break; case 98: /* Line 1792 of yacc.c */ #line 358 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 99: /* Line 1792 of yacc.c */ #line 359 "ASN1.y" {(yyval.node)=_asn1_mod_type((yyvsp[(2) - (2)].node),CONST_TAG); _asn1_set_right((yyvsp[(1) - (2)].node),_asn1_get_down((yyval.node))); _asn1_set_down((yyval.node),(yyvsp[(1) - (2)].node));} break; case 100: /* Line 1792 of yacc.c */ #line 364 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 101: /* Line 1792 of yacc.c */ #line 365 "ASN1.y" {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_DEFAULT); _asn1_set_right((yyvsp[(2) - (2)].node),_asn1_get_down((yyval.node))); _asn1_set_down((yyval.node),(yyvsp[(2) - (2)].node));} break; case 102: /* Line 1792 of yacc.c */ #line 368 "ASN1.y" {(yyval.node)=_asn1_mod_type((yyvsp[(1) - (2)].node),CONST_OPTION);} break; case 103: /* Line 1792 of yacc.c */ #line 371 "ASN1.y" {(yyval.node)=_asn1_set_name((yyvsp[(2) - (2)].node),(yyvsp[(1) - (2)].str));} break; case 104: /* Line 1792 of yacc.c */ #line 374 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 105: /* Line 1792 of yacc.c */ #line 375 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (3)].node); _asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (3)].node)),(yyvsp[(3) - (3)].node));} break; case 106: /* Line 1792 of yacc.c */ #line 379 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE); _asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));} break; case 107: /* Line 1792 of yacc.c */ #line 381 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF); _asn1_set_down((yyval.node),(yyvsp[(3) - (3)].node));} break; case 108: /* Line 1792 of yacc.c */ #line 383 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SEQUENCE_OF|CONST_SIZE); _asn1_set_right((yyvsp[(2) - (4)].node),(yyvsp[(4) - (4)].node)); _asn1_set_down((yyval.node),(yyvsp[(2) - (4)].node));} break; case 109: /* Line 1792 of yacc.c */ #line 388 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SET); _asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));} break; case 110: /* Line 1792 of yacc.c */ #line 390 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SET_OF); _asn1_set_down((yyval.node),(yyvsp[(3) - (3)].node));} break; case 111: /* Line 1792 of yacc.c */ #line 392 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_SET_OF|CONST_SIZE); _asn1_set_right((yyvsp[(2) - (4)].node),(yyvsp[(4) - (4)].node)); _asn1_set_down((yyval.node),(yyvsp[(2) - (4)].node));} break; case 112: /* Line 1792 of yacc.c */ #line 397 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_CHOICE); _asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node));} break; case 113: /* Line 1792 of yacc.c */ #line 401 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_ANY);} break; case 114: /* Line 1792 of yacc.c */ #line 402 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_ANY|CONST_DEFINED_BY); _asn1_set_down((yyval.node),_asn1_add_static_node(ASN1_ETYPE_CONSTANT)); _asn1_set_name(_asn1_get_down((yyval.node)),(yyvsp[(4) - (4)].str));} break; case 115: /* Line 1792 of yacc.c */ #line 407 "ASN1.y" {(yyval.node)=_asn1_set_name((yyvsp[(3) - (3)].node),(yyvsp[(1) - (3)].str));} break; case 116: /* Line 1792 of yacc.c */ #line 409 "ASN1.y" {(yyval.node)=_asn1_set_name((yyvsp[(3) - (3)].node), last_error_token);} break; case 117: /* Line 1792 of yacc.c */ #line 413 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN); _asn1_set_name((yyval.node),(yyvsp[(1) - (7)].str)); _asn1_set_down((yyval.node),(yyvsp[(6) - (7)].node));} break; case 118: /* Line 1792 of yacc.c */ #line 417 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID|CONST_ASSIGN|CONST_1_PARAM); _asn1_set_name((yyval.node),(yyvsp[(1) - (6)].str)); _asn1_set_value((yyval.node),(yyvsp[(2) - (6)].str),strlen((yyvsp[(2) - (6)].str))+1); _asn1_set_down((yyval.node),(yyvsp[(5) - (6)].node));} break; case 119: /* Line 1792 of yacc.c */ #line 422 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_INTEGER|CONST_ASSIGN); _asn1_set_name((yyval.node),(yyvsp[(1) - (4)].str)); _asn1_set_value((yyval.node),(yyvsp[(4) - (4)].str),strlen((yyvsp[(4) - (4)].str))+1);} break; case 120: /* Line 1792 of yacc.c */ #line 427 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 121: /* Line 1792 of yacc.c */ #line 428 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 122: /* Line 1792 of yacc.c */ #line 431 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (1)].node);} break; case 123: /* Line 1792 of yacc.c */ #line 432 "ASN1.y" {(yyval.node)=(yyvsp[(1) - (2)].node); _asn1_set_right(_asn1_get_last_right((yyvsp[(1) - (2)].node)),(yyvsp[(2) - (2)].node));} break; case 124: /* Line 1792 of yacc.c */ #line 436 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_down((yyval.node),(yyvsp[(3) - (4)].node)); _asn1_set_name((yyval.node),(yyvsp[(1) - (4)].str));} break; case 125: /* Line 1792 of yacc.c */ #line 439 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_name((yyval.node),(yyvsp[(1) - (3)].str));} break; case 126: /* Line 1792 of yacc.c */ #line 441 "ASN1.y" {(yyval.node)=_asn1_add_static_node(ASN1_ETYPE_OBJECT_ID); _asn1_set_name((yyval.node),(yyvsp[(1) - (1)].str));} break; case 127: /* Line 1792 of yacc.c */ #line 465 "ASN1.y" {(yyval.constant)=CONST_EXPLICIT;} break; case 128: /* Line 1792 of yacc.c */ #line 466 "ASN1.y" {(yyval.constant)=CONST_IMPLICIT;} break; /* Line 1792 of yacc.c */ #line 2531 "ASN1.c" 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 which 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 which 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 /* Make sure YYID is used. */ return YYID (yyresult); } /* Line 2055 of yacc.c */ #line 470 "ASN1.y" static const char *key_word[] = { "::=","OPTIONAL","INTEGER","SIZE","OCTET","STRING", "SEQUENCE","BIT","UNIVERSAL","PRIVATE","OPTIONAL", "DEFAULT","CHOICE","OF","OBJECT","IDENTIFIER", "BOOLEAN","TRUE","FALSE","APPLICATION","ANY","DEFINED", "SET","BY","EXPLICIT","IMPLICIT","DEFINITIONS","TAGS", "BEGIN","END","UTCTime","GeneralizedTime", "GeneralString","FROM","IMPORTS","NULL","ENUMERATED", "NumericString", "IA5String", "TeletexString", "PrintableString", "UniversalString", "BMPString", "UTF8String", "VisibleString"}; static const int key_word_token[] = { ASSIG, OPTIONAL, INTEGER, SIZE, OCTET, STRING, SEQUENCE, BIT, UNIVERSAL, PRIVATE, OPTIONAL, DEFAULT, CHOICE, OF, OBJECT, STR_IDENTIFIER, BOOLEAN, ASN1_TRUE, ASN1_FALSE, APPLICATION, ANY, DEFINED, SET, BY, EXPLICIT, IMPLICIT, DEFINITIONS, TAGS, BEGIN, END, UTCTime, GeneralizedTime, GeneralString, FROM, IMPORTS, TOKEN_NULL, ENUMERATED, NumericString, IA5String, TeletexString, PrintableString, UniversalString, BMPString, UTF8String, VisibleString }; /*************************************************************/ /* Function: _asn1_yylex */ /* Description: looks for tokens in file_asn1 pointer file. */ /* Return: int */ /* Token identifier or ASCII code or 0(zero: End Of File) */ /*************************************************************/ static int _asn1_yylex () { int c, counter = 0, k, lastc; char string[ASN1_MAX_NAME_SIZE + 1]; /* will contain the next token */ size_t i; while (1) { while ((c = fgetc (file_asn1)) == ' ' || c == '\t' || c == '\n') if (c == '\n') line_number++; if (c == EOF) { snprintf (last_token, sizeof(last_token), "End Of File"); return 0; } if (c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == ',' || c == '.' || c == '+' || c == '|') { last_token[0] = c; last_token[1] = 0; return c; } if (c == '-') { /* Maybe the first '-' of a comment */ if ((c = fgetc (file_asn1)) != '-') { ungetc (c, file_asn1); last_token[0] = '-'; last_token[1] = 0; return '-'; } else { /* Comments */ lastc = 0; counter = 0; /* A comment finishes at the next double hypen or the end of line */ while ((c = fgetc (file_asn1)) != EOF && c != '\n' && (lastc != '-' || (lastc == '-' && c != '-'))) lastc = c; if (c == EOF) { snprintf (last_token, sizeof(last_token), "End Of File"); return 0; } else { if (c == '\n') line_number++; continue; /* next char, please! (repeat the search) */ } } } string[counter++] = c; /* Till the end of the token */ while (! ((c = fgetc (file_asn1)) == EOF || c == ' ' || c == '\t' || c == '\n' || c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}' || c == ',' || c == '.')) { if (counter >= ASN1_MAX_NAME_SIZE) { result_parse = ASN1_NAME_TOO_LONG; return 0; } string[counter++] = c; } ungetc (c, file_asn1); string[counter] = 0; snprintf (last_token, sizeof(last_token), "%s", string); /* Is STRING a number? */ for (k = 0; k < counter; k++) if (!isdigit (string[k])) break; if (k >= counter) { snprintf (yylval.str, sizeof(yylval.str), "%s", string); return NUM; /* return the number */ } /* Is STRING a keyword? */ for (i = 0; i < (sizeof (key_word) / sizeof (char *)); i++) if (!strcmp (string, key_word[i])) return key_word_token[i]; /* STRING is an IDENTIFIER */ snprintf (yylval.str, sizeof(yylval.str), "%s", string); return IDENTIFIER; } } /*************************************************************/ /* Function: _asn1_create_errorDescription */ /* Description: creates a string with the description of the*/ /* error. */ /* Parameters: */ /* error : error to describe. */ /* error_desc: string that will contain the */ /* description. */ /*************************************************************/ static void _asn1_create_errorDescription (int error, char *error_desc) { if (error_desc == NULL) return; switch (error) { case ASN1_FILE_NOT_FOUND: snprintf(error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s file was not found", file_name); break; case ASN1_SYNTAX_ERROR: snprintf(error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s", last_error); break; case ASN1_NAME_TOO_LONG: snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s:%u: name too long (more than %u characters)", file_name, line_number, ASN1_MAX_NAME_SIZE); break; case ASN1_IDENTIFIER_NOT_FOUND: snprintf (error_desc, ASN1_MAX_ERROR_DESCRIPTION_SIZE, "%s:: identifier '%s' not found", file_name, _asn1_identifierMissing); break; default: error_desc[0] = 0; break; } } /** * asn1_parser2tree: * @file: specify the path and the name of file that contains * ASN.1 declarations. * @definitions: return the pointer to the structure created from * "file" ASN.1 declarations. * @error_desc: return the error description or an empty * string if success. * * Function used to start the parse algorithm. Creates the structures * needed to manage the definitions included in @file file. * * Returns: %ASN1_SUCCESS if the file has a correct syntax and every * identifier is known, %ASN1_ELEMENT_NOT_EMPTY if @definitions not * %NULL, %ASN1_FILE_NOT_FOUND if an error occured while * opening @file, %ASN1_SYNTAX_ERROR if the syntax is not * correct, %ASN1_IDENTIFIER_NOT_FOUND if in the file there is an * identifier that is not defined, %ASN1_NAME_TOO_LONG if in the * file there is an identifier whith more than %ASN1_MAX_NAME_SIZE * characters. **/ int asn1_parser2tree (const char *file, asn1_node * definitions, char *error_desc) { p_tree = NULL; if (*definitions != NULL) return ASN1_ELEMENT_NOT_EMPTY; *definitions = NULL; file_name = file; /* open the file to parse */ file_asn1 = fopen (file, "r"); if (file_asn1 == NULL) { result_parse = ASN1_FILE_NOT_FOUND; } else { result_parse = ASN1_SUCCESS; line_number = 1; yyparse (); fclose (file_asn1); if (result_parse == ASN1_SUCCESS) { /* syntax OK */ /* set IMPLICIT or EXPLICIT property */ _asn1_set_default_tag (p_tree); /* set CONST_SET and CONST_NOT_USED */ _asn1_type_set_config (p_tree); /* check the identifier definitions */ result_parse = _asn1_check_identifier (p_tree); if (result_parse == ASN1_SUCCESS) { /* all identifier defined */ /* Delete the list and keep the ASN1 structure */ _asn1_delete_list (); /* Convert into DER coding the value assign to INTEGER constants */ _asn1_change_integer_value (p_tree); /* Expand the IDs of OBJECT IDENTIFIER constants */ _asn1_expand_object_id (p_tree); *definitions = p_tree; } else /* some identifiers not defined */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } else /* syntax error */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } _asn1_create_errorDescription (result_parse, error_desc); return result_parse; } /** * asn1_parser2array: * @inputFileName: specify the path and the name of file that * contains ASN.1 declarations. * @outputFileName: specify the path and the name of file that will * contain the C vector definition. * @vectorName: specify the name of the C vector. * @error_desc: return the error description or an empty * string if success. * * Function that generates a C structure from an ASN1 file. Creates a * file containing a C vector to use to manage the definitions * included in @inputFileName file. If @inputFileName is * "/aa/bb/xx.yy" and @outputFileName is %NULL, the file created is * "/aa/bb/xx_asn1_tab.c". If @vectorName is %NULL the vector name * will be "xx_asn1_tab". * * Returns: %ASN1_SUCCESS if the file has a correct syntax and every * identifier is known, %ASN1_FILE_NOT_FOUND if an error occured * while opening @inputFileName, %ASN1_SYNTAX_ERROR if the syntax is * not correct, %ASN1_IDENTIFIER_NOT_FOUND if in the file there is * an identifier that is not defined, %ASN1_NAME_TOO_LONG if in the * file there is an identifier whith more than %ASN1_MAX_NAME_SIZE * characters. **/ int asn1_parser2array (const char *inputFileName, const char *outputFileName, const char *vectorName, char *error_desc) { char *file_out_name = NULL; char *vector_name = NULL; const char *char_p, *slash_p, *dot_p; p_tree = NULL; file_name = inputFileName; /* open the file to parse */ file_asn1 = fopen (inputFileName, "r"); if (file_asn1 == NULL) result_parse = ASN1_FILE_NOT_FOUND; else { result_parse = ASN1_SUCCESS; line_number = 1; yyparse (); fclose (file_asn1); if (result_parse == ASN1_SUCCESS) { /* syntax OK */ /* set IMPLICIT or EXPLICIT property */ _asn1_set_default_tag (p_tree); /* set CONST_SET and CONST_NOT_USED */ _asn1_type_set_config (p_tree); /* check the identifier definitions */ result_parse = _asn1_check_identifier (p_tree); if (result_parse == ASN1_SUCCESS) { /* all identifier defined */ /* searching the last '/' and '.' in inputFileName */ char_p = inputFileName; slash_p = inputFileName; while ((char_p = strchr (char_p, '/'))) { char_p++; slash_p = char_p; } char_p = slash_p; dot_p = inputFileName + strlen (inputFileName); while ((char_p = strchr (char_p, '.'))) { dot_p = char_p; char_p++; } if (outputFileName == NULL) { /* file_out_name = inputFileName + _asn1_tab.c */ file_out_name = malloc (dot_p - inputFileName + 1 + strlen ("_asn1_tab.c")); memcpy (file_out_name, inputFileName, dot_p - inputFileName); file_out_name[dot_p - inputFileName] = 0; strcat (file_out_name, "_asn1_tab.c"); } else { /* file_out_name = inputFileName */ file_out_name = (char *) malloc (strlen (outputFileName) + 1); strcpy (file_out_name, outputFileName); } if (vectorName == NULL) { /* vector_name = file name + _asn1_tab */ vector_name = malloc (dot_p - slash_p + 1 + strlen ("_asn1_tab")); memcpy (vector_name, slash_p, dot_p - slash_p); vector_name[dot_p - slash_p] = 0; strcat (vector_name, "_asn1_tab"); } else { /* vector_name = vectorName */ vector_name = (char *) malloc (strlen (vectorName) + 1); strcpy (vector_name, vectorName); } /* Save structure in a file */ _asn1_create_static_structure (p_tree, file_out_name, vector_name); free (file_out_name); free (vector_name); } /* result == OK */ } /* result == OK */ /* Delete the list and the ASN1 structure */ _asn1_delete_list_and_nodes (); } /* inputFile exist */ _asn1_create_errorDescription (result_parse, error_desc); return result_parse; } /*************************************************************/ /* Function: _asn1_yyerror */ /* Description: function called when there are syntax errors*/ /* Parameters: */ /* char *s : error description */ /* Return: int */ /* */ /*************************************************************/ static void _asn1_yyerror (const char *s) { /* Sends the error description to the std_out */ if (strcmp (last_token, "VisibleString") == 0 || strcmp (last_token, "PrintableString") == 0 || strcmp (last_token, "UniversalString") == 0 || strcmp (last_token, "IA5String") == 0 || strcmp (last_token, "UTF8String") == 0 || strcmp (last_token, "NumericString") == 0 || strcmp (last_token, "TeletexString") == 0 || strcmp (last_token, "BMPString") == 0) { snprintf (last_error_token, sizeof(last_error_token), "%s", last_token); fprintf(stderr, "%s:%u: Warning: %s is a built-in ASN.1 type.\n", file_name, line_number, last_token); return; } last_error_token[0] = 0; if (result_parse != ASN1_NAME_TOO_LONG) { snprintf (last_error, sizeof(last_error), "%s:%u: Error: %s near '%s'", file_name, line_number, s, last_token); result_parse = ASN1_SYNTAX_ERROR; } return; } libtasn1-3.4/lib/coding.c0000664000000000000000000010247512244720630012154 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ /*****************************************************/ /* File: coding.c */ /* Description: Functions to create a DER coding of */ /* an ASN1 type. */ /*****************************************************/ #include #include "parser_aux.h" #include #include "element.h" #include #define MAX_TAG_LEN 16 /******************************************************/ /* Function : _asn1_error_description_value_not_found */ /* Description: creates the ErrorDescription string */ /* for the ASN1_VALUE_NOT_FOUND error. */ /* Parameters: */ /* node: node of the tree where the value is NULL. */ /* ErrorDescription: string returned. */ /* Return: */ /******************************************************/ static void _asn1_error_description_value_not_found (asn1_node node, char *ErrorDescription) { if (ErrorDescription == NULL) return; Estrcpy (ErrorDescription, ":: value of element '"); _asn1_hierarchical_name (node, ErrorDescription + strlen (ErrorDescription), ASN1_MAX_ERROR_DESCRIPTION_SIZE - 40); Estrcat (ErrorDescription, "' not found"); } /** * asn1_length_der: * @len: value to convert. * @der: buffer to hold the returned encoding (may be %NULL). * @der_len: number of meaningful bytes of ANS (der[0]..der[der_len-1]). * * Creates the DER encoding of the provided length value. * The @der buffer must have enough room for the output. The maximum * length this function will encode is %ASN1_MAX_LENGTH_SIZE. * * To know the size of the DER encoding use a %NULL value for @der. **/ void asn1_length_der (unsigned long int len, unsigned char *der, int *der_len) { int k; unsigned char temp[ASN1_MAX_LENGTH_SIZE]; #if SIZEOF_UNSIGNED_LONG_INT > 8 len &= 0xFFFFFFFFFFFFFFFF; #endif if (len < 128) { /* short form */ if (der != NULL) der[0] = (unsigned char) len; *der_len = 1; } else { /* Long form */ k = 0; while (len) { temp[k++] = len & 0xFF; len = len >> 8; } *der_len = k + 1; if (der != NULL) { der[0] = ((unsigned char) k & 0x7F) + 128; while (k--) der[*der_len - 1 - k] = temp[k]; } } } /******************************************************/ /* Function : _asn1_tag_der */ /* Description: creates the DER coding for the CLASS */ /* and TAG parameters. */ /* It is limited by the ASN1_MAX_TAG_SIZE variable */ /* Parameters: */ /* class: value to convert. */ /* tag_value: value to convert. */ /* ans: string returned. */ /* ans_len: number of meaningful bytes of ANS */ /* (ans[0]..ans[ans_len-1]). */ /* Return: */ /******************************************************/ static void _asn1_tag_der (unsigned char class, unsigned int tag_value, unsigned char *ans, int *ans_len) { int k; unsigned char temp[ASN1_MAX_TAG_SIZE]; if (tag_value < 31) { /* short form */ ans[0] = (class & 0xE0) + ((unsigned char) (tag_value & 0x1F)); *ans_len = 1; } else { /* Long form */ ans[0] = (class & 0xE0) + 31; k = 0; while (tag_value != 0) { temp[k++] = tag_value & 0x7F; tag_value >>= 7; if (k > ASN1_MAX_TAG_SIZE - 1) break; /* will not encode larger tags */ } *ans_len = k + 1; while (k--) ans[*ans_len - 1 - k] = temp[k] + 128; ans[*ans_len - 1] -= 128; } } /** * asn1_octet_der: * @str: the input data. * @str_len: STR length (str[0]..str[*str_len-1]). * @der: encoded string returned. * @der_len: number of meaningful bytes of DER (der[0]..der[der_len-1]). * * Creates a length-value DER encoding for the input data. * The DER encoding of the input data will be placed in the @der variable. * * Note that the OCTET STRING tag is not included in the output. * * This function does not return any value because it is expected * that @der_len will contain enough bytes to store the string * plus the DER encoding. The DER encoding size can be obtained using * asn1_length_der(). **/ void asn1_octet_der (const unsigned char *str, int str_len, unsigned char *der, int *der_len) { int len_len; if (der == NULL || str_len < 0) return; asn1_length_der (str_len, der, &len_len); memcpy (der + len_len, str, str_len); *der_len = str_len + len_len; } /** * asn1_encode_simple_der: * @etype: The type of the string to be encoded (ASN1_ETYPE_) * @str: the string data. * @str_len: the string length * @tl: the encoded tag and length * @tl_len: the bytes of the @tl field * * Creates the DER encoding for various simple ASN.1 types like strings etc. * It stores the tag and length in @tl, which should have space for at least * %ASN1_MAX_TL_SIZE bytes. Initially @tl_len should contain the size of @tl. * * The complete DER encoding should consist of the value in @tl appended * with the provided @str. * * Returns: %ASN1_SUCCESS if successful or an error value. **/ int asn1_encode_simple_der (unsigned int etype, const unsigned char *str, unsigned int str_len, unsigned char *tl, unsigned int *tl_len) { int tag_len, len_len; unsigned tlen; unsigned char der_tag[ASN1_MAX_TAG_SIZE]; unsigned char der_length[ASN1_MAX_LENGTH_SIZE]; unsigned char *p; if (str == NULL) return ASN1_VALUE_NOT_VALID; if (ETYPE_OK (etype) == 0) return ASN1_VALUE_NOT_VALID; /* doesn't handle constructed classes */ if (ETYPE_CLASS (etype) != ASN1_CLASS_UNIVERSAL) return ASN1_VALUE_NOT_VALID; _asn1_tag_der (ETYPE_CLASS (etype), ETYPE_TAG (etype), der_tag, &tag_len); asn1_length_der (str_len, der_length, &len_len); if (tag_len <= 0 || len_len <= 0) return ASN1_VALUE_NOT_VALID; tlen = tag_len + len_len; if (*tl_len < tlen) return ASN1_MEM_ERROR; p = tl; memcpy (p, der_tag, tag_len); p += tag_len; memcpy (p, der_length, len_len); *tl_len = tlen; return ASN1_SUCCESS; } /******************************************************/ /* Function : _asn1_time_der */ /* Description: creates the DER coding for a TIME */ /* type (length included). */ /* Parameters: */ /* str: TIME null-terminated string. */ /* der: string returned. */ /* der_len: number of meaningful bytes of DER */ /* (der[0]..der[ans_len-1]). Initially it */ /* if must store the lenght of DER. */ /* Return: */ /* ASN1_MEM_ERROR when DER isn't big enough */ /* ASN1_SUCCESS otherwise */ /******************************************************/ static int _asn1_time_der (unsigned char *str, int str_len, unsigned char *der, int *der_len) { int len_len; int max_len; max_len = *der_len; asn1_length_der (str_len, (max_len > 0) ? der : NULL, &len_len); if ((len_len + str_len) <= max_len) memcpy (der + len_len, str, str_len); *der_len = len_len + str_len; if ((*der_len) > max_len) return ASN1_MEM_ERROR; return ASN1_SUCCESS; } /* void _asn1_get_utctime_der(unsigned char *der,int *der_len,unsigned char *str) { int len_len,str_len; char temp[20]; if(str==NULL) return; str_len=asn1_get_length_der(der,*der_len,&len_len); if (str_len<0) return; memcpy(temp,der+len_len,str_len); *der_len=str_len+len_len; switch(str_len){ case 11: temp[10]=0; strcat(temp,"00+0000"); break; case 13: temp[12]=0; strcat(temp,"+0000"); break; case 15: temp[15]=0; memmove(temp+12,temp+10,6); temp[10]=temp[11]='0'; break; case 17: temp[17]=0; break; default: return; } strcpy(str,temp); } */ /******************************************************/ /* Function : _asn1_objectid_der */ /* Description: creates the DER coding for an */ /* OBJECT IDENTIFIER type (length included). */ /* Parameters: */ /* str: OBJECT IDENTIFIER null-terminated string. */ /* der: string returned. */ /* der_len: number of meaningful bytes of DER */ /* (der[0]..der[ans_len-1]). Initially it */ /* must store the length of DER. */ /* Return: */ /* ASN1_MEM_ERROR when DER isn't big enough */ /* ASN1_SUCCESS otherwise */ /******************************************************/ static int _asn1_objectid_der (unsigned char *str, unsigned char *der, int *der_len) { int len_len, counter, k, first, max_len; char *temp, *n_end, *n_start; unsigned char bit7; unsigned long val, val1 = 0; int str_len = _asn1_strlen (str); max_len = *der_len; temp = malloc (str_len + 2); if (temp == NULL) return ASN1_MEM_ALLOC_ERROR; memcpy (temp, str, str_len); temp[str_len] = '.'; temp[str_len + 1] = 0; counter = 0; n_start = temp; while ((n_end = strchr (n_start, '.'))) { *n_end = 0; val = strtoul (n_start, NULL, 10); counter++; if (counter == 1) val1 = val; else if (counter == 2) { if (max_len > 0) der[0] = 40 * val1 + val; *der_len = 1; } else { first = 0; for (k = 4; k >= 0; k--) { bit7 = (val >> (k * 7)) & 0x7F; if (bit7 || first || !k) { if (k) bit7 |= 0x80; if (max_len > (*der_len)) der[*der_len] = bit7; (*der_len)++; first = 1; } } } n_start = n_end + 1; } asn1_length_der (*der_len, NULL, &len_len); if (max_len >= (*der_len + len_len)) { memmove (der + len_len, der, *der_len); asn1_length_der (*der_len, der, &len_len); } *der_len += len_len; free (temp); if (max_len < (*der_len)) return ASN1_MEM_ERROR; return ASN1_SUCCESS; } static const unsigned char bit_mask[] = { 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80 }; /** * asn1_bit_der: * @str: BIT string. * @bit_len: number of meaningful bits in STR. * @der: string returned. * @der_len: number of meaningful bytes of DER * (der[0]..der[ans_len-1]). * * Creates a length-value DER encoding for the input data * as it would have been for a BIT STRING. * The DER encoded data will be copied in @der. * * Note that the BIT STRING tag is not included in the output. * * This function does not return any value because it is expected * that @der_len will contain enough bytes to store the string * plus the DER encoding. The DER encoding size can be obtained using * asn1_length_der(). **/ void asn1_bit_der (const unsigned char *str, int bit_len, unsigned char *der, int *der_len) { int len_len, len_byte, len_pad; if (der == NULL) return; len_byte = bit_len >> 3; len_pad = 8 - (bit_len & 7); if (len_pad == 8) len_pad = 0; else len_byte++; asn1_length_der (len_byte + 1, der, &len_len); der[len_len] = len_pad; memcpy (der + len_len + 1, str, len_byte); der[len_len + len_byte] &= bit_mask[len_pad]; *der_len = len_byte + len_len + 1; } /******************************************************/ /* Function : _asn1_complete_explicit_tag */ /* Description: add the length coding to the EXPLICIT */ /* tags. */ /* Parameters: */ /* node: pointer to the tree element. */ /* der: string with the DER coding of the whole tree*/ /* counter: number of meaningful bytes of DER */ /* (der[0]..der[*counter-1]). */ /* max_len: size of der vector */ /* Return: */ /* ASN1_MEM_ERROR if der vector isn't big enough, */ /* otherwise ASN1_SUCCESS. */ /******************************************************/ static int _asn1_complete_explicit_tag (asn1_node node, unsigned char *der, int *counter, int *max_len) { asn1_node p; int is_tag_implicit, len2, len3; unsigned char temp[SIZEOF_UNSIGNED_INT]; is_tag_implicit = 0; if (node->type & CONST_TAG) { p = node->down; /* When there are nested tags we must complete them reverse to the order they were created. This is because completing a tag modifies all data within it, including the incomplete tags which store buffer positions -- simon@josefsson.org 2002-09-06 */ while (p->right) p = p->right; while (p && p != node->down->left) { if (type_field (p->type) == ASN1_ETYPE_TAG) { if (p->type & CONST_EXPLICIT) { len2 = strtol (p->name, NULL, 10); _asn1_set_name (p, NULL); asn1_length_der (*counter - len2, temp, &len3); if (len3 <= (*max_len)) { memmove (der + len2 + len3, der + len2, *counter - len2); memcpy (der + len2, temp, len3); } *max_len -= len3; *counter += len3; is_tag_implicit = 0; } else { /* CONST_IMPLICIT */ if (!is_tag_implicit) { is_tag_implicit = 1; } } } p = p->left; } } if (*max_len < 0) return ASN1_MEM_ERROR; return ASN1_SUCCESS; } const tag_and_class_st _asn1_tags[] = { [ASN1_ETYPE_GENERALSTRING] = {ASN1_TAG_GENERALSTRING, ASN1_CLASS_UNIVERSAL, "type:GENERALSTRING"}, [ASN1_ETYPE_NUMERIC_STRING] = {ASN1_TAG_NUMERIC_STRING, ASN1_CLASS_UNIVERSAL, "type:NUMERIC_STR"}, [ASN1_ETYPE_IA5_STRING] = {ASN1_TAG_IA5_STRING, ASN1_CLASS_UNIVERSAL, "type:IA5_STR"}, [ASN1_ETYPE_TELETEX_STRING] = {ASN1_TAG_TELETEX_STRING, ASN1_CLASS_UNIVERSAL, "type:TELETEX_STR"}, [ASN1_ETYPE_PRINTABLE_STRING] = {ASN1_TAG_PRINTABLE_STRING, ASN1_CLASS_UNIVERSAL, "type:PRINTABLE_STR"}, [ASN1_ETYPE_UNIVERSAL_STRING] = {ASN1_TAG_UNIVERSAL_STRING, ASN1_CLASS_UNIVERSAL, "type:UNIVERSAL_STR"}, [ASN1_ETYPE_BMP_STRING] = {ASN1_TAG_BMP_STRING, ASN1_CLASS_UNIVERSAL, "type:BMP_STR"}, [ASN1_ETYPE_UTF8_STRING] = {ASN1_TAG_UTF8_STRING, ASN1_CLASS_UNIVERSAL, "type:UTF8_STR"}, [ASN1_ETYPE_VISIBLE_STRING] = {ASN1_TAG_VISIBLE_STRING, ASN1_CLASS_UNIVERSAL, "type:VISIBLE_STR"}, [ASN1_ETYPE_OCTET_STRING] = {ASN1_TAG_OCTET_STRING, ASN1_CLASS_UNIVERSAL, "type:OCT_STR"}, [ASN1_ETYPE_BIT_STRING] = {ASN1_TAG_BIT_STRING, ASN1_CLASS_UNIVERSAL, "type:BIT_STR"}, [ASN1_ETYPE_OBJECT_ID] = {ASN1_TAG_OBJECT_ID, ASN1_CLASS_UNIVERSAL, "type:OBJ_ID"}, [ASN1_ETYPE_NULL] = {ASN1_TAG_NULL, ASN1_CLASS_UNIVERSAL, "type:NULL"}, [ASN1_ETYPE_BOOLEAN] = {ASN1_TAG_BOOLEAN, ASN1_CLASS_UNIVERSAL, "type:BOOLEAN"}, [ASN1_ETYPE_INTEGER] = {ASN1_TAG_INTEGER, ASN1_CLASS_UNIVERSAL, "type:INTEGER"}, [ASN1_ETYPE_ENUMERATED] = {ASN1_TAG_ENUMERATED, ASN1_CLASS_UNIVERSAL, "type:ENUMERATED"}, [ASN1_ETYPE_SEQUENCE] = {ASN1_TAG_SEQUENCE, ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED, "type:SEQUENCE"}, [ASN1_ETYPE_SEQUENCE_OF] = {ASN1_TAG_SEQUENCE, ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED, "type:SEQ_OF"}, [ASN1_ETYPE_SET] = {ASN1_TAG_SET, ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED, "type:SET"}, [ASN1_ETYPE_SET_OF] = {ASN1_TAG_SET, ASN1_CLASS_UNIVERSAL | ASN1_CLASS_STRUCTURED, "type:SET_OF"}, [ASN1_ETYPE_GENERALIZED_TIME] = {ASN1_TAG_GENERALIZEDTime, ASN1_CLASS_UNIVERSAL, "type:GENERALIZED_TIME"}, [ASN1_ETYPE_UTC_TIME] = {ASN1_TAG_UTCTime, ASN1_CLASS_UNIVERSAL, "type:UTC_TIME"}, }; unsigned int _asn1_tags_size = sizeof (_asn1_tags) / sizeof (_asn1_tags[0]); /******************************************************/ /* Function : _asn1_insert_tag_der */ /* Description: creates the DER coding of tags of one */ /* NODE. */ /* Parameters: */ /* node: pointer to the tree element. */ /* der: string returned */ /* counter: number of meaningful bytes of DER */ /* (counter[0]..der[*counter-1]). */ /* max_len: size of der vector */ /* Return: */ /* ASN1_GENERIC_ERROR if the type is unknown, */ /* ASN1_MEM_ERROR if der vector isn't big enough, */ /* otherwise ASN1_SUCCESS. */ /******************************************************/ static int _asn1_insert_tag_der (asn1_node node, unsigned char *der, int *counter, int *max_len) { asn1_node p; int tag_len, is_tag_implicit; unsigned char class, class_implicit = 0, temp[SIZEOF_UNSIGNED_INT * 3 + 1]; unsigned long tag_implicit = 0; unsigned char tag_der[MAX_TAG_LEN]; is_tag_implicit = 0; if (node->type & CONST_TAG) { p = node->down; while (p) { if (type_field (p->type) == ASN1_ETYPE_TAG) { if (p->type & CONST_APPLICATION) class = ASN1_CLASS_APPLICATION; else if (p->type & CONST_UNIVERSAL) class = ASN1_CLASS_UNIVERSAL; else if (p->type & CONST_PRIVATE) class = ASN1_CLASS_PRIVATE; else class = ASN1_CLASS_CONTEXT_SPECIFIC; if (p->type & CONST_EXPLICIT) { if (is_tag_implicit) _asn1_tag_der (class_implicit, tag_implicit, tag_der, &tag_len); else _asn1_tag_der (class | ASN1_CLASS_STRUCTURED, _asn1_strtoul (p->value, NULL, 10), tag_der, &tag_len); *max_len -= tag_len; if (*max_len >= 0) memcpy (der + *counter, tag_der, tag_len); *counter += tag_len; _asn1_ltostr (*counter, (char *) temp); _asn1_set_name (p, (const char *) temp); is_tag_implicit = 0; } else { /* CONST_IMPLICIT */ if (!is_tag_implicit) { if ((type_field (node->type) == ASN1_ETYPE_SEQUENCE) || (type_field (node->type) == ASN1_ETYPE_SEQUENCE_OF) || (type_field (node->type) == ASN1_ETYPE_SET) || (type_field (node->type) == ASN1_ETYPE_SET_OF)) class |= ASN1_CLASS_STRUCTURED; class_implicit = class; tag_implicit = _asn1_strtoul (p->value, NULL, 10); is_tag_implicit = 1; } } } p = p->right; } } if (is_tag_implicit) { _asn1_tag_der (class_implicit, tag_implicit, tag_der, &tag_len); } else { unsigned type = type_field (node->type); switch (type) { CASE_HANDLED_ETYPES: _asn1_tag_der (_asn1_tags[type].class, _asn1_tags[type].tag, tag_der, &tag_len); break; case ASN1_ETYPE_TAG: case ASN1_ETYPE_CHOICE: case ASN1_ETYPE_ANY: tag_len = 0; break; default: return ASN1_GENERIC_ERROR; } } *max_len -= tag_len; if (*max_len >= 0) memcpy (der + *counter, tag_der, tag_len); *counter += tag_len; if (*max_len < 0) return ASN1_MEM_ERROR; return ASN1_SUCCESS; } /******************************************************/ /* Function : _asn1_ordering_set */ /* Description: puts the elements of a SET type in */ /* the correct order according to DER rules. */ /* Parameters: */ /* der: string with the DER coding. */ /* node: pointer to the SET element. */ /* Return: */ /******************************************************/ static void _asn1_ordering_set (unsigned char *der, int der_len, asn1_node node) { struct vet { int end; unsigned long value; struct vet *next, *prev; }; int counter, len, len2; struct vet *first, *last, *p_vet, *p2_vet; asn1_node p; unsigned char class, *temp; unsigned long tag; counter = 0; if (type_field (node->type) != ASN1_ETYPE_SET) return; p = node->down; while ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE)) p = p->right; if ((p == NULL) || (p->right == NULL)) return; first = last = NULL; while (p) { p_vet = malloc (sizeof (struct vet)); if (p_vet == NULL) return; p_vet->next = NULL; p_vet->prev = last; if (first == NULL) first = p_vet; else last->next = p_vet; last = p_vet; /* tag value calculation */ if (asn1_get_tag_der (der + counter, der_len - counter, &class, &len2, &tag) != ASN1_SUCCESS) return; p_vet->value = (class << 24) | tag; counter += len2; /* extraction and length */ len2 = asn1_get_length_der (der + counter, der_len - counter, &len); if (len2 < 0) return; counter += len + len2; p_vet->end = counter; p = p->right; } p_vet = first; while (p_vet) { p2_vet = p_vet->next; counter = 0; while (p2_vet) { if (p_vet->value > p2_vet->value) { /* change position */ temp = malloc (p_vet->end - counter); if (temp == NULL) return; memcpy (temp, der + counter, p_vet->end - counter); memcpy (der + counter, der + p_vet->end, p2_vet->end - p_vet->end); memcpy (der + counter + p2_vet->end - p_vet->end, temp, p_vet->end - counter); free (temp); tag = p_vet->value; p_vet->value = p2_vet->value; p2_vet->value = tag; p_vet->end = counter + (p2_vet->end - p_vet->end); } counter = p_vet->end; p2_vet = p2_vet->next; p_vet = p_vet->next; } if (p_vet != first) p_vet->prev->next = NULL; else first = NULL; free (p_vet); p_vet = first; } } /******************************************************/ /* Function : _asn1_ordering_set_of */ /* Description: puts the elements of a SET OF type in */ /* the correct order according to DER rules. */ /* Parameters: */ /* der: string with the DER coding. */ /* node: pointer to the SET OF element. */ /* Return: */ /******************************************************/ static void _asn1_ordering_set_of (unsigned char *der, int der_len, asn1_node node) { struct vet { int end; struct vet *next, *prev; }; int counter, len, len2, change; struct vet *first, *last, *p_vet, *p2_vet; asn1_node p; unsigned char *temp, class; unsigned long k, max; counter = 0; if (type_field (node->type) != ASN1_ETYPE_SET_OF) return; p = node->down; while ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE)) p = p->right; p = p->right; if ((p == NULL) || (p->right == NULL)) return; first = last = NULL; while (p) { p_vet = malloc (sizeof (struct vet)); if (p_vet == NULL) return; p_vet->next = NULL; p_vet->prev = last; if (first == NULL) first = p_vet; else last->next = p_vet; last = p_vet; /* extraction of tag and length */ if (der_len - counter > 0) { if (asn1_get_tag_der (der + counter, der_len - counter, &class, &len, NULL) != ASN1_SUCCESS) return; counter += len; len2 = asn1_get_length_der (der + counter, der_len - counter, &len); if (len2 < 0) return; counter += len + len2; } p_vet->end = counter; p = p->right; } p_vet = first; while (p_vet) { p2_vet = p_vet->next; counter = 0; while (p2_vet) { if ((p_vet->end - counter) > (p2_vet->end - p_vet->end)) max = p_vet->end - counter; else max = p2_vet->end - p_vet->end; change = -1; for (k = 0; k < max; k++) if (der[counter + k] > der[p_vet->end + k]) { change = 1; break; } else if (der[counter + k] < der[p_vet->end + k]) { change = 0; break; } if ((change == -1) && ((p_vet->end - counter) > (p2_vet->end - p_vet->end))) change = 1; if (change == 1) { /* change position */ temp = malloc (p_vet->end - counter); if (temp == NULL) return; memcpy (temp, der + counter, (p_vet->end) - counter); memcpy (der + counter, der + (p_vet->end), (p2_vet->end) - (p_vet->end)); memcpy (der + counter + (p2_vet->end) - (p_vet->end), temp, (p_vet->end) - counter); free (temp); p_vet->end = counter + (p2_vet->end - p_vet->end); } counter = p_vet->end; p2_vet = p2_vet->next; p_vet = p_vet->next; } if (p_vet != first) p_vet->prev->next = NULL; else first = NULL; free (p_vet); p_vet = first; } } /** * asn1_der_coding: * @element: pointer to an ASN1 element * @name: the name of the structure you want to encode (it must be * inside *POINTER). * @ider: vector that will contain the DER encoding. DER must be a * pointer to memory cells already allocated. * @len: number of bytes of *@ider: @ider[0]..@ider[len-1], Initialy * holds the sizeof of der vector. * @ErrorDescription: return the error description or an empty * string if success. * * Creates the DER encoding for the NAME structure (inside *POINTER * structure). * * Returns: %ASN1_SUCCESS if DER encoding OK, %ASN1_ELEMENT_NOT_FOUND * if @name is not a valid element, %ASN1_VALUE_NOT_FOUND if there * is an element without a value, %ASN1_MEM_ERROR if the @ider * vector isn't big enough and in this case @len will contain the * length needed. **/ int asn1_der_coding (asn1_node element, const char *name, void *ider, int *len, char *ErrorDescription) { asn1_node node, p, p2; unsigned char temp[SIZEOF_UNSIGNED_LONG_INT * 3 + 1]; int counter, counter_old, len2, len3, tlen, move, max_len, max_len_old; int err; unsigned char *der = ider; node = asn1_find_node (element, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; /* Node is now a locally allocated variable. * That is because in some point we modify the * structure, and I don't know why! --nmav */ node = _asn1_copy_structure3 (node); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; max_len = *len; counter = 0; move = DOWN; p = node; while (1) { counter_old = counter; max_len_old = max_len; if (move != UP) { err = _asn1_insert_tag_der (p, der, &counter, &max_len); if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR) goto error; } switch (type_field (p->type)) { case ASN1_ETYPE_NULL: max_len--; if (max_len >= 0) der[counter] = 0; counter++; move = RIGHT; break; case ASN1_ETYPE_BOOLEAN: if ((p->type & CONST_DEFAULT) && (p->value == NULL)) { counter = counter_old; max_len = max_len_old; } else { if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } max_len -= 2; if (max_len >= 0) { der[counter++] = 1; if (p->value[0] == 'F') der[counter++] = 0; else der[counter++] = 0xFF; } else counter += 2; } move = RIGHT; break; case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: if ((p->type & CONST_DEFAULT) && (p->value == NULL)) { counter = counter_old; max_len = max_len_old; } else { if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = asn1_get_length_der (p->value, p->value_len, &len3); if (len2 < 0) { err = ASN1_DER_ERROR; goto error; } max_len -= len2 + len3; if (max_len >= 0) memcpy (der + counter, p->value, len3 + len2); counter += len3 + len2; } move = RIGHT; break; case ASN1_ETYPE_OBJECT_ID: if ((p->type & CONST_DEFAULT) && (p->value == NULL)) { counter = counter_old; max_len = max_len_old; } else { if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = max_len; err = _asn1_objectid_der (p->value, der + counter, &len2); if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR) goto error; max_len -= len2; counter += len2; } move = RIGHT; break; case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = max_len; err = _asn1_time_der (p->value, p->value_len, der + counter, &len2); if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR) goto error; max_len -= len2; counter += len2; move = RIGHT; break; case ASN1_ETYPE_OCTET_STRING: case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: case ASN1_ETYPE_BIT_STRING: if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = asn1_get_length_der (p->value, p->value_len, &len3); if (len2 < 0) { err = ASN1_DER_ERROR; goto error; } max_len -= len2 + len3; if (max_len >= 0) memcpy (der + counter, p->value, len3 + len2); counter += len3 + len2; move = RIGHT; break; case ASN1_ETYPE_SEQUENCE: case ASN1_ETYPE_SET: if (move != UP) { _asn1_ltostr (counter, (char *) temp); tlen = _asn1_strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); if (p->down == NULL) { move = UP; continue; } else { p2 = p->down; while (p2 && (type_field (p2->type) == ASN1_ETYPE_TAG)) p2 = p2->right; if (p2) { p = p2; move = RIGHT; continue; } move = UP; continue; } } else { /* move==UP */ len2 = _asn1_strtol (p->value, NULL, 10); _asn1_set_value (p, NULL, 0); if ((type_field (p->type) == ASN1_ETYPE_SET) && (max_len >= 0)) _asn1_ordering_set (der + len2, max_len - len2, p); asn1_length_der (counter - len2, temp, &len3); max_len -= len3; if (max_len >= 0) { memmove (der + len2 + len3, der + len2, counter - len2); memcpy (der + len2, temp, len3); } counter += len3; move = RIGHT; } break; case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET_OF: if (move != UP) { _asn1_ltostr (counter, (char *) temp); tlen = _asn1_strlen (temp); if (tlen > 0) _asn1_set_value (p, temp, tlen + 1); p = p->down; while ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE)) p = p->right; if (p->right) { p = p->right; move = RIGHT; continue; } else p = _asn1_find_up (p); move = UP; } if (move == UP) { len2 = _asn1_strtol (p->value, NULL, 10); _asn1_set_value (p, NULL, 0); if ((type_field (p->type) == ASN1_ETYPE_SET_OF) && (max_len - len2 > 0)) { _asn1_ordering_set_of (der + len2, max_len - len2, p); } asn1_length_der (counter - len2, temp, &len3); max_len -= len3; if (max_len >= 0) { memmove (der + len2 + len3, der + len2, counter - len2); memcpy (der + len2, temp, len3); } counter += len3; move = RIGHT; } break; case ASN1_ETYPE_ANY: if (p->value == NULL) { _asn1_error_description_value_not_found (p, ErrorDescription); err = ASN1_VALUE_NOT_FOUND; goto error; } len2 = asn1_get_length_der (p->value, p->value_len, &len3); if (len2 < 0) { err = ASN1_DER_ERROR; goto error; } max_len -= len2; if (max_len >= 0) memcpy (der + counter, p->value + len3, len2); counter += len2; move = RIGHT; break; default: move = (move == UP) ? RIGHT : DOWN; break; } if ((move != DOWN) && (counter != counter_old)) { err = _asn1_complete_explicit_tag (p, der, &counter, &max_len); if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR) goto error; } if (p == node && move != DOWN) break; if (move == DOWN) { if (p->down) p = p->down; else move = RIGHT; } if (move == RIGHT) { if (p->right) p = p->right; else move = UP; } if (move == UP) p = _asn1_find_up (p); } *len = counter; if (max_len < 0) { err = ASN1_MEM_ERROR; goto error; } err = ASN1_SUCCESS; error: asn1_delete_structure (&node); return err; } libtasn1-3.4/lib/element.c0000664000000000000000000007077012244720630012344 00000000000000/* * Copyright (C) 2000-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ /*****************************************************/ /* File: element.c */ /* Description: Functions with the read and write */ /* functions. */ /*****************************************************/ #include #include "parser_aux.h" #include #include "structure.h" #include "element.h" void _asn1_hierarchical_name (asn1_node node, char *name, int name_size) { asn1_node p; char tmp_name[64]; p = node; name[0] = 0; while (p != NULL) { if (p->name[0] != 0) { _asn1_str_cpy (tmp_name, sizeof (tmp_name), name), _asn1_str_cpy (name, name_size, p->name); _asn1_str_cat (name, name_size, "."); _asn1_str_cat (name, name_size, tmp_name); } p = _asn1_find_up (p); } if (name[0] == 0) _asn1_str_cpy (name, name_size, "ROOT"); } /******************************************************************/ /* Function : _asn1_convert_integer */ /* Description: converts an integer from a null terminated string */ /* to der decoding. The convertion from a null */ /* terminated string to an integer is made with */ /* the 'strtol' function. */ /* Parameters: */ /* value: null terminated string to convert. */ /* value_out: convertion result (memory must be already */ /* allocated). */ /* value_out_size: number of bytes of value_out. */ /* len: number of significant byte of value_out. */ /* Return: ASN1_MEM_ERROR or ASN1_SUCCESS */ /******************************************************************/ int _asn1_convert_integer (const unsigned char *value, unsigned char *value_out, int value_out_size, int *len) { char negative; unsigned char val[SIZEOF_UNSIGNED_LONG_INT]; long valtmp; int k, k2; valtmp = _asn1_strtol (value, NULL, 10); for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT; k++) { val[SIZEOF_UNSIGNED_LONG_INT - k - 1] = (valtmp >> (8 * k)) & 0xFF; } if (val[0] & 0x80) negative = 1; else negative = 0; for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT - 1; k++) { if (negative && (val[k] != 0xFF)) break; else if (!negative && val[k]) break; } if ((negative && !(val[k] & 0x80)) || (!negative && (val[k] & 0x80))) k--; *len = SIZEOF_UNSIGNED_LONG_INT - k; if (SIZEOF_UNSIGNED_LONG_INT - k > value_out_size) /* VALUE_OUT is too short to contain the value conversion */ return ASN1_MEM_ERROR; for (k2 = k; k2 < SIZEOF_UNSIGNED_LONG_INT; k2++) value_out[k2 - k] = val[k2]; #if 0 printf ("_asn1_convert_integer: valueIn=%s, lenOut=%d", value, *len); for (k = 0; k < SIZEOF_UNSIGNED_LONG_INT; k++) printf (", vOut[%d]=%d", k, value_out[k]); printf ("\n"); #endif return ASN1_SUCCESS; } int _asn1_append_sequence_set (asn1_node node) { asn1_node p, p2; char temp[10]; long n; if (!node || !(node->down)) return ASN1_GENERIC_ERROR; p = node->down; while ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE)) p = p->right; p2 = _asn1_copy_structure3 (p); while (p->right) p = p->right; _asn1_set_right (p, p2); if (p->name[0] == 0) _asn1_str_cpy (temp, sizeof (temp), "?1"); else { n = strtol (p->name + 1, NULL, 0); n++; temp[0] = '?'; _asn1_ltostr (n, temp + 1); } _asn1_set_name (p2, temp); /* p2->type |= CONST_OPTION; */ return ASN1_SUCCESS; } /** * asn1_write_value: * @node_root: pointer to a structure * @name: the name of the element inside the structure that you want to set. * @ivalue: vector used to specify the value to set. If len is >0, * VALUE must be a two's complement form integer. if len=0 *VALUE * must be a null terminated string with an integer value. * @len: number of bytes of *value to use to set the value: * value[0]..value[len-1] or 0 if value is a null terminated string * * Set the value of one element inside a structure. * * If an element is OPTIONAL and you want to delete it, you must use * the value=NULL and len=0. Using "pkix.asn": * * result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", * NULL, 0); * * Description for each type: * * INTEGER: VALUE must contain a two's complement form integer. * * value[0]=0xFF , len=1 -> integer=-1. * value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. * value[0]=0x01 , len=1 -> integer= 1. * value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. * value="123" , len=0 -> integer= 123. * * ENUMERATED: As INTEGER (but only with not negative numbers). * * BOOLEAN: VALUE must be the null terminated string "TRUE" or * "FALSE" and LEN != 0. * * value="TRUE" , len=1 -> boolean=TRUE. * value="FALSE" , len=1 -> boolean=FALSE. * * OBJECT IDENTIFIER: VALUE must be a null terminated string with * each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. * * value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha. * * UTCTime: VALUE must be a null terminated string in one of these * formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", * "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", * "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0. * * value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 * at 12h 00m Greenwich Mean Time * * GeneralizedTime: VALUE must be in one of this format: * "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", * "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", * "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s * indicates the seconds with any precision like "10.1" or "01.02". * LEN != 0 * * value="2001010112001.12-0700" , len=1 -> time=Jannuary * 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time * * OCTET STRING: VALUE contains the octet string and LEN is the * number of octets. * * value="$\backslash$x01$\backslash$x02$\backslash$x03" , * len=3 -> three bytes octet string * * GeneralString: VALUE contains the generalstring and LEN is the * number of octets. * * value="$\backslash$x01$\backslash$x02$\backslash$x03" , * len=3 -> three bytes generalstring * * BIT STRING: VALUE contains the bit string organized by bytes and * LEN is the number of bits. * * value="$\backslash$xCF" , len=6 -> bit string="110011" (six * bits) * * CHOICE: if NAME indicates a choice type, VALUE must specify one of * the alternatives with a null terminated string. LEN != 0. Using * "pkix.asn"\: * * result=asn1_write_value(cert, * "certificate1.tbsCertificate.subject", "rdnSequence", * 1); * * ANY: VALUE indicates the der encoding of a structure. LEN != 0. * * SEQUENCE OF: VALUE must be the null terminated string "NEW" and * LEN != 0. With this instruction another element is appended in * the sequence. The name of this element will be "?1" if it's the * first one, "?2" for the second and so on. * * Using "pkix.asn"\: * * result=asn1_write_value(cert, * "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); * * SET OF: the same as SEQUENCE OF. Using "pkix.asn": * * result=asn1_write_value(cert, * "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); * * Returns: %ASN1_SUCCESS if the value was set, * %ASN1_ELEMENT_NOT_FOUND if @name is not a valid element, and * %ASN1_VALUE_NOT_VALID if @ivalue has a wrong format. **/ int asn1_write_value (asn1_node node_root, const char *name, const void *ivalue, int len) { asn1_node node, p, p2; unsigned char *temp, *value_temp = NULL, *default_temp = NULL; int len2, k, k2, negative; size_t i; const unsigned char *value = ivalue; unsigned int type; node = asn1_find_node (node_root, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; if ((node->type & CONST_OPTION) && (value == NULL) && (len == 0)) { asn1_delete_structure (&node); return ASN1_SUCCESS; } type = type_field (node->type); if ((type == ASN1_ETYPE_SEQUENCE_OF) && (value == NULL) && (len == 0)) { p = node->down; while ((type_field (p->type) == ASN1_ETYPE_TAG) || (type_field (p->type) == ASN1_ETYPE_SIZE)) p = p->right; while (p->right) asn1_delete_structure (&p->right); return ASN1_SUCCESS; } switch (type) { case ASN1_ETYPE_BOOLEAN: if (!_asn1_strcmp (value, "TRUE")) { if (node->type & CONST_DEFAULT) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if (p->type & CONST_TRUE) _asn1_set_value (node, NULL, 0); else _asn1_set_value (node, "T", 1); } else _asn1_set_value (node, "T", 1); } else if (!_asn1_strcmp (value, "FALSE")) { if (node->type & CONST_DEFAULT) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if (p->type & CONST_FALSE) _asn1_set_value (node, NULL, 0); else _asn1_set_value (node, "F", 1); } else _asn1_set_value (node, "F", 1); } else return ASN1_VALUE_NOT_VALID; break; case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: if (len == 0) { if ((isdigit (value[0])) || (value[0] == '-')) { value_temp = malloc (SIZEOF_UNSIGNED_LONG_INT); if (value_temp == NULL) return ASN1_MEM_ALLOC_ERROR; _asn1_convert_integer (value, value_temp, SIZEOF_UNSIGNED_LONG_INT, &len); } else { /* is an identifier like v1 */ if (!(node->type & CONST_LIST)) return ASN1_VALUE_NOT_VALID; p = node->down; while (p) { if (type_field (p->type) == ASN1_ETYPE_CONSTANT) { if (!_asn1_strcmp (p->name, value)) { value_temp = malloc (SIZEOF_UNSIGNED_LONG_INT); if (value_temp == NULL) return ASN1_MEM_ALLOC_ERROR; _asn1_convert_integer (p->value, value_temp, SIZEOF_UNSIGNED_LONG_INT, &len); break; } } p = p->right; } if (p == NULL) return ASN1_VALUE_NOT_VALID; } } else { /* len != 0 */ value_temp = malloc (len); if (value_temp == NULL) return ASN1_MEM_ALLOC_ERROR; memcpy (value_temp, value, len); } if (value_temp[0] & 0x80) negative = 1; else negative = 0; if (negative && (type_field (node->type) == ASN1_ETYPE_ENUMERATED)) { free (value_temp); return ASN1_VALUE_NOT_VALID; } for (k = 0; k < len - 1; k++) if (negative && (value_temp[k] != 0xFF)) break; else if (!negative && value_temp[k]) break; if ((negative && !(value_temp[k] & 0x80)) || (!negative && (value_temp[k] & 0x80))) k--; _asn1_set_value_lv (node, value_temp + k, len - k); if (node->type & CONST_DEFAULT) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if ((isdigit (p->value[0])) || (p->value[0] == '-')) { default_temp = malloc (SIZEOF_UNSIGNED_LONG_INT); if (default_temp == NULL) { free (value_temp); return ASN1_MEM_ALLOC_ERROR; } _asn1_convert_integer (p->value, default_temp, SIZEOF_UNSIGNED_LONG_INT, &len2); } else { /* is an identifier like v1 */ if (!(node->type & CONST_LIST)) { free (value_temp); return ASN1_VALUE_NOT_VALID; } p2 = node->down; while (p2) { if (type_field (p2->type) == ASN1_ETYPE_CONSTANT) { if (!_asn1_strcmp (p2->name, p->value)) { default_temp = malloc (SIZEOF_UNSIGNED_LONG_INT); if (default_temp == NULL) { free (value_temp); return ASN1_MEM_ALLOC_ERROR; } _asn1_convert_integer (p2->value, default_temp, SIZEOF_UNSIGNED_LONG_INT, &len2); break; } } p2 = p2->right; } if (p2 == NULL) { free (value_temp); return ASN1_VALUE_NOT_VALID; } } if ((len - k) == len2) { for (k2 = 0; k2 < len2; k2++) if (value_temp[k + k2] != default_temp[k2]) { break; } if (k2 == len2) _asn1_set_value (node, NULL, 0); } free (default_temp); } free (value_temp); break; case ASN1_ETYPE_OBJECT_ID: for (i = 0; i < _asn1_strlen (value); i++) if ((!isdigit (value[i])) && (value[i] != '.') && (value[i] != '+')) return ASN1_VALUE_NOT_VALID; if (node->type & CONST_DEFAULT) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if (!_asn1_strcmp (value, p->value)) { _asn1_set_value (node, NULL, 0); break; } } _asn1_set_value (node, value, _asn1_strlen (value) + 1); break; case ASN1_ETYPE_UTC_TIME: { len = _asn1_strlen (value); if (len < 11) return ASN1_VALUE_NOT_VALID; for (k = 0; k < 10; k++) if (!isdigit (value[k])) return ASN1_VALUE_NOT_VALID; switch (len) { case 11: if (value[10] != 'Z') return ASN1_VALUE_NOT_VALID; break; case 13: if ((!isdigit (value[10])) || (!isdigit (value[11])) || (value[12] != 'Z')) return ASN1_VALUE_NOT_VALID; break; case 15: if ((value[10] != '+') && (value[10] != '-')) return ASN1_VALUE_NOT_VALID; for (k = 11; k < 15; k++) if (!isdigit (value[k])) return ASN1_VALUE_NOT_VALID; break; case 17: if ((!isdigit (value[10])) || (!isdigit (value[11]))) return ASN1_VALUE_NOT_VALID; if ((value[12] != '+') && (value[12] != '-')) return ASN1_VALUE_NOT_VALID; for (k = 13; k < 17; k++) if (!isdigit (value[k])) return ASN1_VALUE_NOT_VALID; break; default: return ASN1_VALUE_NOT_FOUND; } _asn1_set_value (node, value, len); } break; case ASN1_ETYPE_GENERALIZED_TIME: len = _asn1_strlen (value); _asn1_set_value (node, value, len); break; case ASN1_ETYPE_OCTET_STRING: case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: if (len == 0) len = _asn1_strlen (value); _asn1_set_value_lv (node, value, len); break; case ASN1_ETYPE_BIT_STRING: if (len == 0) len = _asn1_strlen (value); asn1_length_der ((len >> 3) + 2, NULL, &len2); temp = malloc ((len >> 3) + 2 + len2); if (temp == NULL) return ASN1_MEM_ALLOC_ERROR; asn1_bit_der (value, len, temp, &len2); _asn1_set_value_m (node, temp, len2); temp = NULL; break; case ASN1_ETYPE_CHOICE: p = node->down; while (p) { if (!_asn1_strcmp (p->name, value)) { p2 = node->down; while (p2) { if (p2 != p) { asn1_delete_structure (&p2); p2 = node->down; } else p2 = p2->right; } break; } p = p->right; } if (!p) return ASN1_ELEMENT_NOT_FOUND; break; case ASN1_ETYPE_ANY: _asn1_set_value_lv (node, value, len); break; case ASN1_ETYPE_SEQUENCE_OF: case ASN1_ETYPE_SET_OF: if (_asn1_strcmp (value, "NEW")) return ASN1_VALUE_NOT_VALID; _asn1_append_sequence_set (node); break; default: return ASN1_ELEMENT_NOT_FOUND; break; } return ASN1_SUCCESS; } #define PUT_VALUE( ptr, ptr_size, data, data_size) \ *len = data_size; \ if (ptr_size < data_size) { \ return ASN1_MEM_ERROR; \ } else { \ memcpy( ptr, data, data_size); \ } #define PUT_STR_VALUE( ptr, ptr_size, data) \ *len = _asn1_strlen(data) + 1; \ if (ptr_size < *len) { \ return ASN1_MEM_ERROR; \ } else { \ /* this strcpy is checked */ \ _asn1_strcpy(ptr, data); \ } #define PUT_AS_STR_VALUE( ptr, ptr_size, data, data_size) \ *len = data_size + 1; \ if (ptr_size < *len) { \ return ASN1_MEM_ERROR; \ } else { \ /* this strcpy is checked */ \ memcpy(ptr, data, data_size); \ ptr[data_size] = 0; \ } #define ADD_STR_VALUE( ptr, ptr_size, data) \ *len = (int) _asn1_strlen(data) + 1; \ if (ptr_size < (int) _asn1_strlen(ptr)+(*len)) { \ return ASN1_MEM_ERROR; \ } else { \ /* this strcat is checked */ \ _asn1_strcat(ptr, data); \ } /** * asn1_read_value: * @root: pointer to a structure. * @name: the name of the element inside a structure that you want to read. * @ivalue: vector that will contain the element's content, must be a * pointer to memory cells already allocated. * @len: number of bytes of *value: value[0]..value[len-1]. Initialy * holds the sizeof value. * * Returns the value of one element inside a structure. * * If an element is OPTIONAL and the function "read_value" returns * %ASN1_ELEMENT_NOT_FOUND, it means that this element wasn't present * in the der encoding that created the structure. The first element * of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and * so on. * * INTEGER: VALUE will contain a two's complement form integer. * * integer=-1 -> value[0]=0xFF , len=1. * integer=1 -> value[0]=0x01 , len=1. * * ENUMERATED: As INTEGER (but only with not negative numbers). * * BOOLEAN: VALUE will be the null terminated string "TRUE" or * "FALSE" and LEN=5 or LEN=6. * * OBJECT IDENTIFIER: VALUE will be a null terminated string with * each number separated by a dot (i.e. "1.2.3.543.1"). * * LEN = strlen(VALUE)+1 * * UTCTime: VALUE will be a null terminated string in one of these * formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". * LEN=strlen(VALUE)+1. * * GeneralizedTime: VALUE will be a null terminated string in the * same format used to set the value. * * OCTET STRING: VALUE will contain the octet string and LEN will be * the number of octets. * * GeneralString: VALUE will contain the generalstring and LEN will * be the number of octets. * * BIT STRING: VALUE will contain the bit string organized by bytes * and LEN will be the number of bits. * * CHOICE: If NAME indicates a choice type, VALUE will specify the * alternative selected. * * ANY: If NAME indicates an any type, VALUE will indicate the DER * encoding of the structure actually used. * * Returns: %ASN1_SUCCESS if value is returned, * %ASN1_ELEMENT_NOT_FOUND if @name is not a valid element, * %ASN1_VALUE_NOT_FOUND if there isn't any value for the element * selected, and %ASN1_MEM_ERROR if The value vector isn't big enough * to store the result, and in this case @len will contain the number of * bytes needed. **/ int asn1_read_value (asn1_node root, const char *name, void *ivalue, int *len) { return asn1_read_value_type (root, name, ivalue, len, NULL); } /** * asn1_read_value_type: * @root: pointer to a structure. * @name: the name of the element inside a structure that you want to read. * @ivalue: vector that will contain the element's content, must be a * pointer to memory cells already allocated. * @len: number of bytes of *value: value[0]..value[len-1]. Initialy * holds the sizeof value. * @etype: The type of the value read (ASN1_ETYPE) * * Returns the value of one element inside a structure. * * If an element is OPTIONAL and the function "read_value" returns * %ASN1_ELEMENT_NOT_FOUND, it means that this element wasn't present * in the der encoding that created the structure. The first element * of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and * so on. * * INTEGER: VALUE will contain a two's complement form integer. * * integer=-1 -> value[0]=0xFF , len=1. * integer=1 -> value[0]=0x01 , len=1. * * ENUMERATED: As INTEGER (but only with not negative numbers). * * BOOLEAN: VALUE will be the null terminated string "TRUE" or * "FALSE" and LEN=5 or LEN=6. * * OBJECT IDENTIFIER: VALUE will be a null terminated string with * each number separated by a dot (i.e. "1.2.3.543.1"). * * LEN = strlen(VALUE)+1 * * UTCTime: VALUE will be a null terminated string in one of these * formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". * LEN=strlen(VALUE)+1. * * GeneralizedTime: VALUE will be a null terminated string in the * same format used to set the value. * * OCTET STRING: VALUE will contain the octet string and LEN will be * the number of octets. * * GeneralString: VALUE will contain the generalstring and LEN will * be the number of octets. * * BIT STRING: VALUE will contain the bit string organized by bytes * and LEN will be the number of bits. * * CHOICE: If NAME indicates a choice type, VALUE will specify the * alternative selected. * * ANY: If NAME indicates an any type, VALUE will indicate the DER * encoding of the structure actually used. * * Returns: %ASN1_SUCCESS if value is returned, * %ASN1_ELEMENT_NOT_FOUND if @name is not a valid element, * %ASN1_VALUE_NOT_FOUND if there isn't any value for the element * selected, and %ASN1_MEM_ERROR if The value vector isn't big enough * to store the result, and in this case @len will contain the number of * bytes needed. **/ int asn1_read_value_type (asn1_node root, const char *name, void *ivalue, int *len, unsigned int *etype) { asn1_node node, p, p2; int len2, len3; int value_size = *len; unsigned char *value = ivalue; unsigned type; node = asn1_find_node (root, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; type = type_field (node->type); if ((type != ASN1_ETYPE_NULL) && (type != ASN1_ETYPE_CHOICE) && !(node->type & CONST_DEFAULT) && !(node->type & CONST_ASSIGN) && (node->value == NULL)) return ASN1_VALUE_NOT_FOUND; if (etype) *etype = type; switch (type) { case ASN1_ETYPE_NULL: PUT_STR_VALUE (value, value_size, "NULL"); break; case ASN1_ETYPE_BOOLEAN: if ((node->type & CONST_DEFAULT) && (node->value == NULL)) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if (p->type & CONST_TRUE) { PUT_STR_VALUE (value, value_size, "TRUE"); } else { PUT_STR_VALUE (value, value_size, "FALSE"); } } else if (node->value[0] == 'T') { PUT_STR_VALUE (value, value_size, "TRUE"); } else { PUT_STR_VALUE (value, value_size, "FALSE"); } break; case ASN1_ETYPE_INTEGER: case ASN1_ETYPE_ENUMERATED: if ((node->type & CONST_DEFAULT) && (node->value == NULL)) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; if ((isdigit (p->value[0])) || (p->value[0] == '-') || (p->value[0] == '+')) { if (_asn1_convert_integer (p->value, value, value_size, len) != ASN1_SUCCESS) return ASN1_MEM_ERROR; } else { /* is an identifier like v1 */ p2 = node->down; while (p2) { if (type_field (p2->type) == ASN1_ETYPE_CONSTANT) { if (!_asn1_strcmp (p2->name, p->value)) { if (_asn1_convert_integer (p2->value, value, value_size, len) != ASN1_SUCCESS) return ASN1_MEM_ERROR; break; } } p2 = p2->right; } } } else { len2 = -1; if (asn1_get_octet_der (node->value, node->value_len, &len2, value, value_size, len) != ASN1_SUCCESS) return ASN1_MEM_ERROR; } break; case ASN1_ETYPE_OBJECT_ID: if (node->type & CONST_ASSIGN) { value[0] = 0; p = node->down; while (p) { if (type_field (p->type) == ASN1_ETYPE_CONSTANT) { ADD_STR_VALUE (value, value_size, p->value); if (p->right) { ADD_STR_VALUE (value, value_size, "."); } } p = p->right; } *len = _asn1_strlen (value) + 1; } else if ((node->type & CONST_DEFAULT) && (node->value == NULL)) { p = node->down; while (type_field (p->type) != ASN1_ETYPE_DEFAULT) p = p->right; PUT_STR_VALUE (value, value_size, p->value); } else { PUT_STR_VALUE (value, value_size, node->value); } break; case ASN1_ETYPE_GENERALIZED_TIME: case ASN1_ETYPE_UTC_TIME: PUT_AS_STR_VALUE (value, value_size, node->value, node->value_len); break; case ASN1_ETYPE_OCTET_STRING: case ASN1_ETYPE_GENERALSTRING: case ASN1_ETYPE_NUMERIC_STRING: case ASN1_ETYPE_IA5_STRING: case ASN1_ETYPE_TELETEX_STRING: case ASN1_ETYPE_PRINTABLE_STRING: case ASN1_ETYPE_UNIVERSAL_STRING: case ASN1_ETYPE_BMP_STRING: case ASN1_ETYPE_UTF8_STRING: case ASN1_ETYPE_VISIBLE_STRING: len2 = -1; if (asn1_get_octet_der (node->value, node->value_len, &len2, value, value_size, len) != ASN1_SUCCESS) return ASN1_MEM_ERROR; break; case ASN1_ETYPE_BIT_STRING: len2 = -1; if (asn1_get_bit_der (node->value, node->value_len, &len2, value, value_size, len) != ASN1_SUCCESS) return ASN1_MEM_ERROR; break; case ASN1_ETYPE_CHOICE: PUT_STR_VALUE (value, value_size, node->down->name); break; case ASN1_ETYPE_ANY: len3 = -1; len2 = asn1_get_length_der (node->value, node->value_len, &len3); if (len2 < 0) return ASN1_DER_ERROR; PUT_VALUE (value, value_size, node->value + len3, len2); break; default: return ASN1_ELEMENT_NOT_FOUND; break; } return ASN1_SUCCESS; } /** * asn1_read_tag: * @root: pointer to a structure * @name: the name of the element inside a structure. * @tagValue: variable that will contain the TAG value. * @classValue: variable that will specify the TAG type. * * Returns the TAG and the CLASS of one element inside a structure. * CLASS can have one of these constants: %ASN1_CLASS_APPLICATION, * %ASN1_CLASS_UNIVERSAL, %ASN1_CLASS_PRIVATE or * %ASN1_CLASS_CONTEXT_SPECIFIC. * * Returns: %ASN1_SUCCESS if successful, %ASN1_ELEMENT_NOT_FOUND if * @name is not a valid element. **/ int asn1_read_tag (asn1_node root, const char *name, int *tagValue, int *classValue) { asn1_node node, p, pTag; node = asn1_find_node (root, name); if (node == NULL) return ASN1_ELEMENT_NOT_FOUND; p = node->down; /* pTag will points to the IMPLICIT TAG */ pTag = NULL; if (node->type & CONST_TAG) { while (p) { if (type_field (p->type) == ASN1_ETYPE_TAG) { if ((p->type & CONST_IMPLICIT) && (pTag == NULL)) pTag = p; else if (p->type & CONST_EXPLICIT) pTag = NULL; } p = p->right; } } if (pTag) { *tagValue = _asn1_strtoul (pTag->value, NULL, 10); if (pTag->type & CONST_APPLICATION) *classValue = ASN1_CLASS_APPLICATION; else if (pTag->type & CONST_UNIVERSAL) *classValue = ASN1_CLASS_UNIVERSAL; else if (pTag->type & CONST_PRIVATE) *classValue = ASN1_CLASS_PRIVATE; else *classValue = ASN1_CLASS_CONTEXT_SPECIFIC; } else { unsigned type = type_field (node->type); *classValue = ASN1_CLASS_UNIVERSAL; switch (type) { CASE_HANDLED_ETYPES: *tagValue = _asn1_tags[type].tag; break; case ASN1_ETYPE_TAG: case ASN1_ETYPE_CHOICE: case ASN1_ETYPE_ANY: *tagValue = -1; break; default: break; } } return ASN1_SUCCESS; } /** * asn1_read_node_value: * @node: pointer to a node. * @data: a point to a asn1_data_node_st * * Returns the value a data node inside a asn1_node structure. * The data returned should be handled as constant values. * * Returns: %ASN1_SUCCESS if the node exists. **/ int asn1_read_node_value (asn1_node node, asn1_data_node_st * data) { data->name = node->name; data->value = node->value; data->value_len = node->value_len; data->type = type_field (node->type); return ASN1_SUCCESS; } libtasn1-3.4/lib/structure.h0000664000000000000000000000262712244720630012754 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ /*************************************************/ /* File: structure.h */ /* Description: list of exported object by */ /* "structure.c" */ /*************************************************/ #ifndef _STRUCTURE_H #define _STRUCTURE_H int _asn1_create_static_structure (asn1_node pointer, char *output_file_name, char *vector_name); asn1_node _asn1_copy_structure3 (asn1_node source_node); asn1_node _asn1_add_single_node (unsigned int type); asn1_node _asn1_find_left (asn1_node node); #endif libtasn1-3.4/lib/libtasn1.map0000664000000000000000000000316112244720645012757 00000000000000# Copyright (C) 2009-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . LIBTASN1_0_3 { global: asn1_array2tree; asn1_bit_der; asn1_check_version; asn1_copy_node; asn1_create_element; asn1_delete_element; asn1_delete_structure; asn1_der_coding; asn1_der_decoding; asn1_der_decoding_element; asn1_der_decoding_startEnd; asn1_expand_any_defined_by; asn1_expand_octet_string; asn1_find_node; asn1_find_structure_from_oid; asn1_get_bit_der; asn1_get_length_ber; asn1_get_length_der; asn1_get_octet_der; asn1_get_tag_der; asn1_length_der; asn1_number_of_elements; asn1_octet_der; asn1_parser2array; asn1_parser2tree; asn1_perror; asn1_print_structure; asn1_read_tag; asn1_read_value; asn1_strerror; asn1_write_value; asn1_read_node_value; asn1_encode_simple_der; asn1_decode_simple_der; asn1_read_value_type; asn1_delete_structure2; local: *; }; libtasn1-3.4/lib/Makefile.in0000664000000000000000000014216412244721751012616 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ @HAVE_LD_VERSION_SCRIPT_TRUE@am__append_1 = -Wl,--version-script=$(srcdir)/libtasn1.map @HAVE_LD_VERSION_SCRIPT_FALSE@am__append_2 = -export-symbols-regex '^(asn1|libtasn1_).*' subdir = lib DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/libtasn1.pc.in ASN1.c \ $(top_srcdir)/build-aux/depcomp $(top_srcdir)/build-aux/ylwrap \ $(include_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = libtasn1.pc 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)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \ "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libtasn1_la_DEPENDENCIES = gllib/libgnu.la am_libtasn1_la_OBJECTS = ASN1.lo coding.lo decoding.lo element.lo \ errors.lo gstr.lo parser_aux.lo structure.lo version.lo libtasn1_la_OBJECTS = $(am_libtasn1_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libtasn1_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libtasn1_la_LDFLAGS) $(LDFLAGS) -o $@ 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = 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) LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(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 = YLWRAP = $(top_srcdir)/build-aux/ylwrap SOURCES = $(libtasn1_la_SOURCES) DIST_SOURCES = $(libtasn1_la_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 DATA = $(pkgconfig_DATA) HEADERS = $(include_HEADERS) 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 \ distdir 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 DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 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" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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 = gllib AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAG_VISIBILITY) AM_CPPFLAGS = -I$(srcdir)/gllib -DASN1_BUILDING include_HEADERS = libtasn1.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libtasn1.pc lib_LTLIBRARIES = libtasn1.la libtasn1_la_SOURCES = \ ASN1.y \ coding.c \ decoding.c \ element.c \ element.h \ errors.c \ gstr.c \ gstr.h \ int.h \ libtasn1.h \ libtasn1.map \ parser_aux.c \ parser_aux.h \ structure.c \ structure.h \ version.c libtasn1_la_LIBADD = gllib/libgnu.la libtasn1_la_LDFLAGS = -no-undefined -version-info \ $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) $(am__append_1) \ $(am__append_2) all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj .y $(srcdir)/Makefile.in: $(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 lib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/Makefile .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): libtasn1.pc: $(top_builddir)/config.status $(srcdir)/libtasn1.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libtasn1.la: $(libtasn1_la_OBJECTS) $(libtasn1_la_DEPENDENCIES) $(EXTRA_libtasn1_la_DEPENDENCIES) $(AM_V_CCLD)$(libtasn1_la_LINK) -rpath $(libdir) $(libtasn1_la_OBJECTS) $(libtasn1_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ASN1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coding.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decoding.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/element.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errors.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gstr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser_aux.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/structure.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ .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 $< .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 `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< .y.c: $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || 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)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || 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_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) # 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" 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 distdir: $(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 @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 check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done 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." -rm -f ASN1.c clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-includeHEADERS install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \ uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libLTLIBRARIES \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags 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-includeHEADERS install-info \ install-info-am install-libLTLIBRARIES install-man install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-includeHEADERS uninstall-libLTLIBRARIES \ uninstall-pkgconfigDATA # 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: libtasn1-3.4/lib/gstr.c0000664000000000000000000000366412244720630011670 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ #include #include "gstr.h" /* These function are like strcat, strcpy. They only * do bounds checking (they shouldn't cause buffer overruns), * and they always produce null terminated strings. * * They should be used only with null terminated strings. */ void _asn1_str_cat (char *dest, size_t dest_tot_size, const char *src) { size_t str_size = strlen (src); size_t dest_size = strlen (dest); if (dest_tot_size - dest_size > str_size) { strcat (dest, src); } else { if (dest_tot_size - dest_size > 0) { strncat (dest, src, (dest_tot_size - dest_size) - 1); dest[dest_tot_size - 1] = 0; } } } /* Returns the bytes copied (not including the null terminator) */ unsigned int _asn1_str_cpy (char *dest, size_t dest_tot_size, const char *src) { size_t str_size = strlen (src); if (dest_tot_size > str_size) { strcpy (dest, src); return str_size; } else { if (dest_tot_size > 0) { str_size = dest_tot_size - 1; memcpy (dest, src, str_size); dest[str_size] = 0; return str_size; } else return 0; } } libtasn1-3.4/lib/libtasn1.h0000664000000000000000000002630412244720630012427 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * LIBTASN1 is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * LIBTASN1 is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with LIBTASN1; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA * */ #ifndef LIBTASN1_H #define LIBTASN1_H #ifndef ASN1_API #if defined ASN1_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY #define ASN1_API __attribute__((__visibility__("default"))) #elif defined ASN1_BUILDING && defined _MSC_VER && ! defined ASN1_STATIC #define ASN1_API __declspec(dllexport) #elif defined _MSC_VER && ! defined ASN1_STATIC #define ASN1_API __declspec(dllimport) #else #define ASN1_API #endif #endif #include #include #include /* for FILE* */ #ifdef __cplusplus extern "C" { #endif #define ASN1_VERSION "3.4" /*****************************************/ /* Errors returned by libtasn1 functions */ /*****************************************/ #define ASN1_SUCCESS 0 #define ASN1_FILE_NOT_FOUND 1 #define ASN1_ELEMENT_NOT_FOUND 2 #define ASN1_IDENTIFIER_NOT_FOUND 3 #define ASN1_DER_ERROR 4 #define ASN1_VALUE_NOT_FOUND 5 #define ASN1_GENERIC_ERROR 6 #define ASN1_VALUE_NOT_VALID 7 #define ASN1_TAG_ERROR 8 #define ASN1_TAG_IMPLICIT 9 #define ASN1_ERROR_TYPE_ANY 10 #define ASN1_SYNTAX_ERROR 11 #define ASN1_MEM_ERROR 12 #define ASN1_MEM_ALLOC_ERROR 13 #define ASN1_DER_OVERFLOW 14 #define ASN1_NAME_TOO_LONG 15 #define ASN1_ARRAY_ERROR 16 #define ASN1_ELEMENT_NOT_EMPTY 17 /*************************************/ /* Constants used in asn1_visit_tree */ /*************************************/ #define ASN1_PRINT_NAME 1 #define ASN1_PRINT_NAME_TYPE 2 #define ASN1_PRINT_NAME_TYPE_VALUE 3 #define ASN1_PRINT_ALL 4 /*****************************************/ /* Constants returned by asn1_read_tag */ /*****************************************/ #define ASN1_CLASS_UNIVERSAL 0x00 /* old: 1 */ #define ASN1_CLASS_APPLICATION 0x40 /* old: 2 */ #define ASN1_CLASS_CONTEXT_SPECIFIC 0x80 /* old: 3 */ #define ASN1_CLASS_PRIVATE 0xC0 /* old: 4 */ #define ASN1_CLASS_STRUCTURED 0x20 /*****************************************/ /* Constants returned by asn1_read_tag */ /*****************************************/ #define ASN1_TAG_BOOLEAN 0x01 #define ASN1_TAG_INTEGER 0x02 #define ASN1_TAG_SEQUENCE 0x10 #define ASN1_TAG_SET 0x11 #define ASN1_TAG_OCTET_STRING 0x04 #define ASN1_TAG_BIT_STRING 0x03 #define ASN1_TAG_UTCTime 0x17 #define ASN1_TAG_GENERALIZEDTime 0x18 #define ASN1_TAG_OBJECT_ID 0x06 #define ASN1_TAG_ENUMERATED 0x0A #define ASN1_TAG_NULL 0x05 #define ASN1_TAG_GENERALSTRING 0x1B #define ASN1_TAG_NUMERIC_STRING 0x12 #define ASN1_TAG_IA5_STRING 0x16 #define ASN1_TAG_TELETEX_STRING 0x14 #define ASN1_TAG_PRINTABLE_STRING 0x13 #define ASN1_TAG_UNIVERSAL_STRING 0x1C #define ASN1_TAG_BMP_STRING 0x1E #define ASN1_TAG_UTF8_STRING 0x0C #define ASN1_TAG_VISIBLE_STRING 0x1A /******************************************************/ /* Structure definition used for the node of the tree */ /* that represent an ASN.1 DEFINITION. */ /******************************************************/ typedef struct asn1_node_st asn1_node_st; typedef asn1_node_st *asn1_node; /* maximum number of characters of a name */ /* inside a file with ASN1 definitons */ #define ASN1_MAX_NAME_SIZE 64 /*****************************************/ /* For the on-disk format of ASN.1 trees */ /*****************************************/ struct asn1_static_node_st { const char *name; /* Node name */ unsigned int type; /* Node type */ const void *value; /* Node value */ }; typedef struct asn1_static_node_st asn1_static_node; /* List of constants for field type of node_asn */ #define ASN1_ETYPE_INVALID 0 #define ASN1_ETYPE_CONSTANT 1 #define ASN1_ETYPE_IDENTIFIER 2 #define ASN1_ETYPE_INTEGER 3 #define ASN1_ETYPE_BOOLEAN 4 #define ASN1_ETYPE_SEQUENCE 5 #define ASN1_ETYPE_BIT_STRING 6 #define ASN1_ETYPE_OCTET_STRING 7 #define ASN1_ETYPE_TAG 8 #define ASN1_ETYPE_DEFAULT 9 #define ASN1_ETYPE_SIZE 10 #define ASN1_ETYPE_SEQUENCE_OF 11 #define ASN1_ETYPE_OBJECT_ID 12 #define ASN1_ETYPE_ANY 13 #define ASN1_ETYPE_SET 14 #define ASN1_ETYPE_SET_OF 15 #define ASN1_ETYPE_DEFINITIONS 16 #define ASN1_ETYPE_CHOICE 18 #define ASN1_ETYPE_IMPORTS 19 #define ASN1_ETYPE_NULL 20 #define ASN1_ETYPE_ENUMERATED 21 #define ASN1_ETYPE_GENERALSTRING 27 #define ASN1_ETYPE_NUMERIC_STRING 28 #define ASN1_ETYPE_IA5_STRING 29 #define ASN1_ETYPE_TELETEX_STRING 30 #define ASN1_ETYPE_PRINTABLE_STRING 31 #define ASN1_ETYPE_UNIVERSAL_STRING 32 #define ASN1_ETYPE_BMP_STRING 33 #define ASN1_ETYPE_UTF8_STRING 34 #define ASN1_ETYPE_VISIBLE_STRING 35 #define ASN1_ETYPE_UTC_TIME 36 #define ASN1_ETYPE_GENERALIZED_TIME 37 /* Flags used by asn1_delete_structure2() */ /* makes sure the values are zeroized prior to deinitialization */ #define ASN1_DELETE_FLAG_ZEROIZE 1 struct asn1_data_node_st { const char *name; /* Node name */ const void *value; /* Node value */ unsigned int value_len; /* Node value size */ unsigned int type; /* Node value type (ASN1_ETYPE_*) */ }; typedef struct asn1_data_node_st asn1_data_node_st; /***********************************/ /* Fixed constants */ /***********************************/ /* maximum number of characters */ /* of a description message */ /* (null character included) */ #define ASN1_MAX_ERROR_DESCRIPTION_SIZE 128 /***********************************/ /* Functions definitions */ /***********************************/ extern ASN1_API int asn1_parser2tree (const char *file, asn1_node * definitions, char *error_desc); extern ASN1_API int asn1_parser2array (const char *inputFileName, const char *outputFileName, const char *vectorName, char *error_desc); extern ASN1_API int asn1_array2tree (const asn1_static_node * array, asn1_node * definitions, char *errorDescription); extern ASN1_API void asn1_print_structure (FILE * out, asn1_node structure, const char *name, int mode); extern ASN1_API int asn1_create_element (asn1_node definitions, const char *source_name, asn1_node * element); extern ASN1_API int asn1_delete_structure (asn1_node * structure); extern ASN1_API int asn1_delete_structure2 (asn1_node * structure, unsigned int flags); extern ASN1_API int asn1_delete_element (asn1_node structure, const char *element_name); extern ASN1_API int asn1_write_value (asn1_node node_root, const char *name, const void *ivalue, int len); extern ASN1_API int asn1_read_value (asn1_node root, const char *name, void *ivalue, int *len); extern ASN1_API int asn1_read_value_type (asn1_node root, const char *name, void *ivalue, int *len, unsigned int *etype); extern ASN1_API int asn1_read_node_value (asn1_node node, asn1_data_node_st * data); extern ASN1_API int asn1_number_of_elements (asn1_node element, const char *name, int *num); extern ASN1_API int asn1_der_coding (asn1_node element, const char *name, void *ider, int *len, char *ErrorDescription); extern ASN1_API int asn1_der_decoding (asn1_node * element, const void *ider, int len, char *errorDescription); extern ASN1_API int asn1_der_decoding_element (asn1_node * structure, const char *elementName, const void *ider, int len, char *errorDescription); extern ASN1_API int asn1_der_decoding_startEnd (asn1_node element, const void *ider, int len, const char *name_element, int *start, int *end); extern ASN1_API int asn1_expand_any_defined_by (asn1_node definitions, asn1_node * element); extern ASN1_API int asn1_expand_octet_string (asn1_node definitions, asn1_node * element, const char *octetName, const char *objectName); extern ASN1_API int asn1_read_tag (asn1_node root, const char *name, int *tagValue, int *classValue); extern ASN1_API const char *asn1_find_structure_from_oid (asn1_node definitions, const char *oidValue); extern ASN1_API const char *asn1_check_version (const char *req_version); extern ASN1_API const char *asn1_strerror (int error); extern ASN1_API void asn1_perror (int error); #define ASN1_MAX_TAG_SIZE 4 #define ASN1_MAX_LENGTH_SIZE 9 #define ASN1_MAX_TL_SIZE (ASN1_MAX_TAG_SIZE+ASN1_MAX_LENGTH_SIZE) extern ASN1_API long asn1_get_length_der (const unsigned char *der, int der_len, int *len); extern ASN1_API long asn1_get_length_ber (const unsigned char *ber, int ber_len, int *len); extern ASN1_API void asn1_length_der (unsigned long int len, unsigned char *der, int *der_len); /* Other utility functions. */ extern ASN1_API int asn1_decode_simple_der (unsigned int etype, const unsigned char *der, unsigned int der_len, const unsigned char **str, unsigned int *str_len); extern ASN1_API int asn1_encode_simple_der (unsigned int etype, const unsigned char *str, unsigned int str_len, unsigned char *tl, unsigned int *tl_len); extern ASN1_API asn1_node asn1_find_node (asn1_node pointer, const char *name); extern ASN1_API int asn1_copy_node (asn1_node dst, const char *dst_name, asn1_node src, const char *src_name); /* Internal and low-level DER utility functions. */ extern ASN1_API int asn1_get_tag_der (const unsigned char *der, int der_len, unsigned char *cls, int *len, unsigned long *tag); extern ASN1_API void asn1_octet_der (const unsigned char *str, int str_len, unsigned char *der, int *der_len); extern ASN1_API int asn1_get_octet_der (const unsigned char *der, int der_len, int *ret_len, unsigned char *str, int str_size, int *str_len); extern ASN1_API void asn1_bit_der (const unsigned char *str, int bit_len, unsigned char *der, int *der_len); extern ASN1_API int asn1_get_bit_der (const unsigned char *der, int der_len, int *ret_len, unsigned char *str, int str_size, int *bit_len); /* Compatibility types */ typedef int asn1_retCode; /* type returned by libtasn1 functions */ #define node_asn_struct asn1_node_st #define node_asn asn1_node_st #define ASN1_TYPE asn1_node #define ASN1_TYPE_EMPTY NULL #define static_struct_asn asn1_static_node_st #define ASN1_ARRAY_TYPE asn1_static_node #define asn1_static_node_t asn1_static_node #define node_data_struct asn1_data_node_st #define ASN1_DATA_NODE asn1_data_node_st #ifdef __cplusplus } #endif #endif /* LIBTASN1_H */ libtasn1-3.4/lib/errors.c0000664000000000000000000000566612244720630012231 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * The LIBTASN1 library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ #include #ifdef STDC_HEADERS #include #endif #define LIBTASN1_ERROR_ENTRY(name) { #name, name } struct libtasn1_error_entry { const char *name; int number; }; typedef struct libtasn1_error_entry libtasn1_error_entry; static const libtasn1_error_entry error_algorithms[] = { LIBTASN1_ERROR_ENTRY (ASN1_SUCCESS), LIBTASN1_ERROR_ENTRY (ASN1_FILE_NOT_FOUND), LIBTASN1_ERROR_ENTRY (ASN1_ELEMENT_NOT_FOUND), LIBTASN1_ERROR_ENTRY (ASN1_IDENTIFIER_NOT_FOUND), LIBTASN1_ERROR_ENTRY (ASN1_DER_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_VALUE_NOT_FOUND), LIBTASN1_ERROR_ENTRY (ASN1_GENERIC_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_VALUE_NOT_VALID), LIBTASN1_ERROR_ENTRY (ASN1_TAG_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_TAG_IMPLICIT), LIBTASN1_ERROR_ENTRY (ASN1_ERROR_TYPE_ANY), LIBTASN1_ERROR_ENTRY (ASN1_SYNTAX_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_MEM_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_MEM_ALLOC_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_DER_OVERFLOW), LIBTASN1_ERROR_ENTRY (ASN1_NAME_TOO_LONG), LIBTASN1_ERROR_ENTRY (ASN1_ARRAY_ERROR), LIBTASN1_ERROR_ENTRY (ASN1_ELEMENT_NOT_EMPTY), {0, 0} }; /** * asn1_perror: * @error: is an error returned by a libtasn1 function. * * Prints a string to stderr with a description of an error. This * function is like perror(). The only difference is that it accepts * an error returned by a libtasn1 function. * * Since: 1.6 **/ void asn1_perror (int error) { const char *str = asn1_strerror (error); fprintf (stderr, "LIBTASN1 ERROR: %s\n", str ? str : "(null)"); } /** * asn1_strerror: * @error: is an error returned by a libtasn1 function. * * Returns a string with a description of an error. This function is * similar to strerror. The only difference is that it accepts an * error (number) returned by a libtasn1 function. * * Returns: Pointer to static zero-terminated string describing error * code. * * Since: 1.6 **/ const char * asn1_strerror (int error) { const libtasn1_error_entry *p; for (p = error_algorithms; p->name != NULL; p++) if (p->number == error) return p->name + sizeof ("ASN1_") - 1; return NULL; } libtasn1-3.4/lib/Makefile.am0000664000000000000000000000305712244720630012575 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . SUBDIRS = gllib AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAG_VISIBILITY) AM_CPPFLAGS = -I$(srcdir)/gllib -DASN1_BUILDING include_HEADERS = libtasn1.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libtasn1.pc lib_LTLIBRARIES = libtasn1.la libtasn1_la_SOURCES = \ ASN1.y \ coding.c \ decoding.c \ element.c \ element.h \ errors.c \ gstr.c \ gstr.h \ int.h \ libtasn1.h \ libtasn1.map \ parser_aux.c \ parser_aux.h \ structure.c \ structure.h \ version.c libtasn1_la_LIBADD = gllib/libgnu.la libtasn1_la_LDFLAGS = \ -no-undefined \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) if HAVE_LD_VERSION_SCRIPT libtasn1_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libtasn1.map else libtasn1_la_LDFLAGS += -export-symbols-regex '^(asn1|libtasn1_).*' endif libtasn1-3.4/README0000664000000000000000000000165012244720630010650 00000000000000This is GNU Libtasn1, a small ASN.1 library. The C library (libtasn1.*) is licensed under the GNU Lesser General Public License version 2.1 or later. See the file COPYING.LIB. The command line tool, self tests, examples, and other auxilliary files, are licensed under the GNU General Public License version 3.0 or later. See the file COPYING. The manual is in doc/. You can also browse the manual and see updates about the project on the homepage: http://www.gnu.org/software/libtasn1/ For any copyright year range specified as YYYY-ZZZZ in this package note that the range specifies every single year in that closed interval. ---------------------------------------------------------------------- Copyright (C) 2002-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. libtasn1-3.4/config.h.in0000664000000000000000000006611412244721747012033 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to the number of bits in type 'ptrdiff_t'. */ #undef BITSIZEOF_PTRDIFF_T /* Define to the number of bits in type 'sig_atomic_t'. */ #undef BITSIZEOF_SIG_ATOMIC_T /* Define to the number of bits in type 'size_t'. */ #undef BITSIZEOF_SIZE_T /* Define to the number of bits in type 'wchar_t'. */ #undef BITSIZEOF_WCHAR_T /* Define to the number of bits in type 'wint_t'. */ #undef BITSIZEOF_WINT_T /* Define to 1 if the system's ftello function has the Solaris bug. */ #undef FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE /* Define if gettimeofday clobbers the localtime buffer. */ #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME /* Define this to 'void' or 'struct timezone' to match the system's declaration of the second argument to gettimeofday. */ #undef GETTIMEOFDAY_TIMEZONE /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module fscanf shall be considered present. */ #undef GNULIB_FSCANF /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module scanf shall be considered present. */ #undef GNULIB_SCANF /* Define to 1 when the gnulib module fstat should be tested. */ #undef GNULIB_TEST_FSTAT /* Define to 1 when the gnulib module ftell should be tested. */ #undef GNULIB_TEST_FTELL /* Define to 1 when the gnulib module ftello should be tested. */ #undef GNULIB_TEST_FTELLO /* Define to 1 when the gnulib module getopt-gnu should be tested. */ #undef GNULIB_TEST_GETOPT_GNU /* Define to 1 when the gnulib module gettimeofday should be tested. */ #undef GNULIB_TEST_GETTIMEOFDAY /* Define to 1 when the gnulib module lseek should be tested. */ #undef GNULIB_TEST_LSEEK /* Define to 1 when the gnulib module malloc-posix should be tested. */ #undef GNULIB_TEST_MALLOC_POSIX /* Define to 1 when the gnulib module realloc-posix should be tested. */ #undef GNULIB_TEST_REALLOC_POSIX /* Define to 1 when the gnulib module strverscmp should be tested. */ #undef GNULIB_TEST_STRVERSCMP /* Define to 1 if you have the `clock_gettime' function. */ #undef HAVE_CLOCK_GETTIME /* Define to 1 if you have the `clock_settime' function. */ #undef HAVE_CLOCK_SETTIME /* Define to 1 if you have the declaration of `ftello', and to 0 if you don't. */ #undef HAVE_DECL_FTELLO /* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. */ #undef HAVE_DECL_GETENV /* Define to 1 if you have the declaration of `program_invocation_name', and to 0 if you don't. */ #undef HAVE_DECL_PROGRAM_INVOCATION_NAME /* Define to 1 if you have the declaration of `program_invocation_short_name', and to 0 if you don't. */ #undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #undef HAVE_FSEEKO /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* Define to 1 if you have the `getopt_long_only' function. */ #undef HAVE_GETOPT_LONG_ONLY /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if the system has the type 'long long int'. */ #undef HAVE_LONG_LONG_INT /* Define if the 'malloc' function is POSIX compliant. */ #undef HAVE_MALLOC_POSIX /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 on MSVC platforms that have the "invalid parameter handler" concept. */ #undef HAVE_MSVC_INVALID_PARAMETER_HANDLER /* Define to 1 if you have the `nanotime' function. */ #undef HAVE_NANOTIME /* Define to 1 if atoll is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ATOLL /* Define to 1 if canonicalize_file_name is declared even after undefining macros. */ #undef HAVE_RAW_DECL_CANONICALIZE_FILE_NAME /* Define to 1 if chdir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_CHDIR /* Define to 1 if chown is declared even after undefining macros. */ #undef HAVE_RAW_DECL_CHOWN /* Define to 1 if dprintf is declared even after undefining macros. */ #undef HAVE_RAW_DECL_DPRINTF /* Define to 1 if dup is declared even after undefining macros. */ #undef HAVE_RAW_DECL_DUP /* Define to 1 if dup2 is declared even after undefining macros. */ #undef HAVE_RAW_DECL_DUP2 /* Define to 1 if dup3 is declared even after undefining macros. */ #undef HAVE_RAW_DECL_DUP3 /* Define to 1 if endusershell is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ENDUSERSHELL /* Define to 1 if environ is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ENVIRON /* Define to 1 if euidaccess is declared even after undefining macros. */ #undef HAVE_RAW_DECL_EUIDACCESS /* Define to 1 if faccessat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FACCESSAT /* Define to 1 if fchdir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FCHDIR /* Define to 1 if fchmodat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FCHMODAT /* Define to 1 if fchownat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FCHOWNAT /* Define to 1 if fdatasync is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FDATASYNC /* Define to 1 if ffsl is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FFSL /* Define to 1 if ffsll is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FFSLL /* Define to 1 if fpurge is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FPURGE /* Define to 1 if fseeko is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FSEEKO /* Define to 1 if fstat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FSTAT /* Define to 1 if fstatat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FSTATAT /* Define to 1 if fsync is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FSYNC /* Define to 1 if ftello is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FTELLO /* Define to 1 if ftruncate is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FTRUNCATE /* Define to 1 if futimens is declared even after undefining macros. */ #undef HAVE_RAW_DECL_FUTIMENS /* Define to 1 if getcwd is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETCWD /* Define to 1 if getdelim is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETDELIM /* Define to 1 if getdomainname is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETDOMAINNAME /* Define to 1 if getdtablesize is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETDTABLESIZE /* Define to 1 if getgroups is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETGROUPS /* Define to 1 if gethostname is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETHOSTNAME /* Define to 1 if getline is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETLINE /* Define to 1 if getloadavg is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETLOADAVG /* Define to 1 if getlogin is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETLOGIN /* Define to 1 if getlogin_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETLOGIN_R /* Define to 1 if getpagesize is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETPAGESIZE /* Define to 1 if gets is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETS /* Define to 1 if getsubopt is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETSUBOPT /* Define to 1 if gettimeofday is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETTIMEOFDAY /* Define to 1 if getusershell is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GETUSERSHELL /* Define to 1 if grantpt is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GRANTPT /* Define to 1 if group_member is declared even after undefining macros. */ #undef HAVE_RAW_DECL_GROUP_MEMBER /* Define to 1 if initstate is declared even after undefining macros. */ #undef HAVE_RAW_DECL_INITSTATE /* Define to 1 if initstate_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_INITSTATE_R /* Define to 1 if isatty is declared even after undefining macros. */ #undef HAVE_RAW_DECL_ISATTY /* Define to 1 if lchmod is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LCHMOD /* Define to 1 if lchown is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LCHOWN /* Define to 1 if link is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LINK /* Define to 1 if linkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LINKAT /* Define to 1 if lseek is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LSEEK /* Define to 1 if lstat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_LSTAT /* Define to 1 if memmem is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MEMMEM /* Define to 1 if mempcpy is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MEMPCPY /* Define to 1 if memrchr is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MEMRCHR /* Define to 1 if mkdirat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKDIRAT /* Define to 1 if mkdtemp is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKDTEMP /* Define to 1 if mkfifo is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKFIFO /* Define to 1 if mkfifoat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKFIFOAT /* Define to 1 if mknod is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKNOD /* Define to 1 if mknodat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKNODAT /* Define to 1 if mkostemp is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKOSTEMP /* Define to 1 if mkostemps is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKOSTEMPS /* Define to 1 if mkstemp is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKSTEMP /* Define to 1 if mkstemps is declared even after undefining macros. */ #undef HAVE_RAW_DECL_MKSTEMPS /* Define to 1 if pclose is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PCLOSE /* Define to 1 if pipe is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PIPE /* Define to 1 if pipe2 is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PIPE2 /* Define to 1 if popen is declared even after undefining macros. */ #undef HAVE_RAW_DECL_POPEN /* Define to 1 if posix_openpt is declared even after undefining macros. */ #undef HAVE_RAW_DECL_POSIX_OPENPT /* Define to 1 if pread is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PREAD /* Define to 1 if ptsname is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PTSNAME /* Define to 1 if ptsname_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PTSNAME_R /* Define to 1 if pwrite is declared even after undefining macros. */ #undef HAVE_RAW_DECL_PWRITE /* Define to 1 if random is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RANDOM /* Define to 1 if random_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RANDOM_R /* Define to 1 if rawmemchr is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RAWMEMCHR /* Define to 1 if readlink is declared even after undefining macros. */ #undef HAVE_RAW_DECL_READLINK /* Define to 1 if readlinkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_READLINKAT /* Define to 1 if realpath is declared even after undefining macros. */ #undef HAVE_RAW_DECL_REALPATH /* Define to 1 if renameat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RENAMEAT /* Define to 1 if rmdir is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RMDIR /* Define to 1 if rpmatch is declared even after undefining macros. */ #undef HAVE_RAW_DECL_RPMATCH /* Define to 1 if secure_getenv is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SECURE_GETENV /* Define to 1 if setenv is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETENV /* Define to 1 if sethostname is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETHOSTNAME /* Define to 1 if setstate is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETSTATE /* Define to 1 if setstate_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETSTATE_R /* Define to 1 if setusershell is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SETUSERSHELL /* Define to 1 if sleep is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SLEEP /* Define to 1 if snprintf is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SNPRINTF /* Define to 1 if srandom is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SRANDOM /* Define to 1 if srandom_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SRANDOM_R /* Define to 1 if stat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STAT /* Define to 1 if stpcpy is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STPCPY /* Define to 1 if stpncpy is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STPNCPY /* Define to 1 if strcasestr is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRCASESTR /* Define to 1 if strchrnul is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRCHRNUL /* Define to 1 if strdup is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRDUP /* Define to 1 if strerror_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRERROR_R /* Define to 1 if strncat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRNCAT /* Define to 1 if strndup is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRNDUP /* Define to 1 if strnlen is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRNLEN /* Define to 1 if strpbrk is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRPBRK /* Define to 1 if strsep is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRSEP /* Define to 1 if strsignal is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRSIGNAL /* Define to 1 if strtod is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRTOD /* Define to 1 if strtok_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRTOK_R /* Define to 1 if strtoll is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRTOLL /* Define to 1 if strtoull is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRTOULL /* Define to 1 if strverscmp is declared even after undefining macros. */ #undef HAVE_RAW_DECL_STRVERSCMP /* Define to 1 if symlink is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SYMLINK /* Define to 1 if symlinkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_SYMLINKAT /* Define to 1 if tmpfile is declared even after undefining macros. */ #undef HAVE_RAW_DECL_TMPFILE /* Define to 1 if ttyname_r is declared even after undefining macros. */ #undef HAVE_RAW_DECL_TTYNAME_R /* Define to 1 if unlink is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UNLINK /* Define to 1 if unlinkat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UNLINKAT /* Define to 1 if unlockpt is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UNLOCKPT /* Define to 1 if unsetenv is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UNSETENV /* Define to 1 if usleep is declared even after undefining macros. */ #undef HAVE_RAW_DECL_USLEEP /* Define to 1 if utimensat is declared even after undefining macros. */ #undef HAVE_RAW_DECL_UTIMENSAT /* Define to 1 if vdprintf is declared even after undefining macros. */ #undef HAVE_RAW_DECL_VDPRINTF /* Define to 1 if vsnprintf is declared even after undefining macros. */ #undef HAVE_RAW_DECL_VSNPRINTF /* Define to 1 if _Exit is declared even after undefining macros. */ #undef HAVE_RAW_DECL__EXIT /* Define if the 'realloc' function is POSIX compliant. */ #undef HAVE_REALLOC_POSIX /* Define to 1 if 'sig_atomic_t' is a signed integer type. */ #undef HAVE_SIGNED_SIG_ATOMIC_T /* Define to 1 if 'wchar_t' is a signed integer type. */ #undef HAVE_SIGNED_WCHAR_T /* Define to 1 if 'wint_t' is a signed integer type. */ #undef HAVE_SIGNED_WINT_T /* 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 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 `strverscmp' function. */ #undef HAVE_STRVERSCMP /* Define to 1 if you have the header file. */ #undef HAVE_SYS_BITYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* 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_TIMEB_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_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 the system has the type 'unsigned long long int'. */ #undef HAVE_UNSIGNED_LONG_LONG_INT /* Define to 1 or 0, depending whether the compiler supports simple visibility declarations. */ #undef HAVE_VISIBILITY /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H /* Define if you have the 'wchar_t' type. */ #undef HAVE_WCHAR_T /* Define to 1 if you have the header file. */ #undef HAVE_WINSOCK2_H /* Define to 1 if you have the `_ftelli64' function. */ #undef HAVE__FTELLI64 /* Define to 1 if you have the `_ftime' function. */ #undef HAVE__FTIME /* Define to 1 if you have the `_set_invalid_parameter_handler' function. */ #undef HAVE__SET_INVALID_PARAMETER_HANDLER /* Define to 1 if lseek does not detect pipes. */ #undef LSEEK_PIPE_BROKEN /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* 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 /* String identifying the packager of this software */ #undef PACKAGE_PACKAGER /* Packager info for bug reports (URL/e-mail/...) */ #undef PACKAGE_PACKAGER_BUG_REPORTS /* Packager-specific version information */ #undef PACKAGE_PACKAGER_VERSION /* 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 /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'ptrdiff_t'. */ #undef PTRDIFF_T_SUFFIX /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'sig_atomic_t'. */ #undef SIG_ATOMIC_T_SUFFIX /* The size of `unsigned int', as computed by sizeof. */ #undef SIZEOF_UNSIGNED_INT /* The size of `unsigned long int', as computed by sizeof. */ #undef SIZEOF_UNSIGNED_LONG_INT /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'size_t'. */ #undef SIZE_T_SUFFIX /* Define to 1 if the `S_IS*' macros in do not work properly. */ #undef STAT_MACROS_BROKEN /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable general extensions on OS X. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable X/Open extensions if necessary. HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Version number of package */ #undef VERSION /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'wchar_t'. */ #undef WCHAR_T_SUFFIX /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'wint_t'. */ #undef WINT_T_SUFFIX /* Enable large inode numbers on Mac OS X 10.5. */ #undef _DARWIN_USE_64_BIT_INODE /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define to 1 if Gnulib overrides 'struct stat' on Windows so that struct stat.st_size becomes 64-bit. */ #undef _GL_WINDOWS_64_BIT_ST_SIZE /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ #undef _LARGEFILE_SOURCE /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 1 to make NetBSD features available. MINIX 3 needs this. */ #undef _NETBSD_SOURCE /* The _Noreturn keyword of C11. */ #if ! (defined _Noreturn \ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for 'stat' and other things to work. */ #undef _POSIX_SOURCE /* Define to rpl_ if the getopt replacement functions and variables should be used. */ #undef __GETOPT_PREFIX /* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'. _GL_EXTERN_INLINE is a portable alternative to 'extern inline'. _GL_INLINE_HEADER_BEGIN contains useful stuff to put in an include file, before uses of _GL_INLINE. It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic, when FOO is an inline function in the header; see . _GL_INLINE_HEADER_END contains useful stuff to put in the same include file, after uses of _GL_INLINE. Suppress extern inline with HP-UX cc, as it appears to be broken; see . Suppress the use of extern inline on Apple's platforms, as Libc-825.25 (2012-09-19) is incompatible with it; see . Perhaps Apple will fix this some day. */ #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ : 199901L <= __STDC_VERSION__ && !defined __HP_cc) \ && !defined __APPLE__) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline #elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __APPLE__ # if __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) # else # define _GL_INLINE extern inline # endif # define _GL_EXTERN_INLINE extern #else # define _GL_INLINE static _GL_UNUSED # define _GL_EXTERN_INLINE static _GL_UNUSED #endif #if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ # define _GL_INLINE_HEADER_CONST_PRAGMA # else # define _GL_INLINE_HEADER_CONST_PRAGMA \ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") # endif # define _GL_INLINE_HEADER_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ _GL_INLINE_HEADER_CONST_PRAGMA # define _GL_INLINE_HEADER_END \ _Pragma ("GCC diagnostic pop") #else # define _GL_INLINE_HEADER_BEGIN # define _GL_INLINE_HEADER_END #endif /* A replacement for va_copy, if needed. */ #define gl_va_copy(a,b) ((a) = (b)) /* Define to rpl_gmtime if the replacement function should be used. */ #undef gmtime /* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. __APPLE__ && __MACH__ test for Mac OS X. __APPLE_CC__ tests for the Apple compiler and its version. __STDC_VERSION__ tests for the C99 mode. */ #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ # define __GNUC_STDC_INLINE__ 1 #endif /* Define to rpl_localtime if the replacement function should be used. */ #undef localtime /* Define to `int' if does not define. */ #undef mode_t /* Define to the type of st_nlink in struct stat, or a supertype. */ #undef nlink_t /* Define to `int' if does not define. */ #undef pid_t /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #undef restrict /* Work around a bug in Sun C++: it does not support _Restrict or __restrict__, even though the corresponding Sun C compiler ends up with "#define restrict _Restrict" or "#define restrict __restrict__" in the previous line. Perhaps some future version of Sun C++ will work with restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict # define __restrict__ #endif /* Define as a signed type of the same size as size_t. */ #undef ssize_t /* Define as a marker that can be attached to declarations that might not be used. This helps to reduce warnings, such as from GCC -Wunused-parameter. */ #if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_UNUSED __attribute__ ((__unused__)) #else # define _GL_UNUSED #endif /* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name is a misnomer outside of parameter lists. */ #define _UNUSED_PARAMETER_ _GL_UNUSED /* The __pure__ attribute was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The __const__ attribute was added in gcc 2.95. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) #else # define _GL_ATTRIBUTE_CONST /* empty */ #endif /* Define as a macro for copying va_list variables. */ #undef va_copy libtasn1-3.4/COPYING.LIB0000664000000000000000000006364212244720630011441 00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! libtasn1-3.4/COPYING0000664000000000000000000010451312244720630011025 00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . libtasn1-3.4/windows/0000775000000000000000000000000012244722064011543 500000000000000libtasn1-3.4/windows/gnulib/0000775000000000000000000000000012244722064013023 500000000000000libtasn1-3.4/windows/gnulib/getopt.h0000775000000000000000000000006112244720630014413 00000000000000#define HAVE_GETOPT_LONG 1 #include "getopt_.h" libtasn1-3.4/windows/gnulib/gnulib.vcproj0000775000000000000000000000644712244720630015463 00000000000000 libtasn1-3.4/windows/libtasn1.ncb0000775000000000000000000334600012244720630013672 00000000000000Microsoft C/C++ MSF 7.00 DSs4qøÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿýÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?ÿÿ?pøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'b Dÿÿ˜˜b Dÿÿ™™rW Dÿÿšš`] Dÿÿ››Ô DÿÿÌ4 Dÿÿ__pV @ÿÿ: ˜ hU @ÿÿ à  ÙT @ÿÿ– ¿ ~T @ÿÿ. 4 uT @ÿÿ' - Á @ÿÿ$$‚ @ÿÿ!!– @ÿÿE @ÿÿ9 E@ÿÿQ @ÿÿò*M @ÿÿñ"M @ÿÿØíM @ÿÿ ÁÖM @ÿÿ!³ºþL @ÿÿ"›°èL @ÿÿ#–ßL @ÿÿ$wŒÚL @ÿÿ%frÕL @ÿÿ&Wc›L @ÿÿ'Ää•K @ÿÿ '{)W@0(}}7W@0)~~© @ÿÿ*øøŽ @ÿÿ+òòH @ÿÿ,êê/ @ÿÿ-ããÙ @ÿÿ -ÅËEW@0".ÈÈWW@0"/ÉÉdW@0"0ÊÊY @ÿÿ2< Š Y@ÿÿ4®®m @ÿÿ7£ ° m@ÿÿ:­­ª @ÿÿ;««’@ÿÿ<ªªz @ÿÿ=§§o @ÿÿ>¤¤h @ÿÿ?¡¡R @ÿÿ@ŸŸ; @ÿÿAžžÛ @ÿÿ A+Ah @1 B+ggû @1 C+ffö @1 D+eeè @1 E+ddØ @1 F+ccÐ @1 G+bbÌ @1 H+aaÆ @1 I+``Á @1 J+__µ @1 K+^^¬ @1 L+]]£ @1 M+\\Ÿ @1 N+[[œ @1 O+ZZ” @1 P+YY @1 Q+XX… @1 R+WW @1 S+VVz @1 T+UUr @1 U+TTc @1 V+SS\ @1 W+RRY @1 X+QQR @1 Y+PPJ @1 Z+OO> @1 [+NN6 @1 \+MM, @1 ]+LL( @1 ^+KK @1 _+JJ @1 `+II @1 a+HH  @1 b+GG @1 c+FFü @1 d+EEñ @”.1šD¶aé/@•œHðeWf; /names/ncb/targetinfo/ncb/moduleinfo/ncb/modulecommandlines/ncb/iinstdefs/ncb/auxnamemap/ncb/directorywatch/ncb/module/c:\libtasn1\lib\asn1.c/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stddef.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\crtdefs.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\sal.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\vadefs.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stdlib.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\limits.h/ncb/module/c:\libtasn1\lib\coding.c/ncb/module/c:\libtasn1\lib\parser_aux.h/ncb/module/c:\libtasn1\lib\element.h/ncb/module/c:\libtasn1\lib\decoding.c/ncb/module/c:\libtasn1\lib\structure.h/ncb/module/c:\libtasn1\lib\element.c/ncb/module/c:\libtasn1\lib\errors.c/ncb/module/c:\libtasn1\lib\errors.h/ncb/module/c:\libtasn1\lib\int.h/ncb/module/c:\libtasn1\lib\gstr.c/ncb/module/c:\libtasn1\lib\parser_aux.c/ncb/module/c:\libtasn1\lib\gstr.h/ncb/module/c:\libtasn1\lib\structure.c/ncb/module/c:\libtasn1\lib\windows\config.h/ncb/module/c:\libtasn1\lib\defines.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\string.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stdio.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\swprintf.inl/ncb/module/c:\program files\microsoft visual studio 8\vc\include\ctype.h/ncb/module/c:\libtasn1\lib\libtasn1.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\sys\types.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\time.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\wtime.inl/ncb/module/c:\program files\microsoft visual studio 8\vc\include\time.inl/ncb/module/c:\libtasn1\lib\mem.h/ncb/targetmap/ncb/filenameimodmap/ncb/moduleinfofreelist/ncb/versioninfo/ncb/module/c:\libtasn1\tests\test_tree.c/ncb/module/c:\libtasn1\tests\test_tree_asn1_tab.c/ncb/module/c:\libtasn1\tests\test_parser.c/ncb/module/c:\libtasn1\src\asn1parser.c/ncb/module/c:\libtasn1\gl\strdup.h/ncb/module/c:\libtasn1\gl\getopt_.h/ncb/module/c:\libtasn1\gl\getopt_int.h/ncb/module/c:\libtasn1\gl\gettext.h/ncb/module/c:\libtasn1\gl\getopt.c/ncb/module/c:\libtasn1\gl\getopt1.c/ncb/module/c:\libtasn1\gl\getopt.h6^‘&ý¿¡®áLïH,Í£Aà *°0cé&N x$Uò8]- 9ö'n Î7É\4ð”!t83ˆ7'€(z2ã1u.Â%¿5r >ß"ª†/^ ©6• )# ?,Ì)9+1 e+DDí @1 f+CCç @1 g+BBàM @ÿÿi+ee°O @ÿÿj+¤O @ÿÿk+O @ÿÿm+KO @ÿÿp+ÇN @ÿÿu+¸N @ÿÿw+ÿÿ¢N @ÿÿx+__`N @ÿÿ{+UUN @ÿÿ+66 N @ÿÿ‚+44N @ÿÿƒ+--ùM @ÿÿ„+,,ºM @ÿÿ‡+­M @ÿÿˆ+M @ÿÿ‰+ŠM @ÿÿŠ+wM @ÿÿ‹+]M @ÿÿŒ+  WM @ÿÿ+  OM @ÿÿŽ+  EM @ÿÿ+  1M @ÿÿ+ M @ÿÿ‘+ÀÀòL @ÿÿ’+šš‹L @ÿÿ”+ÀÀL @ÿÿ•+¾¾vL @ÿÿ–+½½lL @ÿÿ—+ººcL @ÿÿ˜+¸¸\L @ÿÿ™+¶¶RL @ÿÿš+´´KL @ÿÿ›+±±CL @ÿÿœ+¯¯ÑK @ÿÿ +‘‘ÁK @ÿÿ¢+††§K @ÿÿ£+‚‚À4 @ÿÿ¤+ll·4 @ÿÿ¥+ee4 @ÿÿ¦+aa¡4 @ÿÿ§+ZZ4 @ÿÿ¨+XX4 @ÿÿ©+WW÷3 @ÿÿ«+  ï3 @ÿÿ­+®3 @ÿÿ¯+Ÿ3 @ÿÿ°+  ¶ @ÿÿ±+ @ÿÿ²+ÑÑá @ÿÿ³+ÐÐ @ÿÿ´+ÏÏË @ÿÿµ+ÁÁ» @ÿÿ¶+¼¼³ @ÿÿ·+´´ @ÿÿ¸+û @ÿÿ¹+ö @ÿÿº+ŽŽè @ÿÿ»+Ø @ÿÿ¼+ŒŒÐ @ÿÿ½+‹‹Ì @ÿÿ¾+ŠŠÆ @ÿÿ¿+‰‰Á @ÿÿÀ+ˆˆµ @ÿÿÁ+‡‡¬ @ÿÿÂ+††£ @ÿÿÃ+……Ÿ @ÿÿÄ+„„œ @ÿÿÅ+ƒƒ” @ÿÿÆ+‚‚ @ÿÿÇ+… @ÿÿÈ+€€ @ÿÿÉ+z @ÿÿÊ+~~r @ÿÿË+}}c @ÿÿÌ+||\ @ÿÿÍ+{{Y @ÿÿÎ+zzR @ÿÿÏ+yyJ @ÿÿÐ+xx> @ÿÿÑ+ww6 @ÿÿÒ+vv, @ÿÿÓ+uu( @ÿÿÔ+tt @ÿÿÕ+ss @ÿÿÖ+rr @ÿÿ×+qq  @ÿÿØ+pp @ÿÿÙ+ooü @ÿÿÚ+nnñ @ÿÿÛ+mmí @ÿÿÜ+llç @ÿÿÝ+kkÏ @ÿÿÞ+>>¹ @ÿÿß+99£ @ÿÿà+88 @ÿÿá+77{ @ÿÿâ+66e @ÿÿã+55S @ÿÿä+44= @ÿÿå+330 @ÿÿæ+00) @ÿÿç+-- @ÿÿè+** @ÿÿé+'' @ÿÿê+$$#$%23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW*7mQmlmƒmšmÎmÛmñmƒm,µH-nƒm7nFnTn*dn**nE*nEHln~n‰n›n»nÒnÒnÒnÒnÒn»n»n»n»néndnönû*üno*û·.o*nE*nE*9oAo*9oAoKoXoû·T.oÎmaoholopotoxo|o€o„oˆoŒoo”o˜oœo o¤o¨o¬o°o´o¸o¼oÀoÄoÈoÌoÐoÔoØoÜoàoäoèoìoðoÀlôoøoüopp#p7'p7,p3p77p=pBpHp7QpVp_pjpopspéqñqpõqñqr¼l CrÝrBpãrórss!s C2s7sJs\s_scs¥shoºl©s­s°s³s©szG¶sttt"tplt‰tŽt C•t¤t«t´t¨)¹tÇtÉtÌtÒtÁ+ C Cdn C C Cholopotoxo|o€o„oˆoŒoo”o˜oœo o¤o¨o¬o°o´o¸o¼oÀoÄoÈoÌoÐoÔoØoÜoàoäoèoìoðoÀlôoøo7âtðtþt uu&u2u C C@uIu C Ç4^lmo‹ Œ ÇNpñ PêGO¾ÁÃÇGR¢Ðb‹3 ¹9$vo9M Gum—Ç‚6ÎÊ899:;;<<>rsxyz„„……Š‹‘’——œœ±²·¸½½ÂÂÇÇÌÍÒ×Üáââçìíîïôùþ     %*++01277<<==BGHHMNNSXY^_``eejjoottyy~~ƒƒˆˆ’’——œ¡¡¦¦§§¨¨­­²²³³´´¹¹¾¾ÃÃÈÈÉÉÎÏÏÔÕÕÚÛÛÜÜáââçèèíîîïïôõõúÿ    !!&&++00116778=>L˜ª)FN-O„‡²‚Oåëï‚P’“¦¹‚V : B E \ ] d d m o o p ké#B\gnw‚¢¼Ø 8ñ.8kM óëM"ÑÖëNtuwÆÈÉèíîñrÈÏåìôM$?tQ˜¢§]è"Afm¡»×7ð-7]  ]4;]M äÝNpv&3› ž ¨ ² » ï  < = @ G k y ” &P2Zjkpq‡‰‰¬¬¯·DÜÝö÷÷÷ùùúüüþþ&34P]]_cËÌÎÏÏÏÑÑÒãêì¦TD S \ k 7  …wãæéëðtˆœŸ¦ ÑxxOõ3QÞøRÂCT? Z i o s v z | Ir. O „‡ˆ‘“¤§¨®°²³áÄÐá3aOÌÏJOx0 Ê3JN<<ABSÊS¦ÊT{ S4]_ÓV > d g m o p { } ~ <æç¼L0®°Ž³ÀÁFo. …W€4 M³_…NPQUW§ îO2wé#<Bgn‚¢¼Ø 8ñ.8÷‚‡‡§¨÷3 %(N˜ª)8FnyÐù÷K’¢7wMÌ Ù÷P°¶÷Q<âí +HN`¨´ÏÕÜâèïõ 7wR±·÷Rí ÷T— ™ À4X^kl@O¾ÁÂÇÇÈÀP¢¥¨ÀSœÀUí E )-©öø}‡›³Áؾ¾ÂÃZ[\™µ©PŸ´ÄÄ©Q/8rxб·ÌÒ×Üáçìíôùþ %*0BGMSX^œÎÔÚáçíôúÿ 6=©Uæ ²3  2N::AR²Nf2R…=É1›LÁÄN56Uš ð H W¨ dS*^ÚíÍþÿZÍUü S VTP¿üý¿3 L¡ªº»P:=?CQóö÷þÿMz{|}ˆ‰  ‘SMzU~1 z §H O O U U ` w £ © úK”•••––æëëëíîïÖÙÛúO3zQ™¡¦µ¾¿CL¯ãÃMCS,Lu/ ¬]†2 ¬TG \ _ k µ^‡2 žRÇHçBk. çQ ;…=§³ÉÛî1çVˆ pV: Y4®= YQz0 ÙÄÅÎÏ~‡„ФªÚàóù!_`ak˜ÙT—  • ÙV^ f "àá¢K~`˜§»Å"MØ·÷`Ï¢N]_æ"Rsz‹’²¸Íî 2Y_"V ‹LÀ ð”Y‚1 RrxŠ0ýSÔÚýT — › › ž Ÿ   ¡ ¢ £ ¤ ¨ © ª « ¬ ­ ­ ® ² ³ ´ µ ¶ · » » á   ; ” • Æ`‰3 FQZ[¾ ÆUø O o¤E d ¡ « õ L © /áãÄWfwñï3“ü¯P ÈÉ×ÙÜáoS%*ïSÎ/Túÿ/U ­ ¸NjÿrÈÏåì¸Q88Tÿ¸V = { } ~  ƒ „ ‰ Œ $Á9Á_ˆ2 A/UÁK†·L¾ÁP:=>BSîï§³SBGAU¡ « ­ ª «Ÿ ¡ © « ³ ê B ¨ j3£ © *47*L¥¦¨¨¶¸*MñÝê *N 6:;<=AACC*P [^ejÕ×ÙÛÛàjPÁÂÃÉÊ˪V < m o p q u v ‰ ‹ ³³´æ-c³@ɳP¡¤´½\R{0 œZƒ2 œõö47;@LW·|\9ÁÉ\L¶\T¬ÀÆe5&q‰ eOÚÞøåO13:=y´Ä¥P ”¶¶¶···ÀÁeR¬ŽðòéKŽNQgíñÎO2PBEHTáUš ó ú  J Q Y NU± —LÀÁÁWM é뜟 ×NptQWR§Tçí—T ? z z z { | ƒ ƒ ƒ „ „ àKŽ‘•àM!eR¼Þ  `NNPU PVijopvyy Qÿ$àVo } ' 445‰4CÉMpv‰OçéÉQ9:y‘ï 1¾ 8>IT Hq. RPy0 RŸp ð ó ú    H J Q W Y • — ¬ ­ ’ª¶ Ò3RL´­°°_c’M²¸ÒM)***,p&0RS¼½ PCERQ_`ÒT„ { 6!ñ ¥æ ~ ‡ ûf4 ; žD S T \ k u í ï ø E G O » ¸¹º¼0-Jp ;48»K‚{OÛÞâåçéî»O"%wÉ„§É@ o ­ D9=CfÄLH‘ÄO2ÄV > \ ^ ^ _ ` c f f g h m5­£ íCl m4>­M­RÌÒ×6Mv/ öeŽ4 6ž„ˆ¤¨¶ûýÿ h”¤!$)U„ŽNg‘twvL½ÁJs/ Ÿ[„2 _¡Ê_ÁÉŸ3 ZÎL¤§¨ßLwŸOõøßO "%&*VX[wyŸP“³ÀÛŸT @ i s v w { ~ „ ‡ ŸV; y ƒ „ (Kt/ èd4 h¡>ã ü þ   @ S U W ˆ èLc¨N egmtw®°³ÆÈÉè(O„‡Š‘¤§ª²óöùühUà ñDmˆ 1M1O¾ÁÏ1QLMNz‚ 1SþÚLfå&MÁùaÑZOÌÏZP…‡CtŒÏÜ_```aactˆ¿ËÝßìÚP¨ÄÅ£8lrÎ÷ýcS|0 £\…2 cL¸ãP¬¶#Q ,034#TôãUþ U ÌaŠ3 ÌLK‘ N4:;<=BDÌP£§ÅLQ\e~‰ŒŽ‘¡ÄËT_`¾¿Øßà   •K {‚¶·wxxy|~ÕLWP]N 446:;<=BD>Nw1 þAÉDDIINOOTTYY^^cchhmmssyzz‹‹‘’’²²¸¸ÍÍîîï   122YY__¾ 8>~ ‡ þ30v“ þ þK•þL›‡ÜËþP±¹»ÀÙ~T. „ ÏX1 4NX¿{  SôV V: k u v ùM,·ÎÏyUà ê í ùU W ÂNjmÿBP…tˆ«8´Lç4NK}[~Ž‘™¦µºÄËT¾Øà    MSùþæ36f4 =]efhm u { ƒ æKfM "fTêÏ=>ÏK †‡68<=eeeOM  w㦠ÏM8ØcŒ3 Ø3X4:ØKŽ‘–ØM Iëðñö÷ ¥ ØOsz‹’²¸Íî 2Y_¡ « ­ d n u | ƒ XQ–k089<>DINOTY^chmrsxyz„Š‹‘’—œ¢§¬±²·¸½ÂÇÌÍÒ×Üáâçìíîïôùþ    %*+0127<BGHMNSXY^_`ejoty~ƒˆ’—œ¡¦§¨­²³´¹¾ÃÈÎÏÔÕÚÜáâçèíïôõúÿ   !&+0678=>CHPVØQ9¡4OTYZuxy!O„‡‰‘•¤§©­®°²Ž³óöø¡SS 6=ŠM'ŠNPRRSSUüEn. / ü3%(),E3EŸß EM ÅR×®3 &™š›œÈ q ®Løî.Pbfs·4W]de7L §gޤ®°±²·ÉË·Tp § ¬ €ïð€Q«¯¹ €RÂǦ²¹iQ†eíéRì rT}1 òLš‰ÝÌrNOOòNu¤§îrP‘ÂÊÍÛAÛKŽ‘–¤Mýk¤OZ_g Gp. MÀü RO  ¢ £ ¤ ª ¬ ® ´ µ ¶ · q  T*? D D D E G L L L L M M M M N N O P R S T \ \ ] ^ _ d i k k k k l l l l m m m m s u Uà å è –7–N\]PMVŽÁÛV1 4ADE\`afmMúHçêìøQ49>@ÑKŒŽ‘¥QP…ÐÕEôû  ÑP¤´½ÈÑRÜáçìQSºM:QNuu~‚†ºRÒg4 ƒUà lLºìP¯°°lTõü õÈ8¢§¬·CHõ3u4AuO‘ÚÞàïøae¢Å089:;;<DIOTY^chmssyzz„……‹‹‘’’—œ²²·¸¸½ÂÇÍÍâîîï    +1227<==HNYY__`ejoty~ƒˆ’—¡¦§¨­²³´¹¾¾ÃÈÉÉÏÕÛÛÜâèîîïõ  !&+01178>VÝæê uT' ƒ „ ^Q‹ÞRáGM§K‚ˆ§§Léî'Sù000L¥¼ÁÂÃÉÊËå‘¡¢ÄÅtuwx††Ž°O®±²°SX^°TT u *L¡¥¥¦¦§N44™Qñ ™T? Y ] ] ^ ™Uã å è âNpbP޼âS¹ËÀÁ-KL±‰¯÷`ÏKOÌT¾à ËV> ] ` c { } } ~ Tè"Afm¡»×7ð-7TN==CDSÔS²TV  ‘ = 303:=ö M =N;;CR=V Qóö¤Ü  RDINTY^chmH ` w ~ ‡ Ÿ © ³ v „ $ DÿÿV3@ÿÿ,,K3@ÿÿ++>3@ÿÿ((a3 @ÿÿ 55E3 @ÿÿ ))+3 @ÿÿ '' @ÿÿ?EGESE?E\EgEN*nErE³EµE·E77w+G2:w3B3Ea3;a335;=j33355;;==k0I+3&'K3+{3CDd(CE´5l33355;;==Í35;=5E3)–,NE®5†+,î+,&3 >3()V3,n35†3D,n35†3Dw Dÿÿ::Ø Dÿÿ••¨. @ÿÿÓÓi.@ÿÿÌÌ×, @ÿÿ»Ó×,@ÿÿ¥¥F/@0¼¼g/@0½½‹/@0¾¾±/@0¿¿Ó/@0ÀÀñ/@ ÁÆ0@0 ÂÂK0@0 ÃÃ}0@0  Äİ0@0  ÅÅä0@0 ÆÆ1@0 ÇÇ)1@0 ÈÈL1@0ÉÉx1@0ÊÊ£1@0ËËÎ1@0ÌÌì1@0ÍÍ2@0ÎÎ32@0ÏÏR2@0ÐÐq2@0ÑÑ2@0ÒÒ©- @ÿÿ¶¶£- @ÿÿ¶¶}- @ÿÿ²¶µ2@0³³É2@0´´Ü2@0µµa- @ÿÿ¯¯Q- @ÿÿ¯¯/- @ÿÿ«¯ð2@0%­­ 3@0% ®® -@ÿÿ ©©- @ÿÿ!¨¨- @ÿÿ"§§î,@ÿÿ"¦¦» @ÿÿ#% @ÿÿ$ @ÿÿ%î @ÿÿ&þþæ @ÿÿ'ùù• @ÿÿ(ÝÝŽ @ÿÿ)ÜÜa @ÿÿ*ÑÑE @ÿÿ+¿¿+ @ÿÿ,¶¶5/ @ÿÿ.õõ/ @ÿÿ0êêþ. Dÿÿ1ääÏ. Dÿÿ2ÞÞ±- @ÿÿ3ÔÔk- @ÿÿ4··+ @ÿÿAŸŸ¡* @ÿÿLœœo, @ÿÿY˜˜>, @ÿÿe””?* @ÿÿqâ) @ÿÿ}) @ÿÿ‰ŠŠ8) @ÿÿ™‡‡ã( @ÿÿ§„„Ž( @ÿÿ´9( @ÿÿ¾~~£, @ÿÿÅ{{ä' @ÿÿÍxx‹' @ÿÿÚuu.' @ÿÿårrÎ& @ÿÿónnk& @ÿÿÿjj& @ÿÿ gg½% @ÿÿddj% @ÿÿ'aa% @ÿÿ5^^Ä$ @ÿÿB[[q$ @ÿÿLXX­+ @ÿÿRUU$ @ÿÿZRR}+ Dÿÿ[PPh+ @ÿÿ]OOT+ @ÿÿ_NN1+ @ÿÿaMMÒ* @ÿÿlBBs* @ÿÿu??* @ÿÿ<<¹) @ÿÿŠ99d) @ÿÿ•66) @ÿÿ¤33º( @ÿÿ±00e( @ÿÿ¼--( @ÿÿÅ**»' @ÿÿÌ''^' @ÿÿ×##' @ÿÿà  ž& @ÿÿì;& @ÿÿöè% @ÿÿ•% @ÿÿ B% @ÿÿï$ @ÿÿ(œ$ @ÿÿ3  I$ @ÿÿ<Û# @ÿÿCl# @ÿÿHèè># @ÿÿRØØã" @ÿÿZÈÈ®" @ÿÿc½½ˆ" @ÿÿp²²b" @ÿÿ{§§-" @ÿÿ„œœø! @ÿÿ‘‘‘Ã! @ÿÿœ††Ž! @ÿÿ¥{{Y! @ÿÿ¬ppë @ÿÿ±eeá @ÿÿ²^^Ù @ÿÿ³ZZÏ @ÿÿ´UU¹ @ÿÿµ==¥ @ÿÿ¶99† @ÿÿ·33u @ÿÿ¹++k @ÿÿº##N @ÿÿ»@ @ÿÿ¼0 @ÿÿ½ @ÿÿ¾  ö @ÿÿ¿Õ @ÿÿÀöö| @ÿÿÁÞÞN @ÿÿÂÓÓ3 @ÿÿÃÁÁ @ÿÿÄ··  @ÿÿű±È @ÿÿǧ§å @ÿÿÈ——· @ÿÿÉŒŒ @ÿÿÊ€ @ÿÿËzzN @ÿÿÍoo+ @ÿÿÎffð @ÿÿÏ``¤ @ÿÿÑPPh @ÿÿÓBBC @ÿÿÕ;; @ÿÿ×11Þ @ÿÿØ((Ë @ÿÿÙ$$· @ÿÿÚ!!— @ÿÿÛv @ÿÿÜ  i @ÿÿÝN @ÿÿÞùù4 Dÿÿßññ+ @ÿÿàéé" @ÿÿáßß @ÿÿâÕÕÓ @ÿÿãÎλ @ÿÿä¿¿¬ @ÿÿåµµ @ÿÿ磣— @ÿÿ颢g @ÿÿëžžv @ÿÿíÁ @ÿÿî{ @ÿÿïd @ÿÿð      !"&'÷)***&*9*Ô(D*N*N*T***N*N*N*‚*N*Š*›*²*²*È*Ù*ë*û*û*û* +%+>+M+\+y+™+¤+¬+**û*û*·+·+Á+È+Ñ+7é7777Ó+",,,6,F,U,^,c,k,r,z,,‰,,",,,6,F,U,^,c,k,r,z,Ø,x-„-",,,’-F,U,^,c,k,r,z,-x-„-",,,’-U,^,c,k,r,z,=.x-„-",,,6,’-Ë.U,^,c,k,Ü.x-„-",,,6, /(///7/U,^,>/x-„-",,,6, /(/U,^,c,k,‚/x-„-",,,6,U,^,c,k,r,z,,‰,Ô/Ü/ã/x-„-",,,6,U,^,c,k,r,z,,‰,.0x-„-",,,6,F,U,^,c,k,r,z,r0x-„-",,,6,U,^,c,k,¯0x-„-",,,U,^,ç0x-„-",,,6,U,^,Ó+",,,6,F,U,^,c,k,r,z,,‰,,",,,6,F,U,^,c,k,r,z,1x-„-",,,’-Ë.F,U,^,c,k,r,z,=.x-„-",,,6,’-Ë.U,^,c,k,Ü.x-„-",,,6, /(///7/U,^,>/x-„-",,,6, /(/U,^,c,k,‚/x-„-",,,6,U,^,c,k,r,z,,‰,Ô/Ü/ã/x-„-",,,6,U,^,c,k,r,z,,‰,.0x-„-",,,6,F,U,^,c,k,r,z,r0x-„-",,,6,U,^,c,k,»1x-",,,U,^,ç0x-„-",,,6,U,^,77ó17ó17ó12",,,U,^,c,k,r,z,,‰,d2",,,U,^,c,k,r,z,¿2x-„-",,,’-U,^,c,k,#3x-„-",,, /(///7/U,^,}3x-„-",,, /(/U,^,c,k,×3x-„-",,,U,^,c,k,r,z,,‰,Ô/Ü/A4x-„-",,,U,^,c,k,r,z,,‰,£4x-„-",,,U,^,c,k,r,z,5x-„-",,,U,^,c,k,S5x-„-",,,U,^,5",,,U,^,c,k,r,z,,‰,ÿ5",,,U,^,c,k,r,z,Y6x-„-",,,’-U,^,c,k,r,z,Â6x-„-",,,’-U,^,c,k,%7x-„-",,, /(///7/U,^,~7x-„-",,, /(/U,^,c,k,×7x-„-",,,U,^,c,k,r,z,,‰,Ô/Ü/@8x-„-",,,U,^,c,k,r,z,,‰,¡8x-„-",,,U,^,c,k,r,z,þ8x-„-",,,U,^,c,k,O9x-„-",,,U,^,˜9x-,,U,J;O;x-,,’-U,^,c,k,r,z,a<x-,,’-U,^,c,k,h=x-,, /(///7/U,^,é=x-,, /(/U,^,c,k,r,z,,‰,€>x-,, /(/U,^,c,k,r,z, ?x-,, /(/U,^,c,k,?x-,,U,^,c,k,r,z,,‰,Ô/Ü/$@x-,,U,^,c,k,r,z,,‰,°@x-,,U,^,c,k,r,z,1Ax-,,U,^,c,k,§Ax-,,U,^,BB#B+B@B7TBÑ+77jB777777777pBC C C C7CÂCËC7ÐCìC7ìCùCìC«DÆD CÌDàD77èD#B777ðD77èDEEEE!E5EEGLNSUY[`b./ab‡ˆ‘–˜ù349;>EGLNSUY[`b./ab‡ˆ‘–˜ù349;>EGLNSUY[`b./ab‡ˆ!€ƒG!€ƒG!€ƒG)333,ùùù.ÆÆÆ'''˜# èíïèíïèíïa ùUSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š aÏÑÏÑÏÑá ]^]^]^a-¯¯¯á.áááJ-4-4-4ÊOOOOOOJfffÓ!’ËÛÉßìø2HUa’ËÛÉßìø2HUa’ËÛÉßìø2HUaÓ ÅÈÊÎÅÈÊÎÅÈÊÎS"œœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Žœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Žœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Ž< ííííííííííííEGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€‚†‹‘–˜§¬®²·¹Øßâã÷øùûüÿ   !#$-.0134?@BCßáäëíòôùûÿ !&(,.359;>EGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€‚†‹‘–˜§¬®²·¹Øßâã÷øùûüÿ   !#$-.0134?@BCßáäëíòôùûÿ !&(,.359;>EGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ .ÅÅÅîOOOîþžþžþžî,¦¨¦¨¦¨wލ7Møލ7Møލ7Mø÷ ,-8,-8,-8w moomoomooÀ „„„@ ©-¶¶¶²DGDGDG2 113113113² „„„$ N÷RN÷RN÷R.ÇÇÇ›.ÒÒÒ5••dµÊµÊµÊ¤ IKNPIKNPIKNPä' (öx(öx(öxd)666$.ÈÈÈÍ´­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ¡£¡£¡£) 71Š71Š71Š.ÐÐÐVW]io{W]io{W]io{Ö#íïíïíïV.ËËË!¯pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ ?* =7=7=7.ÎÎΈ¨ø(çí¨ø(çí¨ø(çíˆlãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šZvZvZvÈ £¥§£¥§£¥§ ˆ"²ü²ü²ü‘ èèêèèêèèê!ýejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™š#ØÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜ššÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜ššÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜šš$    !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ     !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ     !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ Ñ,9=Alp’–š9=Alp’–š9=Alp’–š-¨®¨®¨®Q-¯¯¯º(000CD79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š 79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š 79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š Ã!†ø†ø†ø$\   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜Ã-¼Ä¼Ä¼ÄC.ÊÊÊl<¼ÆÛæ<¼ÆÛæ<¼ÆÛæ,$ÒâÑÚçó:CP\iÒâÑÚçó:CP\iÒâÑÚçó:CP\i¬ ±³µ±³µ±³µl#èèèuãããu ')+')+')+5! fq|‡’¨³¾ÉÙé5#´ÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽ5/ôõôõôõ^./././Þ ÛáçÛáçÛáçÞ!'(,ƒ„Ž–œ´'(,ƒ„Ž–œ´'(,ƒ„Ž–œ´13;o§ù13;o§ù13;o§ùžêìíñêìíñêìíñ"E‘–ù349;=ELSY`./ab‡ˆ‘–ù349;=ELSY`./ab‡ˆ‘–ù349;=ELSY`./ab‡ˆž&^'###ž+¨P\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßP\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßP\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßçOOOgœžœžœžçÇÇǧ „ì„ì„ì'!ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ° fv fv fv ð VX[`VX[`VX[`°ììì0    0!¼ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ð-ÀÀÀÙ ZZZY!pöpöpö™-µµµ¢ ¢¢££¢¢££¢¢££" ÙÜßÙÜßÙÜßb"§û§û§ûâ) : 4: 4: 4 &&&ËÕ1+9= OOOË$$$K! itŠ• «¶ÁÎÞìË#íïíïíï‹' $Ãu$Ãu$Ãu”[ams…[ams…[ams…Ô"E½Âý9:“•—Ÿ¦­³º  45gh޽Âý9:“•—Ÿ¦­³º  45gh޽Âý9:“•—Ÿ¦­³º  45ghŽT+JNJNJN”.ÑÑÑýOOOOOO½% f df df d}+LPLPLP}-²²²ý-ÃÃÃÆOìOìOìOOOFT¨T¨T¨† žžžžžž† 237237237Æ ===F$Š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™šF+IIJJKKMNOIIJJKKMNOIIJJKKMNO†-³³³†.ÏÏÏï$o, ?˜?˜?˜/-«««/.ÉÉÉo.ÍÍÍ8131313ø!‘ù‘ù‘ù8) 4.‡4.‡4.‡OOOÁ’’’ ¥§§¥§§¥§§'   A-­­­A/õ*'''ª¢!¢!¢!ªj% 9a9a9aª+¨WZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖWZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖWZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖê+Wßÿ)Y…’²Ããÿ(?CF[nru˜œŸßÿ)Y…’²Ããÿ(?CF[nru˜œŸßÿ)Y…’²Ããÿ(?CF[nru˜œŸ3»Á»Á»Ás*???\lllÜ"W½ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45gh޽ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45gh޽ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45ghŽ#ËÌÕÛÜåœ$   å #•—™œc #•—™œc #•—™œc%OOO% ¥ 89BC89BC89BC%#ZËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_ablËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_ablËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_able(---å+ž ž ž NW]io{W]io{W]io{Î’ù’ù’ùNÆÈÆÈÆÈN õ÷ùõ÷ùõ÷ùN kmokmokmoNÍÓÍÓÍÓŽÜÜÜN Ž!{÷{÷{÷Î& )n)n)nŽ( .ÿ(.ÿ(.ÿ(*<<<Ž+¼NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ — BHNBHNBHN—¢£¢£¢£— %  ^ ^ ^×, ¥§»¥§»¥§»5::   „„„ -©Ò©Ò©ÒI$I-®®®'''R! lw‚˜£®¹ÄÓãïÒ*BBB{{@OOOVhz@OOOVhz@OOOVhz;RRR» »½¿»½¿»½¿» ììì»# ëííïëííïëííï;&»''''DR:R•:R•Ä ¼Ûþ¼Ûþ¼ÛþÄJ‰”bFôJ‰”bFôJ‰”bFôÄ#íïíïíïÄ$ ß[ ß[ ß[-"œúœúœú-#ÌÜÊàíù3IVbÌÜÊàíù3IVbÌÜÊàíù3IVb­+ {úU{úU{úUö)++õõ)++õõ)++õõv žèžèžèv       ¶ „„„öö-¶.ÛÛÛíííßOOOߤ¤¤(OOO(¨¨¨h @BD@BD@BD¨# ëííïëííïëííïè%h+KOKOKO¨.ÓÓÓ(/ïðïðïðq½ÕÜç½ÕÜç½ÕÜç± 999ñ!†‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ †‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ †‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ ±# ëííïëííïëííïq$ ²ýX ²ýX ²ýX1+IMIMIM±-ºÔºÔºÔOOOÔÕÔÕÔÕµ·µ·µ·/èêèêèê#'''#§©«¯¿Èѧ©«¯¿Èѧ©«¯¿ÈÑc!ÕåÝêöFS_lùÕåÝêöFS_lùÕåÝêöFS_lùã"ÈþÈþÈþã( 1+„1+„1+„£,"{"{"{£-¶À¶À¶À WWWÌ-½½½•ÝÝÝÕõöõöõö•%~Y_kq}ƒY_kq}ƒY_kq}ƒ>#ØÿØÿØÿ>, ;”;”;”þ.âäâäâä‡AAA‡!puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ OOO010101& “ g“ g“ g(***-´´´/çççùOOOù¤¤¤ù+TÀô"%)]jpw~‡‹Ž79jlnp’Àô"%)]jpw~‡‹Ž79jlnp’Àô"%)]jpw~‡‹Ž79jlnp’ÂðððB%+ åçéåçéåçé+fff« „„„+¶¶¶4 +5>+5>+5>4ÄÊÄÊÄÊ4 íïñíïñíïñ´!È{€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ '''!Aejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ # ëííïëííïëííïf444æùûùûùûæ-¿¿¿ÏOOOÏMMMÏ &QSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìQSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìQSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìÏ.ÜÞÜÞÜÞØOOOOOOXáçáçáçØ-¾¾¾!OOO¡* @Cœ@Cœ@Cœ «±«±«± ,<´µ¶¶¶½¾¿¿¿åæçççîïððð´µ¶¶¶½¾¿¿¿åæçççîïððð´µ¶¶¶½¾¿¿¿åæçççîïððð“xxx    |ããã|ÛÞÛÞÛÞÅ „„„E½¿½¿½¿E!ähjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæhjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæhjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæ.OOO®í®"½ý½ý½ý.' !’r!’r!’r·"ŠŒŽô"ŠŒŽô"ŠŒŽô·!$!$!$·ìììËËË€ uxzuxzuxz€ ++++ CFŸCFŸCFŸiîöþâRîöþâRîöþâRi ýÿýÿýÿé!φ‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ †‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ †‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ i.ÌÌÌÌÌÌ[9;;BDDKNPP9;;BDDKNPP9;;BDDKNPP["Æœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹Žœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹Žœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹ŽÛ#Û+ žŸžŸžŸi @ÿÿÐÐ[ @ÿÿÉÉI @ÿÿÅÅ4 @ÿÿÄÄ) @ÿÿ Ãà Dÿÿ  @ÿÿ ÁÁ @ÿÿ ÀÀù @ÿÿ¿¿ë @ÿÿ¾¾à @ÿÿ½½Ë Dÿÿ¼¼C @ÿÿ»»¸ @ÿÿºº˜ @ÿÿ®®x @ÿÿ­­_ @ÿÿ¬¬@ @ÿÿ««! @ÿÿªª  @ÿÿ©©ç @ÿÿ ¨¨Å @ÿÿ"§§£ @ÿÿ%¦¦ @ÿÿ(¥¥d @ÿÿ*¤¤G @ÿÿ,££1 @ÿÿ-¢¢ @ÿÿ/¡¡õ @ÿÿ1  Þ @ÿÿ2ŸŸÁ @ÿÿ4žž¤ @ÿÿ6Ž @ÿÿ7œœn @ÿÿ9››N @ÿÿ;šš. @ÿÿ>™™ @ÿÿA˜˜ó @ÿÿC——Ø @ÿÿE––Ä @ÿÿF••­ @ÿÿH””– @ÿÿJ““z @ÿÿL’’^ @ÿÿN‘‘I @ÿÿO. @ÿÿQ @ÿÿSŽŽÿ @ÿÿTá @ÿÿVŒŒÃ @ÿÿX‹‹¥ @ÿÿ[ŠŠ‡ @ÿÿ^‰‰n @ÿÿ`ˆˆU @ÿÿb‡‡C @ÿÿc††' @ÿÿe……  @ÿÿg„„ï @ÿÿjƒƒÓ @ÿÿm‚‚¼ @ÿÿo¥ @ÿÿq€€“ @ÿÿrƒ @ÿÿs~~p @ÿÿu}}] @ÿÿw||A @ÿÿy{{% @ÿÿ{zz @ÿÿ|yyõ @ÿÿ~xxÚ @ÿÿ€wwÆ @ÿÿvv¨ @ÿÿƒuuŠ @ÿÿ…ttl @ÿÿˆssN @ÿÿ‹rr5 @ÿÿqq @ÿÿpp  @ÿÿooð @ÿÿ’nnÖ @ÿÿ”mmà @ÿÿ•llª @ÿÿ—kk‘ @ÿÿ™jj @ÿÿšiic @ÿÿœhhG @ÿÿžgg+ @ÿÿ¡ff @ÿÿ¤eeø @ÿÿ¦ddá @ÿÿ¨ccÑ @ÿÿ©bb¾ @ÿÿ«aa« @ÿÿ­``“ @ÿÿ¯__{ @ÿÿ±^^j @ÿÿ²]]S @ÿÿ´\\< @ÿÿ¶[[" @ÿÿ¸YY @ÿÿºXXî @ÿÿ½WWÔ @ÿÿÀVV¿ @ÿÿÂUUª @ÿÿÄTTš @ÿÿÅSSŒ @ÿÿÆRRv @ÿÿÈQQ` @ÿÿÊPPQ @ÿÿËOO< @ÿÿÍNN' @ÿÿÏMM @ÿÿÐLL @ÿÿÒKKé @ÿÿÔJJÑ @ÿÿ×II¹ @ÿÿÚHH¦ @ÿÿÜGG“ @ÿÿÞFF‡ @ÿÿßEEx @ÿÿáDDi @ÿÿãCCS @ÿÿåBB= @ÿÿçAA. @ÿÿè@@ @ÿÿê?? @ÿÿì==ö @ÿÿí<<Þ @ÿÿï;;Æ @ÿÿñ::® @ÿÿô99– @ÿÿ÷88ƒ @ÿÿù77p @ÿÿû66d @ÿÿü55P @ÿÿþ44< @ÿÿ33$ @ÿÿ22 @ÿÿ11ô @ÿÿ00Ü @ÿÿ //É @ÿÿ ..¶ @ÿÿ--  @ÿÿ,,Š @ÿÿ++t @ÿÿ**^ @ÿÿ))M @ÿÿ((< @ÿÿ''2 @ÿÿ&& @ÿÿ%% @ÿÿ!$$ @ÿÿ"##î @ÿÿ$""Ü @ÿÿ&!!Ñ @ÿÿ'  Á @ÿÿ)± @ÿÿ+¨ @ÿÿ,› @ÿÿ.Ž @ÿÿ0| @ÿÿ2j @ÿÿ4_ @ÿÿ5N @ÿÿ7= @ÿÿ93 @ÿÿ: @ÿÿ< @ÿÿ>÷ @ÿÿAã @ÿÿDÔ @ÿÿFÅ @ÿÿH½ @ÿÿI­ @ÿÿK   @ÿÿM   @ÿÿN  ‡ @ÿÿO  s @ÿÿQ  _ @ÿÿSK @ÿÿV7 @ÿÿY( @ÿÿ[ @ÿÿ] @ÿÿ^ @ÿÿ_ó @ÿÿaá @ÿÿcÏ @ÿÿfÿÿ¶ @ÿÿiþþ© @ÿÿkýýœ @ÿÿmüü– @ÿÿnûû‡ @ÿÿpúúx @ÿÿrùùp @ÿÿsøøb @ÿÿu÷÷T @ÿÿwöö< @ÿÿxõõ0 @ÿÿzôô$ @ÿÿ|óó @ÿÿ}òò @ÿÿññ  @ÿÿððE @ÿÿƒãã! @ÿÿ…ââ Dÿÿ†ááù Dÿÿ‡ààÓ Dÿÿˆßß¹ @ÿÿŠÞÞ¨ Dÿÿ‹ÝÝ— DÿÿŒÜÜ @ÿÿŽÛÛm DÿÿÚÚ] @ÿÿ‘ÙÙ Dÿÿ’ØØû Dÿÿ“××ð @ÿÿ•ÖÖá @ÿÿ—ÕÕÚ Dÿÿ˜ÔÔÔ Dÿÿ™ÓÓÌ DÿÿšÒÒº @ÿÿœÑѨ @ÿÿžÐЛ @ÿÿ Ïω @ÿÿ¢ÎÎr @ÿÿ¤ÍÍ^ @ÿÿ¦ÌÌQ Dÿÿ§ËËF Dÿÿ¨ÊÊ> Dÿÿ©ÉÉ. DÿÿªÈÈ  Dÿÿ«ÇÇ Dÿÿ¬ÆÆ  Dÿÿ­ÅÅÿ Dÿÿ®ÄÄø Dÿÿ¯ÃÃÁ @ÿÿ°ßß³ Dÿÿ±ÛÛ78=Qmvm•ª7³ÄÕéï7*8>_d_…›_û_[°_ë_&_dk_d©_ß_@___~’_Ñ_º_ó_, _dh _d¤ _Ø _ 5 _e _• _² _Ï á _= _™ ê _! _X _d’ _dÌ _þ _0 W _Œ _Á _dù _d1_a_‘Áæ__>_[_xŠ_æ_B“__m_dÝ_dM_µ_z_•_°À_û_6’_Ö__da_d¨_ç_&Z_•_Ð_Ð_é÷_÷_O_p_‘_dó_dU_¬_P§_§_¾Ê_Ê_C_b__d½_dù_._c—_ý_c_z_‘c__ã_O_€_d´_dè__@a_Ž_»_í__dT_da_Ž_‰_¸_ç_d _dK _u _Ÿ ¾ _Ò _æ ï _!_E!e!_Ž!_·!Õ!_û!_!"_4"_G"O"_‘"_Ó" #_%#_@#_dƒ#_dÆ#_å#_$,$_S$_z$´$Õ$_%_1%_db%_d“%_Ò%_&\&Ž&_§&_À&_dî&_d,$_S$_'B'_R'_b'g'_Ž'_µ'Ñ'_ò'_(:(_Z(_7m7m7777ª777é7787778787777_7_7_7_7_7z(777777777(7ÿ‡ú‡  ‡ EOb~Ggš‡‰G£ª­  P 4y¹¾ÞÃùÀàɹ HJe‚ù¿Â»kÝÔk77Ìë ‡¹¹ÕÖÙººÎÎÐë¿À«`“+f™ë¾t *0ô 04Ä]¹Ùº  ]|¦ GIdÏÿ*e˜Ø– ˜®áÕ!²âÄá+ácjm–áŒ!ªÊ¾¾ÞÃÊ +1 ovy¢Št§ÙÓ¿ßÈS B“ FHMNPQc€S\“_“Ó‚Ž¡< ²²··âãÄÄÅÅ<õ| < '-3< 3<N<[¼E·ãÅ Å 6ŧ.Èî "® 9. @îWYsŠnˆ’..™n›7 ÷ 9 #@«©ýÿ(i CEF`|é Jg„)ÃiÌÎÐr @ÍóþCDHRVV2 &›QÏ› [ÇÉ$óöù$ 2d 5<@¤d¤«® ðûü CD M (.4Öߣáûüý    EFGLRiœñý –û&– 8Öm–“ÿ ÄðñCDR¿UWqˆiÿˆ÷›ØiÈ<þþÿÿ))**//008899HHIIVVVWWWeeffrrss‚‚ƒƒ‰‰ŠŠ˜˜™™¥¥¦¦Xt‹Q,Ë‘»»Û¿¿Ñ  Ñ IKfƒQOÑbl•‘jº_ÑñDUUz’CGõö÷  !"-./01234<<==>>LMNSSZZ[[\\ijkvvwwxxŽŽœž©©ªª««»ƒ 7?BÃlƒ~C†Ã‹Àls¦5qx{¤õxõ Þ÷Í^7Ì»^ )/Þ ;^‘ÞŸ'M'…ç¨ð‡Ö0ô÷úpøp 6=>Aðnp}  ?LÂb÷"YuŒËßK  : „˼Ô5pÓòòóôõö÷ !"<=>RSTUVWZ[\opqrstuvwxŽœ©ª«½TöÔ 7ÔVXr‰½ 5= = AF+ÊÆ :Ævïƒø ýxùx DGa}ødkn—x­¸ºÁÞßãä¿»Û¿Á "%Kh…A{Áž¥j ªTV[\^_p‡j]ªk³Ûó ,s  3 ó—ž¡œüþ'Ü !Ü /pwz£%z¥€¥ŠN Ž Nr¥˜NšŽœÁ—¼ÜÀ £Ç  ,2`PའR Å &'()*+,56789:;`abcdefghiooppqqrrssttuu|}~€‚ƒ„…†‡ˆ‰Š‹Œ“”•–—˜™š›œœœ¢£¤¥¦§¨‰GÎôÿIWWÉ .I ©IÅûRš›× &'()*+,56789:;`abcdefghooppqqrrssttuu|}~€‚ƒ„…†‡ˆ‰Š‹Œ“”•–—˜™š›œœœ¢£¤¥¦§¨{^„C@@GGQQXX__ÍÎÏÐÑððññóóôôöö÷÷ùùúúüüýýþþÿÿ      !!""$$%%''(())**++,,--..//001122334466778899::;;==>>??AABBCCDDFFGGHHIIJJJKKKMMNNPPQQTTTUUUVVWWXXXYYY[[\\^^__``aaccddeeffgghhjjkkmmnnppqqrrssttuuwwxxzz{{||}}€€‚‚ƒƒ„„……‡‡ˆˆ‰‰ŠŠ‹‹ŒŒŽŽ‘‘’’““””––——˜˜™™šš››žž  ¡¡££¤¤¥¥¦¦§§¨¨ªª««­­®® =>Ä•ŸmºÚ¾­  ­”ö¶þ)¶ -ö <vQòóôõø_  ;_  %_¬è 7@GQX_²·¹»¾¨XÐðCTT¨½ÝÁ( ¨  #¨u¨± !$1¢©¬Údw‡Ôûüýþÿ       -./01234<=>CCCDDDEFGHILLMNRSTUVWZ[\`abcdefghiijkopqrstuvwxŽœœœž©ª«šSZÚwã 8ch›£¦ÌWi£ÒòCCDDEFGHILLMNRRSSTTUUVVWWZZ[[\\`abcdefghiijkooppqqrrssttuuvvwwxxŽŽœœœœž©©ªª«« $ 1ŒRSTUZ]o†ÆòU‡Ž‘>*Éòûüý    EFGLRRiœ¾a”ˆ @ÿÿ<<N @ÿÿ33F @ÿÿhh: @ÿÿgg, @ÿÿ ffR @ÿÿ ddî @ÿÿSSà @ÿÿRR @ÿÿBBX @ÿÿ>>4 @ÿÿ55# @ÿÿ))Á @ÿÿ @ÿÿÔ(Û(î())):)<))n)p)¨)ª):))º):)Ç)n)77ï)õ)76w (•G0÷Rddd°y BD\]fnoq‹¹Gji9G¹HIIâMORdfgg‰‹ŒŒk"Al‘ ›BBDD\\\]]fffnnnoqqq‹‹‹ë)MMNOOS\\^^_``ffgghhnnqqtttww~~‚ƒƒ‹‹ŒŒ4/5´Bu:B]dd‰‰ö~~F(bΖ.)N13O®BîOS_tþSF`hwƒÏ IIOORRSS^^^__ggggttttu€€€‚ŒŒŒŒX\mn|~_ddˆ(((X8>ˆ:<XYZfhmqw|ƒ‹VÁÑKMM*Y^:^gtŒ #Ó#')+3ÃIR\^nqtu#Z`c–|:,\fnq~‹$ Dÿÿ"5 Dÿÿ½H@ÿÿ99¯H@ÿÿ77ªH@ÿÿ 66£H@ÿÿ55žH@ÿÿ44™H@ÿÿ33”H@ÿÿ22H@ÿÿ%11ŠH@ÿÿ+00fH@ÿÿ.EH@ÿÿ22H@ÿÿ5ÄH @<ÄG @ÿÿ1AÄG@ÿÿLÒG@ÿÿS  ¸G@ÿÿX  úH @]  ªG @ÿÿ1_  ªG@ÿÿe  ŸG@ÿÿi  –G@ÿÿlmG@ÿÿsI @z`G @ÿÿ1|`G@ÿÿ„UG@ÿÿ‰úú1G@ÿÿŽïï#I @•íí G @ÿÿ1šíí G@ÿÿ¥èìG@ÿÿ¬ççG@ÿÿ±ååXI @$¶ääßF @ÿÿ1¸ääßF@ÿÿ¾ãã×F@ÿÿÂááÑF@ÿÿÆßßÉF@ÿÿÊÝÝÃF@ÿÿÎÛÛ¹F@ÿÿÒÚÚ¦F@ÿÿÕÙÙ{F@ÿÿØÒÒSF@ÿÿß··lI @/æ¶¶1F @ÿÿ1è¶¶1F@ÿÿð´µ*F@ÿÿô³³F@ÿÿø²²F@ÿÿý±±F@ÿÿ°°ýE@ÿÿ¯¯õE@ÿÿ ®®ìE@ÿÿ­­ÜE@ÿÿ¬¬ÖE@ÿÿªªI @;©©ÎE @ÿÿ1©©ÎE@ÿÿ%¨¨ÈE@ÿÿ+§§ŽI @?2¦¦¶E @ÿÿ14¦¦¶E@ÿÿ<¥¥°E@ÿÿB¤¤I @CI££xE @ÿÿ1K ££xE@ÿÿS ¢¢^E@ÿÿX œœ3E@ÿÿ^ ‰‰(E@ÿÿc ˆˆE@ÿÿi ‡‡E@ÿÿn ††E@ÿÿr ……E@ÿÿu „„÷D@ÿÿz ƒƒìD@ÿÿ€ ‚‚äD@ÿÿ… ÐD@ÿÿ‹ €€ÈD@ÿÿ }}ÂD@ÿÿ’ ||ºD@ÿÿ– {{´D@ÿÿ™ zz¬D@ÿÿ yy¦D@ÿÿ  xxD@ÿÿ£ vv>D@ÿÿ¨ ss¬I @Y­ rrRD @ÿÿ1¯ rrRD@ÿÿµ qqID@ÿÿ¸ pp3D@ÿÿ¾ oo+D@ÿÿà nn!D@ÿÿÉ mmD@ÿÿÎ llD@ÿÿÓ kk D@ÿÿ× jjD@ÿÿÜ ii¾I @dá hhùC @ÿÿ1ã hhùC@ÿÿé ggóC@ÿÿî ffÎI @hó eeëC @ÿÿ1õ eeëC@ÿÿû ddåC@ÿÿ ccÝI @l bbÝC @ÿÿ1 bbÝC@ÿÿ  aa³C@ÿÿ ZZ›C@ÿÿ YY‰C@ÿÿ  XXxC@ÿÿ% WWYC@ÿÿ* VV>C@ÿÿ. UU0C@ÿÿ1 TT&C@ÿÿ6 SSC@ÿÿ: RRf4@ÿÿ= QQÇ4@ÿÿ@ PPÿB@ÿÿD OOÛB@ÿÿJ 44ìI @|Q 33ÍB @ÿÿ1S33ÍB@ÿÿ[22ÄB@ÿÿ`11J @€f00˜B @ÿÿ1h00˜B@ÿÿo//fB@ÿÿv..KB@ÿÿ|,,rB@ÿÿ**TB@ÿÿ…))DB@ÿÿŠ((J @ˆ'';B @ÿÿ1‘'';B@ÿÿ—&&+B@ÿÿš$$ B@ÿÿ !!B@ÿÿ¥  úA@ÿÿ«óA@ÿÿ°éA@ÿÿµâA@ÿÿ¹ÖA@ÿÿ¼ÆA@ÿÿ¿¡A@ÿÿÁ•A@ÿÿÇ#J @–·A @ÿÿ1ЇA@ÿÿØ~A@ÿÿÝ8J @šã  8A @ÿÿ1å  8A@ÿÿì  .A@ÿÿò   A@ÿÿ÷  ü@@ÿÿü  ñ@@ÿÿå@@ÿÿÛ@@ÿÿÒ@@ÿÿ ¾@@ÿÿ¸@@ÿÿJJ @¦«@ @ÿÿ1«@@ÿÿ"—? @@ÿÿ&ûþž@@ÿÿ*÷÷‘@@ÿÿ0õõ†@@ÿÿ5ôôz@@ÿÿ;óóh@@ÿÿ@òò^@@ÿÿDññV@@ÿÿGððM@@ÿÿLïïB@@ÿÿRîî:@@ÿÿWíí+@@ÿÿ]ìì%@@ÿÿbêêYJ @¶géé@ @ÿÿ1iéé@@ÿÿoèè³?@ÿÿtççhJ @ºyææÍ? @ÿÿ1{ææÍ?@ÿÿää½?@ÿÿ„ââ—?@ÿÿˆáá?@ÿÿ‹ßßi?@ÿÿŽÝÝQ?@ÿÿ‘ÜÜK?@ÿÿ—ØÚC?@ÿÿžÔÖ;?@ÿÿ¥ÏÑï>@ÿÿ­ËÍÕ>@ÿÿ±ÇÇÐ>@ÿÿ´ÆÆÈ>@ÿÿ¸Åž>@ÿÿ»ÄÄ®>@ÿÿ¿Â©>@ÿÿÂÁÁ[>@ÿÿÅ££V>@ÿÿÈŸŸO>@ÿÿËžž>@ÿÿÏšš>@ÿÿÑ——>@ÿÿÔ––>@ÿÿו•xJÓÚ‹‹Õ= @ÿÿ1Ý‹‹P=@ÿÿà8=@ÿÿ $=@ÿÿæ=@ÿÿé~~é<@ÿÿì}}^=@ÿÿíjjF=@ÿÿîii0=@ÿÿïhh=@ÿÿðgg=@ÿÿñff´<@ÿÿô^^Ñ<@ÿÿ÷]]¿<@ÿÿøWWž<@ÿÿûSSŠ<@ÿÿþRR«<@ÿÿÿAA–<@ÿÿ@@€<@ÿÿ==w<@ÿÿ<<g<@ÿÿ..`<@ÿÿ--Y<@ÿÿ,,î;@ÿÿÓ;@ÿÿ ¼;@ÿÿ ®;@ÿÿ™;@ÿÿS;@ÿÿòò4;@ÿÿññ; @ÿÿîîï:@ÿÿÖÖÐ:@ÿÿÕÕ¾: @ÿÿÒÒ÷9@ÿÿ ««Æ9@ÿÿ"ªªÙ9@ÿÿ#¥¥¤9 @ÿÿ$¤J Dÿÿ$޵J@0ù%“9 @ÿÿ&‰‰ÌJ Dÿÿ&„‰ÝJ@0ü'ˆˆˆ9 @ÿÿ(~~ñJ Dÿÿ(|~K@0ÿ)}}z9 @ÿÿ*zzK Dÿÿ*xz'K@0+yyK9 @ÿÿ,gg;K Dÿÿ,egLK@0-ff&9 @ÿÿ.VV9 @ÿÿ.SVaK@0/TToK@00UU9 @ÿÿ1QQ9 @ÿÿ1NQ|K@0 2OO‰K@0 3PPÚ8 @ÿÿ477o< @ÿÿ5,,H @ÿÿ6++uH @ÿÿ7**CG @ÿÿ8@E @ÿÿ9••ÌC @ÿÿ:ŒŒˆD @ÿÿ;uuçB @ÿÿ<NNB @ÿÿ=##Ý> @ÿÿ>ÉÉ—> @ÿÿ?ÀÀ>> @ÿÿ@æ= @ÿÿA””«= @ÿÿCŒŒù; @ÿÿDá; @ÿÿE¤; @ÿÿFµ: @ÿÿGÎΠ: @ÿÿHÉÉŒ: @ÿÿIÈÈ|: @ÿÿJÃÃm: @ÿÿKÂÂ^: @ÿÿLÁÁN: @ÿÿMÀÀE: @ÿÿN»»:: @ÿÿOºº1: @ÿÿP¹¹&: @ÿÿQ¸¸: @ÿÿR··: @ÿÿU±± : @ÿÿX°°»9 @ÿÿY¢¢¬9 @ÿÿZ˜˜-9 @ÿÿ[““T9 @ÿÿ]jjù8 @ÿÿ^XXÈ8 @ÿÿ_FFð8 @ÿÿ`CC»8 @ÿÿa11®8 @ÿÿb00 5 @ÿÿc#.:>BXcgk{‡•™¥µ¹Òúý    GªGgEÔ(ºGÍGÛGæGH HH!H2H*IH`HÔ(pHzHÛGˆHÔ(HzHÛG¦HÔ(ºHÆHzH×HÔ(ºHîHüHIIÔ(ºHÆHüHIIH2IJIH[IsIŠIH¨IgE?E²IÇIåIÿIJ5J7§J¹JÉJÚJ?EêJKK,K:KQKdK€KŽK¥KHêJK,KQK€KLH[LtL‹L L?E[LtLÏLíL7%M?E[LtL‹L2MFM?EƒM˜M®M*ÒMìMH‹LN,N[L@NTN?EÏLN,N[L@N¥N7%M?EÿN2MN,N[L@NOD*sO²I2M†OH HH!H2H?E²OÄOßOöOP&P7§J¹JÉJÚJ?E‰PŸP§J¬P¹J·PÇPÜPÚJçPH‰PŸP¬P·PÜPOQHQ•Q©Q»Q?EQ•QáQüQ7%M?EQ•Q©Q+R?RsR„RšR¥R*¾RšRÐRsR„RšR¥R*¾RšRÐR?EåR÷R S*IH`H GªGgEHÆÐD€¹ OQRSUVWXYZ¹5)¹A¹FÚDik !'Ùõ…ø6%?ëT¦¨ªÄÅÆÇËÏÜÝßáâðñòóôõ÷  !>AOQRSUVWXYZjklmnopxyz{|}„…†‡ˆ‰œ¤§¬­®¯²³ÙÛÝßáú015k ‹ë?äèìíîï &adgq€‚ƒ¢¥¨ª234ëCdet ,/2ôFãäå   Ý>ÈÉÝCab]Dqq]FºÀÎ&3&(*&9V÷û&:¸¦?á÷¦A&CS¦Dx¦FÙ59OT;û=qwH1˜#/29Qá˜B/0Gça-"«ÂÅÇñóõ  !*.234kmoy{}…‡‰¯°±á;*aB)*,.Ê;Ób.Ó´èS;òÓ;S>žŸSF·<ZÁÂÄÅÆÇâäæçðñòóôõ  )*,./01234jklmnopqrsxyz{|}„…†‡ˆ‰œ¬­®¯°±ÙÚÚããääååçèú         5< 3¼; êíï  (cfiƒª·å 2347;Þãååî   îB RS]^}~€äæçèéìî  &',./023abdeghqrs€‚¢£¥¦¨©´¶Úãäèí   î;nA% 0134bcceffhiirr      w¥6¹D÷Œw3Ÿ÷9«w<<K,÷Dƒ@<%HM@E•@H©>Á2 ç  ,./023s²:É2<$GL2?ÍÖ?F²A2B$v2H› OQRSUVWXYZ›?á÷›CYdÅ¥§ª«ÕÖñò  !"#$%&,-.012<=@AFGHIWY]^fghijnopqr•–—šÁÂÄÅÆÇËÏÔØáâäçèêìíîïðñòóôõ÷     !$&()*,./124OPQRSTUVWXYZacdfgijklmnopqsvxyz{|}€‚ƒ„…†‡ˆ‰œ¢¤¥§¨ª¬­®¯°±·×ÙÚãåçïú    01234567d PTä8:>ºº¼¼¾äDäE¬­®¯°±ÍeŠÐÐÙÙäæçèìî         &.///001222334AAHHOOQRSSUUVVVWWXXXYYYZZZZadgqqrs€‚œ¢¥¨´ãéêëìú M 0Í?äæM@ïÍB234Ö# µ¶·çì V3V>ŸÖ?äæqrV@ðÖAÖEª2VH¿<WZ¥6¹ˆ"39Nˆ9~®±ˆDtuE…‘çs>–‘@õz9z¬¯z@óúACfghijnopqrâíï)*pƒ¤§ªç 012347Ã>&ÄÅÆÇ  !jklmnoxyz{|}„…†‡ˆ‰¬­®¯°±C?ÔECA   //0223ÃFÛCGñ¬9˜¬Dyµ9˜µ:Î5@ìíîï&adg€‚ƒ¢¤¥§¨ª²³ÛÝßá012347µH79Sž<AIS@-èéêìíîïòóôõ !&'(abcdefghilmno€‚ƒ†‡ˆ‰347ž@÷ýžFמH4g<.5çBMNð8C99p9r‹ŸýpCVYZðGÙ9¢¥¨Y<,4YA  aaddgg€€‚‚úú  YCV¢ÁÂðñòóôõ ïï 5 >•–‹B,,..œœããïïï666 Gçèí9PU: °°°±±±&&&'''”E¢£¤¥¦§01”H2ý=•–ýE¯FÆ9 ªÆ<YZF=iwÆA¯H78=iq€8>š¸@48A  ¸G H+s*1ó?æéê '(0134bcefhir£¦©íóAóCf\9j'(hiÜ<]ÜAÜE¬¥ OPQRSTUVWXYZ%#bc{./8%<#FK%@ê3%HŽ!©<!13CRR>——>¿À—?áûA    B"#CR—F×`<-3`G`HÉ ).IDpIF´¶·ãäåçë    ÉFÝÒ@RDqrÒG »#ìì»81»9ž ¢»=Š‹;?ÏA;B&'7B m:ÂmDssmGmH&öjjttyˆv>¦¨Ò9vA 0134_ééêê'(bbccefhi£££¦¦¦©ßFãä¨ 4Õßåñû¦¨ªÂÅÇñóõ  !*.234RSWXYZkmoy{}…‡‰¯°±´Ò9¨#êê(Eˆ1:¹1>š1F´¶1Gï6ßåçûDlc{8EL<&INÌC]ŒLE—žõü•%ê(cfiÕ=‹ŒÕ>Ç•AUG÷úHþ.,./2adgqs€‚¢¥´Úè >3  ¾: ÒÕÕÖÝÞßßç>>œ¾>Äþ>ËÌÏÐÔÕØÙ>>AAEEHHOO¾@~A>CU>Dps¾E¥§1‡AF°>´½?ßA  Dkù9!ù8LXù;+ù<fghijnopqr}~€ù>ËÏ>Ay?Ýù?ççùCgh¢ÞëÜàB%·B@îïÂD|+ ÌÌÕÕä,>>EE+3 «<AN«=„†Œ+@ìí«@4+B$+Dn´)jææéêê '((01344£¦©¶¶¶¶¶·····äääåååí4;ñû´<W^´=†††‹ŒŒ´Dz#éé:È=gu=rx>š?ËÏÔØ>AEHDvf4Qæ9§¨æ:Õßåçñæ=“”fA fB*.fHÏ. äçèìî &O>ž¡A!DmŠ<@HRŠH0“òóôõ !jklmno†‡ˆ‰“9‰|:Ã|>¨ªü@ |B,,.E!7æèèéììîî &&'034QQSSUUVVWWXXYYZZbehr¢¢£¥¥¦¨¨©´´¶ä E3 E:»EH®"æ 0134r¶¶¶¶····ääåå    ®"ä ®80®;®>Â.A ®FÙ57Gï6€ÄOQ+4€<=L€DsE„€E¢GåHi 6¤ÐÜìø+8Ve°Åé<fn}i?ÝéAr;úÿr@òóôõ !jklmno†‡ˆ‰rB*rEœ¶·ú[>£Û@[B)*,.ÛB4¤@AHIW¤9¤;$=hp *14çççç     ?ËÌÏÐÔÕØÙ>>AAEEHHOO @çE¢£¤¥¦§01G–#^}~€äæqr¢¢££¤¤¥¥¦¦§§¬­®¯°±0011:±–<@M@èé3–G?ßÿBOÈ01234567È84FH9fjÈ=Š‹‹È>ÅÈD}ÈE§1Ñ $v´´´µ¶¶¶¶····×Ñ<]Q?ÜÑFß::º:@íºD{< 04ƒ=pvƒFÕÖll#íìD‚ƒìE­ìFãäå   õE®uH*^  ÞÊÓã+=D^:Á^=jx^@ñ^E™œÞG§@ûý'A  0ËÏ>A0!/20=hv0CT°E¤0 äèìî &adgq€‚¢¥¨´ã RS; îññòùúûû™;<"25™H3b b" 0â<^b>¦¬¹b?Üâ?ääâAË# ´¶·çê K3 K9gq­°K?ØHKB),KHTAAT Ô ÔØEHT+ê(cfiT9jtTB)=9b½?â=F´=Gï6½H9† RS}~€èéê'(bcefhi£¦©Ú †9}=ft>•†> ª¬¶¹º¼¾ÀËΆ@ôCPRSTWXYZï:Öo<:,ï>Ë>ø!£¦¶x=ouxCWxE¢£¤0xGÁA/·å ª=âþ§»*F³ªG  ªH6³?âç³@'(efhi³B/2³CZ3Do3E‰œæé'behr£¦©¶ä :·E‡œE£¦©F²e9o˜öå@åCcN 66Îdh‘ENîùÿNfghijnopqr}~€N:ÀÎ@NCUVWXYZÎE¨©ª×Fá :É A ‰CX Dj: °°°±±±&&&'''=go~E†F±{—žõü{FÉÒÄ# ´¶·çé Ä?âäæçpqrsÄ@     0134DB(7ÄB1ÄG -"æé'behr-#c/-9`“¶ 4œéêëìú¶>!ÂÅÇñóõ  !*.234kmoy{}…‡‰¯°±¶E¥¦§12êç ]•–ššžŸËÌÌÍÏÐÐÑÕÕÖÙÙÚÜÝááäèèèééêêìììííîîîïïòóôõ÷÷ûû       !&&&''((,.//012234>>>?AAABEEFHHIOOQRSSUUVVVWWXXXYYYZZZZaaabbccdddeeffggghhiiq€€€‚‚‚ƒƒ†‡ˆ‰œ¢¢¢££¤¤¥¥¥¦¦§§¨¨¨©©ªª²²³³ÛÛÝÝßßááãéêëìú 0011223344677Ÿ9CSSXXZZŸG è%å h+·å h=nth@òhEœçèú ñ@qF¼¾qH'Ú8 79:C¾ÉËÒÒÚD#?ÍÑÖÚ?BFI£@ûý£B//22£E£¤¦¨©ª02#F²³ÛÝßá#Gëë£H5 :°Œ:È B!FI£@ûý£B//22£E£¤¦¨©ª02#F²³ÛÝßá#Gëë£H5 :°Œ:È B!$ DÿÿU7 @ÿÿddL7 @ÿÿ[[÷6 @ÿÿKKî6 @ÿÿIIå6 @ÿÿGGÍ6 @ÿÿBBÄ6 @ÿÿAA·6 @ÿÿ@@£6 @ÿÿ <<š6 @ÿÿ ;;6 @ÿÿ ::}6 @ÿÿ 66u6 @ÿÿ 55j6 @ÿÿ44I6 @ÿÿ11?6 @ÿÿ0016 @ÿÿ//6 @ÿÿ..6 @ÿÿ-- 6 @ÿÿ,,ö5 @ÿÿ++î5 @ÿÿ**æ5 @ÿÿ))Ö5 @ÿÿ((Í5 @ÿÿ''Ä5 @ÿÿ&&¹5 @ÿÿ%%°5 @ÿÿ§5 @ÿÿŠ5 @ÿÿ€5 @ÿÿv5 @ÿÿ m5 @ÿÿ!a5 @ÿÿ"AFJFSFjFFŸF®F¼FÑFÜFåFõFýFGSFFjFGG)GAKMXYefrs‘’”•±²µ¶ÅÆÑãt\B./12345:BFHILNQRRSSVWZZ\__bbde{Œ‘’“¡¥§¨««¬®²³µµº½¾¾¿¿ÂÂÄÇÇÊÊÌÍSÞFýS½íW`jk¡¤¥¦§ª¼½¾¿Îß%((‚…… "5„‘¥¥±]Yn\›ÝZ¬®²ËÐÓÖÙÜàâåèëîñ]\ ..uw{ŒŒý\ò$7&312LW’®÷<lm®Á**,/13ObcˆˆŠ‘˜»ÊË÷ "'5:GR_l~¯°¿Rù†[ÙRkªoSäQïS¼íx/Tù¾T^ïüXnpt—²³µ#88;>>@BJNQQRSSZ\z€–˜˜šœœž¡©«¬²³µº½½¾¿¿ÂÄòû #/06?BLNZ[ghtuz“–™Ÿ´·ºÇÈÐÑáÏX/24557î(;HS`mÀZ$[nopqstò+-/0VXZ[ceghprtu“”–—™´µ·¸ºÃÇo\ ,245{Š’“ØO5®°±²ö{ xZ€Zaghhiijklm}}™¢£¤¥¦§ª®¶ÁÆÆ'((((**-CC|„…………††ˆˆ‹¢¢ðý  ""'(++/55:;?GHLRSVVZ_`ccglmppt}~ƒ†‘’£¤¤¥¥¥¥¦§§««¯°±²¿ÀÃÃÇÑÔ×××ÛÛÛÞÞ\îø\òü 2DO\ivy‡Ššž¨¬®»ÉÌÌÐÔÖØÚÜÞSêk¡SÛ4AUµzŸáYðýþ!Z!TdÀÌÁZ›¬ÀËa\'BNQRRRSSSZZZ\v¡«««¬®®²³µµµº½¾¾¾¿¿¿ÂÂÂÄ\!8:VXÊS`¡ŠZD[lnpppq8;>?@zœžò+,-/0>?ABKLMNVWXZ[cdeghpqrtu’’“–––—¯±²²´···¸ÃÄÅÇÈ*\ñJ\’j\2bwʪ\s²óAl¯SYkpryz{{³Y´#ãó\ò{|} ¢£œY§L\ZXÑüZ ¦ÐÓÖÙÜàâåèëîñE¦ìW–ìóeR¥EYk¬®ËÐÓÖÙÜàâåèëîñåZ¥e\14I^_bw’¨ÆÇÊ…\8˜T¾ð%x‘U¶%ƒ8˜åîYò WR§wRj¤ó(…„¥÷R(…¥T¿ð‚±—TGQSVXYYYmxz}~~~ï     ~±±±²²³³÷Yö.NŒº×[å7\ý×\íöÀSÏàV”±Cq²QRS½¾¿/Zgt—¸ÇàX4€Y’“”•@[®¿îñÀ\z°²³µ¶¸ÉQm¶éYñ   ]ó?@@LÑ)] yŠž¬®ÌÜÞòYò2])<ITanÁ›X#Y ELLWXYkrw~ÛYðþÿB®ÁZ÷@¤Z—$[¨d[Ó\ëä\ðƒ„„„„…†$]üÌÐÔÖmH~¬®± Rú-Z)D­[àí[è ]÷6Z7V[Ж\>œ+VcpÃ_ /XZ—™s|ðY EMVYks}~ß\íô¨WEJLRSTT>@z˜šœžíùáèX6ˆYBŽ’“”§®±í8<ABCDXppq—²8>QRRSs˜œ²²³³½¾¾¿ô /?LZgt’––—²··¸ÇÑÑRÕ!QSç^‘SØ!±WghÆ(*C…†ˆ¢„¥¦§ÛÛqY[§Q],WdqÄzZ [^uxyšŸ«¸»ÂÊš[Üz\IKLRSWXZ^^{¨ª«®µ¾¿ÂÆÆ#TöƒUíY7CZ7=>¬WlíöìWö,YHñŒYŽ•§¬²´íô#8E8>s–˜œ,] 2DO\iv‡š¨»ÉÌØÚÕYï  ,33Fbce{Š‘‘¥ÊËÍu[Öþ ”§®°±±²íöù7CÞW«Þ¾[â'Sß§X /(;HS`mÀ'Y*HSYnz~ðö÷ùúý!\nq›µ¶ NOQST}º»½¿Àñz{}“—Ÿ £´¸ç\ò#6ÐÙVþZp–·™Zj¤¼½¾¿Î%((‚……„‘¥¥±"R}£°¢W$®Á:LLVWWX "'+/5:?GLRVZ_cglpt¯¿ÃÇ Y E“®An“´KZ:=@ACDEÔS "5”Y“”•©®°±²ï:ABCDETZ:>??BD”Zi}ÍU@ÿÿ;;ùU@ÿÿ99ãU@ÿÿ 77=V@ÿÿ 55"V@ÿÿ33ìW@ÿÿ11ÞW@ÿÿ//AU@ÿÿ--TV@ÿÿ++V@ÿÿ))ÌW@ÿÿ!&'€R@ÿÿ%#$S@ÿÿ( !ØQ@ÿÿ+÷Q@ÿÿ/2R@ÿÿ2·W@ÿÿ5çQ@ÿÿ9ÉQ@ÿÿ="R@ÿÿB ©Q@ÿÿE W @ÿÿFÎm†u@·Îm†u@·Îm†u@·Îm†u@·Îm†u@·.o¢u´už·.oáu{´Ô(þuvvHnEHnEHáu{´.oáuvS·.oáu{´Ô(áu{´.oáuNvv·.oáu{´.oáu{´.oáuwvv·.oáu´už·.oáu‡v¢vÁ·.oæv­\7#çQ÷Q·WÇWØQ€R$V)¨W ©Q ÉQS!AU-ùU9±W !$'/3579;"R 2R"V3¢W $›-ƒU3579;ãU7TV+¬W1ÌW'ìW1üW1E3579;ÍU;=V5W þ-ÞW/_  !#$'//11WyX@ÿÿ JX@ÿÿ 0X@ÿÿ%X @ÿÿHáuwwƒ¸ÎmFwXwqw„wwÎmáu{´7 _ ¨W¬W 0X`XE%XyX ‘X  ¢WJXjX'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ`] Dÿÿ X Dÿÿ!!Ì` @ÿÿo×q` @ÿÿ ©R6` @ÿÿ¡Û_ @ÿÿ<~x_ @ÿÿ|U_ @ÿÿ#;`_ @ÿÿ(ã7Õ^ @ÿÿ+´ß©^ @ÿÿ1#±˜^ @ÿÿ9 e^ @ÿÿ@Ö÷R^ @ÿÿGÄÒ.^ @ÿÿO¨¾…\@ÿÿToq–\ @ÿÿY:^^ @ÿÿ]$-Ö_ @ÿÿ^É_ @ÿÿ_½_ @ÿÿ`·_ @ÿÿaÎmÞzôz{{Ÿ²ÎmÞzôzá²Îmºw„{•{{¶{Á{³Îm||„{•{ƒmI³Îmôz„{•{ƒm‡³Îm•|„w®|Îm•|áu„wF¹*áu{´*áu•|3xú|y¹*•|3xú|!y8}E}R}H•|3xú|!y8}”}*•|3xú|!y8}”}*•|3xú|!y8}Ï}R}*•|3xÜ}ì}kX•|3x„w~Háu×w¹@~¸lºl CºGR4ÇW-0Éʪ°×ÙÝÞèíôy’¸…‹²´¸¹ÃÈϧÅ!"ÓÙêF„„¾Îßî:;G]ª^% äS~úÐZ(HUdg_ãCEIyX),%)$/0PQRSeoz‹µ¹»¿ÍÒã '/0‡‰‹’?HJQs¤«­¯³¹½ë^ ½¬¸‡“ÛÕÝòSŠ5+WW/23458PQRSeoz‹½‹–¬¬­¸ÅÅÏÖî÷÷ÿ{¹¹Ø Qy‡‡ˆ“  ª±ÉÒÒÚÛÞî‘ÆÆì;¹ÂÕÕÖÝéñòõGH`‡º¼¿Ôæðñûˆ’“Ÿ&39uuÉàDU¹¾ÍÓ  ˜¿ÇíùZ[—¢ºÊÌãåL{š¢ÈÔßãIij¤¬ÇÛÝùû±ÄäÕç>F‹R8T#'-99;=>>A__apquuw¦®¯åèðô÷÷øüþ14=ADFFGMMOQRRVY]šš¡¦®®²²ÈØÙÙúýý!&&()*..266>BCEIIKLMQQSTU]^^cfnnpr˜›£ªª¬¯ÁÁÃÅÅÇÑÔØÝÞêíòòóBq|‰‰£³´´ÕØØêð÷û  ##(--::?CEILPPSTX\\_`dllps}}ƒƒ…‡¥­¶¶¸¼¼¾ÀÐÐÒÕÕâèìñò   x¥»ÆÆÉÍÒ××ÚÚçëëìïïü  !%%'++-22499:@@BCCDMMNSSUXX\`efinno}ÏX%())+Z{'>?åìðñ"$,.01=RY&()*BCEIKLMQSTUnoqrxª«­®¯ÅÇÊËÑÔB #%:<CEILPSTX\_`d}~ƒ„†‡Ž¶·¸¼½¿ÀÕÛÜâè¥ !%'+-235@ACEX\­tª­O_æ"#‚ËÌÑÒÓäåêëìCÜÝâãäúûaÊÔØO)/;s°Wa3ˆÁ%2FITgn\ž˜^ ¡S ‡-Ôæðˆ’!Z(Óìäa\¢µ}!` AWX%&FIJgÊS/Øì`ŠZ×'9;=>A_auw¦®å  "#$,-.01=MOQRSTY˜™¡¦®²ÇÈÙùúúý&'()*.26>IJKLMQRSTUZ\fnpŽ›£ª¬ÁÃÅÅÇÉÊËÑÔÝÞãäêíB{|‰¢£´ÔÕØê #$%(-:;<?PQSTX\]_`diks}ƒ…¤¥­¶¸¼¾ÐÒÕÕÙÛÜâèñòùú¥ÄÅÍÒ×Úëïü  %&'+,-24@BSUXX\efi­tª«­Š^éêñòŠ_/°±²´´|~?‹Œ’”¤ÙÚ®ÇÉÎÎÏÐÐÑÑÔÔÕרØÚßßáââããææçøÓV @@BCFGacdghüZ4|‚…ˆŒ””˜›ž¢|^è<_åë  'E â:{; ¨¬ns…\p9_uMÁÐSTR¡Xg0U9•½Ñ9_ru°Þ5M^”³·Üýþ7DÁßvŽ’·ØÙí.KÐó}¶¿Üïðÿ Sg~¬ø s›¨¯µîY Ûæêìîîïòó.^©WR5wR2o{¹‘ÆG÷R¹ÆHTS¡‹¢>—T >JLNÙíííïð÷Y ËäÜú×[•þ7\®+S¹×\|‡Œ§Àäï 8_g¤Íàæö¡«©±·=Eoy|„÷]À·_^i,DR^ÉÚø$/?Q`kÀS{ïàV¸Í"àX(€Y ª±³¶·¸ÇÊËËÍÎÏ@[CSf”ž¢êÉQ©ITñû“Ÿ ]Gs{€ƒ„„…ŒŽ””®²³·ÙÛÜãúýýþCDDÞßáBv‰Ž’´¶·¾ÕØØÙíEIKKòóõ¥¿×ÚÜëïïðÿ  fgh)]•œ£ÍYŒþ  x~¨h£Z]ÁÈÏ1?w‰‹)^>KNNQ[s„‰’I^ ª·ÅË×Þèéêñò ©^ $®²Ùý‰´Ø×ÚëïÉ_d|µ5Wq)`+A^bdimõ ,7DFRV^bx|²µÉÚæø$/35?QUW`koqÒT].PjÐâø›òYÛåæè2]‚ŒR^Å6-’_ „679E-.0¬öø !s™›§¨­¯´µ»ÀÅY=MOQQRX\Û_<„@A«««õrrBDUÄV @@AABabbcZÎçßý$[6d[\›ä\·¾ÀÁÁÄ—˜›¢ªª«¬¬­®°¸¹½½¿ÆÇÊÑÞßèéøùyz{|}~¸¹¹¹¹º»?z{}……†‡‡ˆ‰‹“”˜˜š¡¢¥¬¹ºÃÄÓÔ‘’“”——ÅÆÆÆÆÇȤÃÄÇÎÓÓÔÕÕÖ×ÙÝÞââäFGHHHI®¾¿¿ÀÀÂÐâîïðñóùùûûüüþ++.u‘’“–ŸŸ  ¢¥ÐÐÔ$]‘v‡þrŒ ¼6wƒD_åìíññöü=AHIU„ÙÛñEíï ¨acmd`¤¯±³çì|¤`®  u§©­±²¶ºav„…ˆ‹› R '(Jµó•–¤¥U ©±´îöoy”™£§­[Œí[˜ ] ¹‰JN­±Ž²z~€†‰_ ÅÆÇÈÉÊËÑÒãäêëBÕÖØÙÛÜâãùú¥XY[\V[|–\&;±Êá>ì,R&IQnªÅ #:P\}ƒ¶¼Õ %+2@XªÖ_õ 7FVbx²æ6`¡_ %$&µ·ã?¤ß\|…=F¡©¿^)3456CSTÿ_ <L]ah.2PTjn¨Wh;@E[quz’Ùáããíöãìô,.4;DMOR]|®²ØÙý&(.6BIKQS]nªÁÃÅÇÝ=‰³´Ø #-:CPS\_}ƒ¶¼ÐÒÕñx¡µ×Úëï %+2@SUXe­õöt˜™èX*¯wˆY“;CFJQpuwx{„©±¸ÅÊÍ×áåæïð $9>_uãêì÷÷þ",0;FFMR…šš®²Ùý!&).6CILQT^^nªÁÅÑØÞêòòF‰´Øðû #-:EIPT\`ll}ƒ¶¼ÐÕâìò  ©ÆÆ×Úëï %+299@CCMMSX`fnn¨`ö™ÑR%  QS—HO$‘S„%  ±W6ZÎÎÖ×´½ÉÊÝÞ|““žž¹º  ˜¤¥¸¹’—¨¨ÆÇ<=âHˆˆÀÑãùü +AAIJ ±ÐqYÑêâ[5Q]lu‡Š´ÉÌ:<@`bvx|‚…ˆŒ•˜›Ÿ£©îôþ-.DNPS¨ÁÛð'(JKRS`bho¥«ÂÄÆÇ÷ƒœ¶Ëòý$;QS]_nu~„¯·½ÑÓÖzÒä &,3ATVYq«Q`¢¯q`©zZ'-BLOV^š[ˆú^3ÃŒ§ÀÏßäéï 8_g}¤ÍàæöMRZ‚›ªº¿ÄÊæñü/mt“®Þôü+Ly´ºú` v|}©ªª­±²´#T­Öˆ±ÖéƒU |<¡©©®oouvY+CZ £_ ãå¾ÀÃÊÛè&/¬W&VWX%(IJ«´ÐÐÐâââòóóöÿr””•––™££¤¥¥§©ìW¯|„ŒY;ANpu‰©®±ÅÉÊ×àáãã $+9;>_auw,]:Ë#+3?FNVkƒ”Ÿ¾ûþ ¦Üàø )@MYey€™©¹8;óö "(.5;Ptw|…‡Œ`«´µòÿÌ`ou[‚Õ^µvU_;Þòfõ_<HMRVWXZ_j‚›¿Êæñü/mt®Þôü+Lvy`@X]aag''(.22@FFJPTTaggjnnþª¸ÅÉÍÎ×ÞÞàèéêñò ÞWÁÑ—Æø z¡Ó^ËÇרD¾[^`¢´çìçQ  ±²'S‹'Y)Úèêòæ  '(€../166;=rsu¯°³@--35‡ˆ‹ÀÁÄ'_å"$0X‘œº¦Ç0_å™U‰?J­®±±uvvyy}…¶ÙVAb™Z!2PQRSeoz­Ö{¹¹ˆ±î‘ÆÆÖéGHº¿Ôæðˆ’™_ –¬ y‡;ÂÕ‡"R"'0!")1=LT[u†—¢³¶Òëß5T`j‹œ¬ÄãâS‹ÅÏî÷ÿQ ªÉÒÚ¹ñ¢WDU˜ÇùZ{¢Ôi¤Ä«¼Õçöøør‹˜™››ª­ Y ÊãÛùKZ  `?_jõ 7FVbx²æ0RlR¿ÔSÅ÷ ÒÞõ”Y¬±¶¸ÇÊÍÏÙáãåæïðö ýSQ‹¢>ýT } =ãä¯ w®½_bm3UoRX´òÿ”£†[…Æ^ EIhkú ÕçùoSe“ABïSPXg0/T¥ÀÏR»o\ORƒ…ŒŽ/`a2Tnï`p„8T¼xZ&0123458DUZZ·»¼½¿ÀÁÃÄÇÉÊÊÍÍÎÎÎÑÑÒÓÖ××’–—›¢¹ÅÅÆÉÊÏÏÑÖ×ÙÝÞèíîôô÷÷øýÿ !")1=CLTZ[uy†‘’’“““—œžžž¢³¶¸º»ÒØë      ?syz}”  ¡¤¥ªª¬±²´¸¹ÃÈÉÏÏÒÒÓØÚÛÞßäîõ 57EFTV`bijx‹œ¤¦§§¨¨¨¬²ÄÅÇÈãæì!""%(0;<==IJR^^l¤½ÂÃÇÎÞçéêêëìïñòõFI`|„„„‡ˆˆˆ‹‹®·¸º¼¼¾Ç×  :;;=>AAADDEFIJJø\d‘•œ£ËÍ#+3?FNVYkvƒ‡Œ”Ÿ¾ûþþ   Brx~¦¨Üàø )@MYehy€Œ™£©¹ 8;Z]¥¼ÁÈÏóö "(.156;?Ptww|ƒ…‡‰‹x_|­¸`§SšP[*AUèêòr¯‡ÀÁZ)HTdfg\q””(9DH_dgu|‚…ˆŒ•˜›ž¢>MƒÁDЧSA^ ª¶ÅÏ×Ýö $q¯*\¢óA ˜ÇùZ{¢Ôi¤Ä³Yº[,Mó\/01;<=stu°²³B345ˆŠ‹ÁÃÄœ`¬ÃÊÛè!&/Qs»ÀÅÊÔÖeR3åZ3e^×.å`p|÷]@ÿÿã]@ÿÿ¼]@ÿÿ š]@ÿÿ çV@ÿÿ |] @ÿÿ.oáu{´.oæv­\.oZzizž·.oz{´Îm¢u—z®z!¹7_ çV ×]ã]÷]¸V üW |]°] ¼]E W‰] š] Ò]'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ `] Dÿÿ!!Þa @ÿÿö?¨` @ÿÿ hßWa @ÿÿ0X @ÿÿy“JX @ÿÿKvyX @ÿÿ #9Åa @ÿÿ$·a @ÿÿ(‘a @ÿÿ-  ÎmZz´u\~j~n²Îm¤~´u³~„w´Îmê~´uþ~•{G´*áu{´ÎmFwXwqw„wwHáuwwƒ¸?¦ª³¸¦ª³€¦ª³c€ŠGRÇW€‚$-@oyšçêì~—­ºÒýG]§ÇËÏÖS!|yX$ya 9:<DEGQRSW[^_abhŒ“[$)z€€‚  #$&'),-/02?@Zinoxy™š¡¤¿ÂÍØãçêìûjoprsttux}}~†ŽŽ—§§«­¹¹º¿ÃÇÇËËÏÏÒÖÖØøúûý$"R&')/02i¡¿ÂÍØãûâS¢WcKRn "+88<CGSqqu|€–———œœ¡¡¥§¨ª­­®±±³¶¶¸¸º¿¿ÂÂÂÇÌÒ×Ýâéúÿmuz}ƒ†‡ŠŽ‘‘‘’’š››§§¬°°²·¹¼¼¿¿ÃÃÇÇËËÏÏÒÖØØ YdÈÓÞöôM RB{™¯ÔS#,n™t}޹]~Š‹S£Â#ýSþ/W/ƒƒ #%&,./?BZnpx{™›¤rsttx}€Ž™«¯¹»$=a Piiijj ‹‹‹ŒŒ&3)-.RˆŠ  &/:EMRdfs~†ÈÊÓÕÞàöøpu}޹ûR†[ ÏM RoSÅÅ)ïS//TõÔ5ZkÕÖØa4?M[x†˜¥§ª®±³·¸ºÿØO –¡¥¨¿ÂÇÒÝ·xZg&)-.155|‚ƒƒƒƒ„………†ˆŠ $%%%&-.../@ABCCGKKMopppqqu|š›››œçèéìññój~€‘‘‘’𭮝°±µµº»»»¼øý  \0˜^ÏSÛÍ-¡S•ª!AU!Z[k‘“ÎÙäüÊSÊT 8q—§­­³¶¶º‘JXK<Gu€’›jXKeŠZ& dehiu€Š‹ÈÉÌÍÓÔרÞßâãö÷úûk¦§ÆÇÊËÎÏÖר*\2Š^23óARгY g”§ÇËÏÓalzƒ‡Š’›§°²¼¿ÃÇËÏÒØüZ|^/18ˆEJgõeRÅR/åZÅa°²T1U u’“œ§ÇËÏÞ=îYNUX\]`aj.^§ÇËWRwRƒ3÷RƒTþ1—T8PTTTUU[[[\]`aaceijooopp ]]]^_abbdehhŠŒ–––———¦¦¦§²²²³¹¹¹º÷Y 9DQer}ÉÔß÷×[*7\€Wa·a zƒ‡Š¼¿ÃÒÀSryàVS`XKjp@amb ø ÉQITt«R!ÒT"+C|œéÿš2]½vÒ]hoöúra hmWnpq›a "BZ :ERfs~ÊÕàø$[d[\.ä\|„† yz{||€„„†êëìììííj—˜™šš›¡¡$a'//3„a rsu}~€Œ‘ R"­R%.p›»­[%í[, ]ópÛû-aMXY\]`a WXZ^_ab­a   6ZâV[–\Ö6aORU_$&z| jöøŸa  ¨W0Kcn7<GQS]dehŠÆÇÈÉÌÑÒÓÔ×ÜÝÞßâö÷ú hl’›§·ÇËϨ`hha¨a "ÑR6QSÐÉ+‘S6Z±Wƒ……%.Kp„›íñ¡±µ» ‘X$1238qYhÌ×ú[Q]בa غR&€š["š]„ú^ì#TæsÑ4ƒUh¬W$+./112388ˆŠCC||éhoššÒöúìWoú,YNTU[ceio9<DGru}€ìaö "%'*,.02u[õaöžRÞR?xÞW5¾['ÞaöçQ†'S¤$'Y }ˆˆŒ efhikÉÊÌÍÎÔÕרÙßàâãä÷øúûü0Xz™Zƒƒ %.BZp{›rsx™¯»:$+ .í6 q ïÐ7n¼’l0<úTV`î*v% €Ô>Æ,PÔ4Ð_Ö !€²*¨¤`  Žâh rX¾: –—˜ynopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’ÊËÌÍÏÐÑÒÕרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwÖ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw²³´µ¶}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»«ÆÇÈÉÁÂÃÄÅÆÇÈÉÊËÌÎÓÔx¦§¨©ª¯°±·¸¹º»¼½¾¿ÀÁÂÃÄÅb @ÿÿHœ¬°7Wb“bxyzŸŒ Dÿÿ¹Œ Dÿÿ##‡b @ÿÿnn|b @ÿÿmmIT @ÿÿkk™_ @ÿÿjjë^ @ÿÿii'S @ÿÿee1S @ÿÿdd8T @ÿÿbbdS @ÿÿ ``CS @ÿÿ ^^éR @ÿÿ \\ÞR @ÿÿ [[ÅR @ÿÿ YYºR @ÿÿXXÔS @ÿÿWWâS @ÿÿVVÊS @ÿÿUUžR @ÿÿSSR @ÿÿRReR @ÿÿQQWR @ÿÿPPGR @ÿÿOOQS @ÿÿHH‘S @ÿÿGGÀS @ÿÿFFob @ÿÿEE#T @ÿÿDDS @ÿÿCC¸Q @ÿÿBBT @ÿÿAAT @ÿÿ@@/T @ÿÿ ??¡S @ÿÿ!>>ýS @ÿÿ"==÷R @ÿÿ#<<­R @ÿÿ$;;wR @ÿÿ%::oS @ÿÿ&99S @ÿÿ'88ïS @ÿÿ('b Dÿÿ˜˜b Dÿÿ™™rW Dÿÿšš`] Dÿÿ››Ô DÿÿÌ4 Dÿÿ__pV @ÿÿ: ˜ hU @ÿÿ à  ÙT @ÿÿ– ¿ ~T @ÿÿ. 4 uT @ÿÿ' - Á @ÿÿ$$‚ @ÿÿ!!– @ÿÿE @ÿÿ9 E@ÿÿQ @ÿÿò*M @ÿÿñ"M @ÿÿØíM @ÿÿ ÁÖM @ÿÿ!³ºþL @ÿÿ"›°èL @ÿÿ#–ßL @ÿÿ$wŒÚL @ÿÿ%frÕL @ÿÿ&Wc›L @ÿÿ'Ää•K @ÿÿ '{)W@0(}}7W@0)~~© @ÿÿ*øøŽ @ÿÿ+òòH @ÿÿ,êê/ @ÿÿ-ããÙ @ÿÿ -ÅËEW@0".ÈÈWW@0"/ÉÉdW@0"0ÊÊY @ÿÿ2< Š Y@ÿÿ4®®m @ÿÿ7£ ° m@ÿÿ:­­ª @ÿÿ;'b Dÿÿ|^ @ÿÿ,7Š^ @ÿÿ *HÂ΂ã‚ó‚HÂ΂ã‚ó‚ ßc  #&',034ØO -|^,äc "%&',/234d&d3Í ,- R#I^"-/R0Š^òc#&,-03öc "%&'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ`] Dÿÿ X DÿÿÞd @ÿÿz—·d @ÿÿ [j¢d @ÿÿ JWÍU @ÿÿ"FùU @ÿÿÉãU @ÿÿ‘¸=V @ÿÿƒ"V @ÿÿÑûAU @ÿÿ ©ÃTV @ÿÿ"›¦V @ÿÿ$Š”ÞW @ÿÿ'wƒÌW @ÿÿ*dn€R @ÿÿ.TZØQ @ÿÿ1BGS @ÿÿ449÷Q @ÿÿ8#*2R @ÿÿ;·W @ÿÿ>çQ @ÿÿBð÷ÉQ @ÿÿFÒå"R @ÿÿKµÆìW @ÿÿO`¨©Q @ÿÿR6Q?d @ÿÿS++5d @ÿÿT'')d @ÿÿT$'Xe@0 U%%je@0 V&&’ @ÿÿW!"Ko¯ƒ`HKoǃՃàƒëƒöƒKoǃ„'„Îm†u@·Îm†u@·Îm†u@·Îm†u@·Îm†u@·Ô(þuvvHnEHnE.oáu{´Háu{´.oáuvS·Ô(áu{´.oáu{´.oáuNvv·.oáu{´.oáu{´.oáuwvv·.oáu´už·.oáu‡v¢vÁ·.o¢u´už·.oæv­\>„J„.o]„û·xçQñ-12ÇWM”–$''((8äå$-BBZbuužªªÞîÿ23'Y­»ÀG]½Â‡dÕßà°SÒV‹pdàPe€ˆŠ“ùUÉÙVoˆ™ZÜ&X[`e ÒÜßåìïö&+™_¡g%E¶¹¹º»¼½¿ÀÁÂÄÅÓÕÕרÙÜàáãäñóóôõö$&&'()578CEFUWWXYegijklmx|~£ÑØÚèíFSV_y‘–˜›®ÉÎÐÓÖàäñõ"&&).9"R¶à+m"VÑ¢WL¶º»¼ÀÁÄÄUXklÝÞ)+^gÕØâãððóô¢dK^bfë^¡R&'eïÔSYÝTVœ”ZIõ(€€€‚] dqrww|Š‹š =VW'7KKXÜÜ &XY[`ae ¡ÒÜÝßåæìíïö÷&+,-../}d¬¹º½ýd}ƒ…”&3F+==@BIJLMNggiinx€€‘””››££¹¼ÁÁÕÙÜááãó&77EEWgik||€Øèî–Î×&:PV`dh‡‹–RØãôR,..d '(+-.124ØOÞ)k¸Q&ØQCxZ›ckn{||}}€„”––›œœœŸ  ¡¡£§z~€€€€€‚ÓÚÛÜÜÝÞàäååèèéééììíîñòò !#,-.BBBFIIILLSVXYZuuuy|||“˜›žªªª®±±±´´ËÐÑÒÕØÜÝÞìíîÿ   $)*+,-./233555889:=>>ø\$ 8=?ACFHJLTVWprtvy{}”™›œ¥§©«®°²´Xd<?ÀØd\fS5¡SX`ÜåìöAUªáYeloqqrstwxƒ‡ˆŠŠ‹Œ‘d®·»¼ÀÀÁe}j3KOOQQSV\^^__abbcceffgiÊTðOQJXÞŠ^ ]^fgÔÕáâòóŠ_  $_``abó\ )*+klmüWagk|^w\Óàñœd- \\]]^^_cfffggkmÌÓÓÔÔÕÕÖààááââäññòòóóõEÐÈ!e\&F‘¢ÕbKU5d'+9??žedA»Øjlm’¤þª±ÀÁžR-/TUú‚·ENUÙçøÞWxìL´8îY ÔÞÞßMRSUV^`®²µ»ÀÀÁÞd{÷Q$!.wR +—T®ÀÀÀÀÀ·W·d\…ˆ€RUàVqŠÄ©Q7ÉQÓ(ITÜ aæí÷)]FJLVWy}›œ®²´)^ :<=AEIJKLMNP)d$&’Øãéôú2RÒT|š “’d \Òd\be~…Ž‘›ª°³³¹º½¾ÛY dopqrsˆ‰Š‹Œe~…Ž‘„d  Ìä\1 !"#,124Z[[^m“žŸ ¡¢¢ËÖ×Þßßâãäååæîïïððóôõöö÷$] 8=ATpt™¥©$e~…’­R[ßÍU" ]Ø a–Î'-eˆŽ‘6eˆŽ‘_%%6:<<`acµ¶ÒÓðññ#$$45CTUewxzÓ “Ë$?d +FG‘‘ ¡¢¢d¬º»?e‰’¨W ¶¿ÀÂÄÖÞßßàHe€…†“ÑRܱW%N}œœ¡ñôôõõ€ééñò!16IIi||¢±±  55=>qYßñd{‚ˆƒUÑ‘É"ãU‘ã]'¬WJailn||  ÓרÙÜÞààáãFij(ÓàñÌWe£"ìWa_Öäõ,YÔÕ,] ?CHrv{§«°Ld 9?@EFG’ž¡£¤Œd $%&()+66bdegiiÌd\^Š^@ÿÿ|^@ÿÿ Y @ÿÿ àX @ÿÿHÂ΂ã‚ó‚HÂ΂ã‚ó‚MƒÑ+}ƒƒÑ+}ƒ Yßc'döàXèX|^Š^äcòcÍ'b Dÿÿb Dÿÿ`] Dÿÿ rW Dÿÿ!!d Dÿÿ""šf @ÿÿ È~f @ÿÿ ~‘f @ÿÿig¸` @ÿÿHZf @ÿÿç1êe @ÿÿ§ã¼] @ÿÿš£š] @ÿÿ"U—®e @ÿÿ&>Rú^ @ÿÿ)+e @ÿÿ.§ôçV @ÿÿ3VŽ÷] @ÿÿ6KRã] @ÿÿ90@’@ÿÿ:%%KoÞz‡„M²Îmºw´u·„ï³Hâ„ì„´u…Ä´ÎmÞzizôz´ÎmY…Zz7¸Îmáu{´.oZzizž·.oz{´Îmì„„…M²Îm|{´Îm¬…ñmƒmô´Îmù…—z®z`¸.oáu{´.oæv­\XošGR*ÇW<Oltu|}µÀÉÕÕ##OP‰²G]lÙâôÿ‡bmÄÍÎS¢ëVñùUØLNNOOQ§¬®±Ùçíïò'€†‡‰Âe>Bë^<4fMjoxyz{„…†‡’•—™›Ÿ¡£¥§©«­¯±³µ·¹ÄÈÌÏÐÑÔÚÜãåéíî÷ø  )*+,-./0123456789:;<=BKS èW@1::k¶·ÃÄÍÎ]h‹³´·¸»¼ÈÌô~ŒÁÐÑ(*+,-./0123456789:;<=E´µÝe X`fnt~€Š‹Œ’’&3&6689;<=NNO^~ª¼Ëâ$M[[m¬íù PosT\‚‡ª«¾¿ÇR®¶ÆU‹ÏZklmoR-oSi¨üïS¤/T°ZmÏe X]`–KNPRTUWØOºq½¸Q¸8T8¸VVaxZÏYcehhklmqqtuuwxx||}~‚‚ª·¸¹¼¾¿Á  #$©®±³´µÈÉÕÕÕÙÜÜÜßßéïòô÷üýþÿÿ ###'***--luvzz~††ŒÁÄÄÈÈÌÌÏÏÐÑÔÔ×ÙÙÜàââåééìíîòôô÷øýÿÿ (*+,-./0123456789:;<=EOPPSTWWWZZ[\`aa€‰‹ŒŒ¦²³´µ·½½¾ÁÄÄø\*¬³¾¿ÃÄÏYbewy{‚‡Žª¯±²ÐÒÔÖÙÛÝßëðòó "$')+-¸`HXd58f jw‹Ž‘”¿ÀÃÇË'ASi¦ñ¡S®´e§¡e §¶¶¶·¸¸¹¹ºÃÄáeX~€ŠŒÊS´¸È/ŠZYklnmØÙÜáâåóô÷øþÿ Š^ö÷Š_)"@GHIJKO©¹º»¼½¿ÃÃËÍé   êe§Uó\Yqstª½¾¿Sf‹üWVc}¼]›øN|^õ|bl·Ãœdêõõöö÷÷ø|e X\^`afhioqr‰‹E U¦­=¦æG}¨eR,ÅRÑ2ŽNT`afhioqr‰xyz{„…†‡’•—™›Ÿ¡£¥§©«­¯±³µ·¹ÄÈÌÏÐÑÔÚÜãåéíî÷ø  )*+,-./0123456789:;<=BKT²UÙì*â0¼NUãú®e>÷Q¾K€Á WR+wR·»Ì€ÆG÷R“ÊHT´—T-«µ¶¶¶·¸¸¹¹ºÃÄÔmxxx„„„ÜÜÜÜååååøøøø    7\‚×\IW~†×]›ŸHN÷]LG¹Ã·f¢ª¼ÀS˜ ÀU\àXä©Q·ÉQ¸füRéR4IT=µ©U±)]³eޱ²ÙÝßòó'+-‰]V\)^ 35689:;<=?’%åÒT¼Ò] ›ŸçõølqsuS[’_ ­ØÙßãì󨺼U^fLTY„ꤤ¥¹dS7ä\-"@FKO©µ¶·¸¹ÀÁÆÆÉÊËÌÌÍéøùüýþÿ  $] ¾Ãbw{¯ÐÔð"Df wŽ‘”ÀÃÇË'A R¯·­R–ÎU§°¼¼ÇרÚÛîHNT¡ª®²º ] D¬íP‡6Xj–\lÙâôÿ–f~‚„Œ_0355KLYª@UVXš›§©ççéKl€fj¨WYlmnmÙÛÜâäåôõ÷øÿ  §¹º¨`ºÑRjœÖ1S9QSiª‘Sžß±W!=mwx‚FMMˆ‰ÆËÜÜýýÿÿ**WW`a½Äcß‘e§ºRÐ1š]V¡ú^QÌšf¡CS6#T³¶ƒU V§>HIj~¡¦Yåæã]1]‹¼fçTcf¿¬W9hh¶¸¸ffõüjqzz††~†ŒŒ¤®¶··ºÁÌW#ìWBŸq†,] ¿ÄÏy‚‡ÒÖÛ $)Œ`¤®¯¶Œd©¼¿ÀÁõ_   )>BjqžR.ÞR3ÞW |ÉI‘’ß -Z~f~çQ¿"OŒÀ'S:çVV§e ª¾¿ÁÇÉÉËÍÎ×°SôšÓ°]@BDFGIMMQV[]_…”Ÿ¡™U°î )Dª™Z h³·»Ìô~ŒÁE´™_;ÙeX_ffghllnqt|}}…ˆ‰‰‹‘‘”"R¹nt¿âS5"VÚ¢W6;qq¶¹¹ºglnqt½¿÷ÄÄÈÈÌÌÏÏÔÔ×ÙÜàâåééìíîòô÷øýÿ ¥º¼RÂFÔS0TVí”Z 8NOQMþþÿ ýS¬ýT¨âäåæé=VÛ=fmx„Q_]Y @ÿÿ,Y @ÿÿ@~@~,Y]Yßf DÿÿÌ4 Dÿÿn Dÿÿè~ Dÿÿ Àf @ÿÿ7 σ#׃& „--D#'+.ÀfØfÀƒ"èƒ'ìƒ'„.Êfòƒ**„+$ Dÿÿ›l@ÿÿdd”l@ÿÿccl@ÿÿ bb†l@ÿÿaal@ÿÿ``wl@ÿÿ__nl@ÿÿ^^fl@ÿÿ]]Xl@ÿÿ"SSÚj @@ÿÿ&FGËj @@ÿÿ*DEÃj @@ÿÿ.BCXj @@ÿÿ2@A1l@ÿÿ8::&l@ÿÿ=99l@ÿÿC88l@ÿÿH77l@ÿÿM66úk@ÿÿQ55ïk@ÿÿV44çk@ÿÿZ33Ük@ÿÿ`22Ôk@ÿÿe11Êk@ÿÿi00¤l @m//¸k @ÿÿ1o//¸k@ÿÿt..°k@ÿÿw--·l @z,,¦k @ÿÿ1|,,¦k@ÿÿ€++œk@ÿÿ„**Èl @"ˆ))k @ÿÿ1Š))k@ÿÿ((ˆk@ÿÿ’''Ûl @&•&&~k @ÿÿ1—&&~k@ÿÿ›%%lk@ÿÿ ##vk@ÿÿ¤""dk@ÿÿ§!!Pk@ÿÿ­  [k@ÿÿ²Dk@ÿÿ¸:k@ÿÿ½/k@ÿÿÂ&k@ÿÿÆìl @2Êk @ÿÿ1Ìk@ÿÿÑk@ÿÿÔm @6Øñj @ÿÿ1Úñj@ÿÿßýj@ÿÿâáj@ÿÿçêj@ÿÿëÚj@ÿÿïÓj@ÿÿóËj@ÿÿ÷Ãj@ÿÿû»j@ÿÿ  m @A  ±j @ÿÿ1  ±j@ÿÿ   ©j@ÿÿ¡j@ÿÿ$m @F—j @ÿÿ1—j@ÿÿ$j @@ÿÿ(þ…j@ÿÿ,üü~j@ÿÿ/ûûvj@ÿÿ3úúoj@ÿÿ7ùù5m @N;øøfj @ÿÿ1= øøfj@ÿÿB öö_j@ÿÿF ôôXj@ÿÿJ óóQj@ÿÿN òòEm @TR ññHj @ÿÿ1T ññHj@ÿÿY ïï@j@ÿÿ\ èè(j@ÿÿ_ ÚÚ!j@ÿÿc ÙÙj@ÿÿf ØØj@ÿÿk ×× j@ÿÿp ÖÖj@ÿÿs ÕÕúi@ÿÿw ÔÔòi@ÿÿ{ ÓÓëi@ÿÿ~ ÌÌsg @@ÿÿƒ ¿ÀPi @@ÿÿ‡ º»9i @@ÿÿ‹ ¸¹1i @@ÿÿ ¶·ÙV @@ÿÿ“ ´µ¦i@ÿÿ™ ®®ži@ÿÿž ­­”i@ÿÿ¢ ¬¬Um @i¦ ««ˆi @ÿÿ1¨ ««ˆi@ÿÿ­ ªª€i@ÿÿ° ©©hm @m³ ¨¨vi @ÿÿ1µ ¨¨vi@ÿÿ¹ §§_i@ÿÿ¾ ¥¥hi@ÿÿ ££Pi@ÿÿÆ ¢¢Ii@ÿÿÊ ¡¡Ai@ÿÿÍ   9i@ÿÿÑ ŸŸ1i@ÿÿÕ žži@ÿÿÛ (i@ÿÿà œœd@ÿÿå ››ym @zê šši @ÿÿ1ì šši@ÿÿò ˜˜i@ÿÿø ––ýh@ÿÿý ••õh@ÿÿ ““d@ÿÿ ŽŽŠm @  ŠŠëh @ÿÿ1ŠŠëh@ÿÿˆˆáh@ÿÿ††›m @………Õh @ÿÿ1……Õh@ÿÿ#„„Íh@ÿÿ&ƒƒ®m @‰)‚‚Ãh @ÿÿ1+‚‚Ãh@ÿÿ/¿m @Œ3€€°h @ÿÿ15€€°h@ÿÿ:~~Ê;@ÿÿ=||Ñm @A{{Œh @ÿÿ1C{{Œh@ÿÿHzz˜h@ÿÿKyy{h@ÿÿOxxnh@ÿÿUwwch@ÿÿZvvWh@ÿÿ`uuMh@ÿÿettAh@ÿÿjss7h@ÿÿnrr,h@ÿÿsqq$h@ÿÿwpph@ÿÿ|ooh@ÿÿ€nnh@ÿÿ„mmÙV@ÿÿˆllÿg@ÿÿ‹ffZ@ÿÿ^^õg@ÿÿ–XXëg @@ÿÿšRUãg@ÿÿžPPØO@ÿÿ¡OOÒT@ÿÿ¥NN R@ÿÿ©MMäm @©­LLÎg @ÿÿ1¯LLÎg@ÿÿ´JJR@ÿÿ¸HHôm @­¼GGÅg @ÿÿ1¾GGÅg@ÿÿÃEE³g@ÿÿÈCC½g@ÿÿÌBB«g@ÿÿÑ==£g@ÿÿ×<<œg@ÿÿÜ88“g@ÿÿâ66àV@ÿÿç44/`@ÿÿì33ˆg@ÿÿò22g@ÿÿ÷11sg@ÿÿü00jg@ÿÿ///j @ÿÿhh_l @ÿÿZZ>l @ÿÿ>>Íi @ÿÿ¾¾±i @ÿÿ³³Vg @ÿÿ..Gg @ÿÿ ***g @ÿÿ :g @ÿÿ g @ÿÿ !%15@EMShly€„ˆ‹¨¬*¢†·†®MD*̆چD*̆چD*̆ç†ô†D*̆چD*Ì†ç† ] ‡*¢†·† ].‡*¢†·†®MD* WìMD*̆`‡w‡D*̆•‡ô†D*̆¡‡w‡D*̆•‡ô†*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·†ÄTþ‡*¢†·†®M*¢†·†ÄTþ‡*¢†·†®MÁ+5ˆï] ]ÄTCˆÁ+5ˆï] ]†OD*‚ˆÄT“ˆ?E³ˆÄT͈7%M?Ĕ%MÄTöˆD*‚ˆÚ†?E³ˆ$‰7%M?Ĕ%M:‰D*‚ˆÄT“ˆ?E³ˆÄT͈7%M?Ĕ2MÄTöˆD*‚ˆÚ†?E³ˆ$‰7%M?Ĕ2M:‰?Ĕ2Mç†U‰D*̆ç†ô†D*̆چ?E5ˆfYç† ]y‰D*Ì†ç† ] ‡*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·†ÄTþ‡*¢†·†®M?E«‰Å‰â‰7%M?E Š2MÿMŠD* WìM?E«‰FŠQŠ7%M?ElŠ2MzІŠD*zŠgED*̆¦Š¼ŠÏŠD*̆¦Šw‡ùŠ W`‡®MÁ+ W¡‡®MùŠ W•‡ ‹ùŠ W¡‡®MD*Zö\„[†O?EYö\„[%‹7%M?E5ˆ»eï]Z‹l‹*¢†·† ].‡D*Zö\„[†O?EYö\„[%‹7%M?E5ˆ»eï]Z‹l‹Á+ï] ]¦‹Á+ï] ]¦‹Á+ WìMÁ+ W¡‡®MD*Zö\w‡?EYö\â‰7%M?E5ˆ»eï]Š*¢†·†®MùŠ W•‡ ‹D*Zö\w‡?EYö\â‰7%M?E5ˆ»eï]ŠD* WìMÔ(¹TAoÔ(¹THÇ‹Ô(¹TAoÔ(¹TH ]Ö‹*ó‹m` ]ŒÔ(¹TAo*ó‹1Œ S*ó‹1Œ SÔ(CŒ`Ho[TŒ^ŒeŒoŒÔ(¹TŒŒ ŒÔ(¹T¸ŒÇ‹Ô(¹TÀŒ ŒÔ(¹T¸ŒÇ‹Á+Í]CŒ ]ÄTÕŒÁ+Í]CŒ ]æVÔ(ÄT?E9ÄTP7%M?E¹T%MÄTvÔ(Ao?E9¡7%M?E¹T%M´Ô(¹TÌßïÔ(¹TÌ ŒKom`ŒŒ SÁ+m`ÀŒ SÔ(¹TAoKom`¸ŒŽKom`ÀŒ S?E¹T%MH ]%ŽÔ(¹TH ]Ö‹Ô(ê\4a„[æV?EêU4a„[PŽ7%M?EÍ]»eCŒZ‹Ž*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1Œ ]ŒÔ(ê\4a„[æV?EêU4a„[PŽ7%M?EÍ]»eCŒZ‹ŽÔ(ÄT?E9ÄTP7%M?E¹T%MÄTvÔ(Ao?E9¡7%M?E¹T%M´?EòŽ 7%M?E3+RzŠ>Ô(*gE?EòŽ[u7%M?E3+R(Só‚Ô((S`HÁ+m`ÀŒ S*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1ŒÄT–*ó‹1Œ S*ó‹1ŒÄT–*ó‹1Œ S*ó‹1ŒÄT–*ó‹1Œ S*ó‹1Œ SKom`HŽÔ(CŒ`Ho[ÇÒ%Mã?EÇ»eÒZ‹ Á+m` ]dcÁ+m` ]dcÁ+m``H*ó‹1Œ SÔ(ê\4a Œ?EêU4au7%M?EÍ]»eCŒó‚Ô(ê\4a Œ?EêU4au7%M?EÍ]»eCŒó‚?EÍ]=\E>Ô(¹THÇ‹*M_%Mqo[ÇÒH%Mo[ÇH%MoŒ?EÇ»eÒZ‹ o[ÇÒ%Mã*M_%Mq*M_%MÄTÈ*M_%Mq‘‘H ]%‘o[ÇÒH ]7H‘7777O‘7GG7õGg*hmÔi–khnÓPi¢º»Pk k()*l7¹[9iŸ¸¹jÕk"°<lëP0123=NOPRflmnopqrstuvwxy|‘“•–žŸ¡¢£¥´¶¸º¿ÌÓÔÖèóôúûüþ3456789:@BDFS]^d+66EJXXˆˆ˜˜ïö  ë ‚¨&,«g=ëgRëhˆŠŽëiÉÌt 6X´%GGHHHLLMMM{{€‚ƒƒ…††ŠŠŽŽŽŽšš››››¨©©«¬¬]D  Ýg#Nmnopqrstuvw‘“•–ÓÔô3456789:]^diœ&3!#%¦i®fjöø&k]¦k+,&l9fl]Ï R´¶¸º¿þ@BDFÏ.­®12˜#/46<EJX\^fˆ˜­®Ìïöüþ 12ØOO˜hyXjó@AXlPSa-2oqsuw„…†–ª«¬®()*./02468:áh†ái¿¿À!jÙ¡jájÊ;|Êk0Ó‹ÓCEJˆ˜¥ïö  #“g46i˜š›Ój<ŽEGHJLMNNOlmmnnooppqqrrssttuuvvwwxxˆŠŽ‘‘““••––š›žžŸ¡¡¢¢£¥­®´¶¶¸ººÓÓÔÔÖÖèñòóôôöøùúúû   1233445566778899::@BBDFFS]]^^_dd H›ù E!;11122233344488<<<===GL\\\^^^{€‚„„…Šš§§¨ªª«ñø &)++,..ÅgEG…jü®GHLM{ŠŽš›ñòøù  î.6CEGJLXz{~€‚„…ˆŠ˜š§¨ª«ïñöø   #%&()+,./nA%ññòòòøøùùù      &'')**,--/00nhwnl^w7G123=7hrwl_@ *0lžŸ¢ó€D{€dŽ€i©Ú@jåèS©j2?¥òiÓÛ#ƒ©'-k[k_›lddo/0126<=PX^flmnopqrstuvwxyz|~ƒ„†Ž“•–œžŸ ¡¢£§©ª¬­®ÌÓÔÕÖרÚèòóôùúûü !"%'(*+-.0123456789:S]^_`abcd$hpäi¿Àdk!`ÍQ/012348<=COPPRR\^tuvwxz~„ŠŽ‘“•–š›œ¡§ª­­®®¿Ö×úûüüþþ    #%(+.1122789:^_ ­®12M /< RMMhtÍhƒÕÍi½¾jþlbVg-.g1=ÿgcfÌl`ˆQýÈ<=ÌÓÔÕÖרÙÚS]^_`abcdd›ˆg2ˆiª«¬Hjïñˆk'bÑ fyz{˜ÌQjò:gzg0z~úiÔ:k^úk5dC By|œ£"Ã>CBOPRTlx„œžŸ ¡¢£¥§ª´µ¶·¸¹º»ÕÖרÙÚèóúû!"#%(+.@ABCDEFGS_`abcƒh xž¡¶·úBCÃh‚ÃjBC¬›,hqlk"#5@/08<Blœ×Ù "#_aõgX\^Õh„…†õh‘“Þ5DIQW}‡—¤îõý þ.CEJXz~„ˆ˜§ªïö  #%(+.žFyzgži­~jû~k%&>l=>çk30!/468<CEJX\^ˆ˜­®ïö  12p9iÏëV°h|~€°k-c EGz~˜ö Y! GL{€…«ñø)/YA ##%%((ÙVl´µZ\^ho¢‚ƒ…†¨©«¬&')*,-/0â?66CCEEJJXXˆˆ˜˜ïïöö  ¢h{€‹Bzz~~ËjDET::ÅÅLLTPRüþT+HMƒ†Ž›©¬òù '*-0”i¬Ôk1”lc½ = CJL‚„…ˆŠŽ§¨ª«ïñ #%&()+,./}+HM=G123=½gBÙýh•ÖýjÆ¥†CRH†la/`3oi£¥/jßhojù/kïk4¸k./0Á 011223346<==X\^¿AhsAi Ø*gjg/<êj3 BMƒ†Žœ ©¬ÕרÙÚò!"'*-0_`abcó?GHLMŠŽš›ñòøù  sg0¿À³gBCœ {€š›ø  œg8œk*Ük2%#‹Œe9bÈäOŽ!Šš Ž(Ž› Î@ Ÿ´µ¸¹ó@ADEÎgJLk×g$Nmnopqrstuvw‘“•–ÓÔÖô3456789:]^dWhuWi¢º»FG—j  48\^àV4I$HMòùIi¡ jÖÒTNj×{ahÇÎãêNU{hx»h~»j Ä@3//00666PPRRTXXXtuvwˆ‘“•–˜œ­®Ö×üüþþ  12789:^_DkÄk/l6-#Œ¶ ö £¥¶>2oqsuw„…†–ª«¬®()*./02468:vAGHLMŠŽš›ñòøù  vi§¨vjúvk"ak///0012346688<<=BCCEJPRXX\^ltuvwz|~~€„ˆˆŠŽ‘“•–˜˜š›œœŸ§ª­®´¸¿¿Ö××Ùïöüþ      #%(+.12789:D^__€C ŠŽŽš››   _i£¥_jô_lZ¨ 2oqsuw„…†–¬®()*./02468:h4\^(iœ×hi£èi¿À(jÚq$†¬*01iž¶·±i²³±j   ñj1l:jØÚjFGZl8c£g<ãgPTchvLEahÇÎãêNUŒhyz{hÇÎãêNUŒhyz{$ Dÿÿ®y Dÿÿþþ“}@ÿÿ´´Ž}@ÿÿ³³‰}@ÿÿ ²²€}@ÿÿ ±±w}@ÿÿ°°Úp@ÿÿ¯¯n}@ÿÿ®®p@ÿÿ­­d}@ÿÿ¬¬\}@ÿÿ¦¦!}@ÿÿ!‹‹}@ÿÿ'ŠŠ}@ÿÿ*‰‰ð|@ÿÿ/ˆˆâ|@ÿÿ2‡‡Ô|@ÿÿ7††Ä|@ÿÿ>……¶|@ÿÿD„„§|@ÿÿGƒƒ˜|@ÿÿJ‚‚–{@ÿÿN@@‡{@ÿÿR??x{@ÿÿU>>o{@ÿÿX<<™} @[;;d{ @ÿÿ1];;d{@ÿÿa::[{@ÿÿd99S{@ÿÿh88G@ÿÿk66={@ÿÿq22I{@ÿÿv11+{@ÿÿ{005{@ÿÿ//"{@ÿÿƒ.. {@ÿÿˆ,,üz@ÿÿŒ**{@ÿÿ‘(({@ÿÿ•''âz@ÿÿœ&&Ìz@ÿÿ¢%%ðz@ÿÿ©$$Øz@ÿÿ¯##´z@ÿÿµ""¢z@ÿÿº  Áz@ÿÿÀ¬z@ÿÿÅŠz@ÿÿËxz@ÿÿЗz@ÿÿÖ‚z@ÿÿÛjz@ÿÿà^z@ÿÿäIz@ÿÿè–y@ÿÿîúú‰y@ÿÿôúú~y@ÿÿùùùhy@ÿÿþùùy@ÿÿéé&y@ÿÿ èèúx@ÿÿçç y@ÿÿææêx@ÿÿ!ääÛx@ÿÿ&ããÎx@ÿÿ+ââ¿x@ÿÿ2àà°x@ÿÿ9ßß¡x@ÿÿ@ÞÞ“x@ÿÿGÝÝ…x@ÿÿNÜÜwx@ÿÿUÛÛhx@ÿÿ[ÙÙYx@ÿÿaØØLx@ÿÿg××>x@ÿÿmÖÖ0x@ÿÿsÕÕ$x@ÿÿyÔÔx@ÿÿ~ÒÒx@ÿÿƒÑÑüw@ÿÿˆÐÐïw@ÿÿÏÏâw@ÿÿ’ÎÎ×w@ÿÿ—ÍÍÉw@ÿÿ›Ë˼w@ÿÿŸÊʯw@ÿÿ¥ÉÉ£w@ÿÿ«ÈÈ—w@ÿÿ¯ÇÇŠw@ÿÿ´ÆÆw@ÿÿ¸ÅÅsw@ÿÿ½ÄÄgw@ÿÿÃÁÁ\w@ÿÿÉÁÁ«} @`Ͼ¾Nw @ÿÿ1Ѿ¾Nw@ÿÿؽ½À} @cÞ¼¼Aw @ÿÿ1༼Aw@ÿÿç»»4w@ÿÿí¹¹(w@ÿÿó¸¸Ô} @hø¶¶w @ÿÿ1ú¶¶w@ÿÿµµç} @k´´w @ÿÿ1´´w@ÿÿ ³³w@ÿÿ±±ýv@ÿÿ°°ñv@ÿÿ¯¯çv@ÿÿ®®Üv@ÿÿ#­­Òv@ÿÿ'¬¬Êv@ÿÿ+««¿v@ÿÿ0ªª¶v@ÿÿ5©©¯v@ÿÿ8§§¨v@ÿÿ;¦¦ù} @y>¥¥Ÿv @ÿÿ1@¥¥Ÿv@ÿÿD¤¤˜v@ÿÿH££‘v@ÿÿM¢¢‰v@ÿÿQ  €v @@ÿÿTJK€v@@ÿÿWŸŸzv@ÿÿ[žžqv @@ÿÿ]HIqv@@ÿÿ_kv@ÿÿbœœ`v@ÿÿe››Yv@ÿÿiššNv@ÿÿk™™Gv@ÿÿn˜˜>v@ÿÿs••øu@ÿÿ{ˆˆv@ÿÿ‚‡‡v@ÿÿ‰††Ðu@ÿÿ‘……êu@ÿÿ˜„„Þu@ÿÿŸƒƒÁu@ÿÿ¤´u@ÿÿ©€€¦u@ÿÿ®šu@ÿÿ³~~ru@ÿÿº||Œu@ÿÿÁ{{€u@ÿÿÇzzMu@ÿÿÎyyeu@ÿÿÕxxZu@ÿÿÛww?u@ÿÿáuu1u@ÿÿçtt%u@ÿÿíssu@ÿÿórr u@ÿÿùqqu@ÿÿÿppót@ÿÿnnæt@ÿÿ mmÛt@ÿÿllÏt@ÿÿkkÃt@ÿÿjj¹t@ÿÿii t@ÿÿgg‡t@ÿÿ"ffzt@ÿÿ&eent@ÿÿ*ddbt@ÿÿ0ccWt@ÿÿ4bbKt@ÿÿ9aa@t@ÿÿ?``6t@ÿÿC__+t@ÿÿH^^t@ÿÿN\\t@ÿÿT[[t@ÿÿXZZ—c@ÿÿ]XXÿs@ÿÿbXX ~ @µgUU%s @ÿÿ1iUU%s@ÿÿoTTôs@ÿÿuRRês@ÿÿ{RR~ @ºOOs @ÿÿ1ƒOOs@ÿÿŠNNÔs@ÿÿ‘MMàs@ÿÿ—LLÊs@ÿÿ›KKÂs@ÿÿŸJJ·s@ÿÿ¤II®s@ÿÿ©HH°T@ÿÿ­GG§s@ÿÿ°FF/~ @ųEEžs @ÿÿ1µ EEžs@ÿÿ¹ CCŒs@ÿÿ¼ BB–s@ÿÿ¾ @@ts@ÿÿÅ ??`s@ÿÿË >>s@ÿÿÒ ==ks@ÿÿØ <<Js@ÿÿÞ ;;:s@ÿÿã 99Vs@ÿÿé 77Cs@ÿÿî 660s@ÿÿò 55?~ @Ó÷ 44s @ÿÿ1ù 44s@ÿÿÿ 33P~ @Ö 22s @ÿÿ1 22s@ÿÿ 11»r@ÿÿ 00ïr@ÿÿ //Ür@ÿÿ ..Êr@ÿÿ --Ãr@ÿÿ  ,,§r@ÿÿ% ++™r@ÿÿ) ))²r@ÿÿ. ''¡r@ÿÿ2 &&’r@ÿÿ4 %%‹r@ÿÿ7 $$„r@ÿÿ: !!|r@ÿÿ= [r@ÿÿA Tr@ÿÿD 1r@ÿÿH ,r@ÿÿK $r@ÿÿN r@ÿÿR r@ÿÿV r@ÿÿZ r@ÿÿ^ r@ÿÿa —F@ÿÿd úq@ÿÿg õq@ÿÿj  c~ @óm  îq @ÿÿ1o  îq@ÿÿs  áq@ÿÿu Ùq@ÿÿw Ôq@ÿÿz Íq@ÿÿ€ Ãq@ÿÿƒ ¹q@ÿÿˆ ³q@ÿÿ‹ ¥q@ÿÿ ÿÿq@ÿÿ” þþ‡q@ÿÿš ýýwq@ÿÿŸ ûû“q@ÿÿ¥ ùù€q@ÿÿª øø\q@ÿÿ° ööfq@ÿÿµ ôôTq@ÿÿ¼ óóAq@ÿÿ òò;q@ÿÿÆ ññ1q@ÿÿÉ ðð+q@ÿÿÍ ïï!q@ÿÿÒ îîŽN@ÿÿ× ííq@ÿÿÜ ëëÀU@ÿÿà ééq@ÿÿâ èèép@ÿÿæ ââáp@ÿÿé ÚÚÔp@ÿÿî ÕÕÇp@ÿÿò ÔÔ½p@ÿÿô ÓÓ¦T@ÿÿ÷ ÒÒ¶p@ÿÿú Ñѯp@ÿÿý ÐЪp@ÿÿ ÏÏ¢p@ÿÿ ÌÌ„p@ÿÿ ÇÇÆU@ÿÿ  ÆÆyp@ÿÿ  ÅÅpp@ÿÿ ÄÄ`p@ÿÿ ÁÁXp@ÿÿ ¼¼Jp@ÿÿ »»to @ÿÿ ’’Yo@ÿÿ ‚‚6 @ÿÿ DD€n @ÿÿ:Cq~@0" ;;~~@0"!<<‹~@0""==™~@0"#>>§~@0"$??µ~@0"%@@Æ~@0"&AAÖ~@0"'BBS} @ÿÿ(ŸŸJ} @ÿÿ)žž‹| @ÿÿ+~~€| @ÿÿ-}}o| @ÿÿ/ww^| @ÿÿ0vvN| @ÿÿ2uu>| @ÿÿ3tt1| @ÿÿ6ss$| @ÿÿ8rr| @ÿÿ;qq| @ÿÿ=ppJo @ÿÿ>\\#v @ÿÿ?YYÖ{ @ÿÿAQQÈ{ @ÿÿDPPzv @ÿÿGOOkv @ÿÿINNxG @ÿÿJ55Ry @ÿÿKîî3v @ÿÿL=r @ÿÿMƒF @ÿÿN6p @ÿÿOµµp @ÿÿP¯¯p @ÿÿQ®®p @ÿÿR­­øo @ÿÿS¬¬éo @ÿÿT««Üo @ÿÿU©©Ïo @ÿÿV¨¨Âo @ÿÿW§§µo @ÿÿX¥¥§o @ÿÿY¤¤‡o @ÿÿZ¡¡ëN @ÿÿ[   o @ÿÿ\ŸŸšo @ÿÿ]žždo @ÿÿ^šš{o @ÿÿ`““&3 @ÿÿayy?o @ÿÿbss7o @ÿÿcqq-o @ÿÿdpp#o @ÿÿeooo @ÿÿfnn o @ÿÿgkko @ÿÿhjjûn @ÿÿiiiÜn @ÿÿj^^Ón @ÿÿk\\Èn @ÿÿlPP¾n @ÿÿmOOrn @ÿÿnEE¬T @ÿÿo66en @ÿÿp44[n @ÿÿq..Tn @ÿÿr,,Mn @ÿÿs%%Bn @ÿÿt_bgjx´¹ÄÒÕò#$%&'()**nE*¸Œµ“Á“*µ“Ò“*¸ŒgE*nE*µ“Ò“*nEaoÞ“î“”*nEÔ(”.” S*¸Œµ“Á“Á+F”%M„[µ“Z”¤+µ“Ò“*µ“” ”¬”kXµ“Ò“*µ“Æ” ”Ó”Á+ê”=ø”„[µ“ •Á+ê”ø”„[µ“J•*µ“Ò“*µ“Ò“z••µ“Œ•z••‡µ“¨•z•µ“Ò“D* ŠÚ†?E«‰$‰7%M?E³W2M:‰*[LìMaowX½•®MHÿMìM?EÒ•[L½•ß•î•ao[L½•ß•'–?EÒ•[L½•U–ao[L½•®MaoÞ“½•„–*Þ‘ÄT¬œ–*Þ‘¬Ç–*Þ‘ÄT¬œ–*Þ‘¬Ç–*ï] ]Þ‘ÄT¬ß–*ï] ]Þ‘¬)—*ï] ]Þ‘ÄT¬ß–*ï] ]Þ‘¬)—*ï]Þ‘ÄT¬`—*ï]Þ‘¬œ—*ï]Þ‘ÄT¬`—*ï]Þ‘¬œ—*µ“Þ‘ÄT¬Å—*µ“Þ‘¬ú—*µ“Þ‘ÄT¬Å—*µ“Þ‘¬ú—*Þ‘ÄT˜-˜*Þ‘˜Y˜D*r˜Œ˜®M*ZÞ‘õ‘§˜’*ZÞ‘õ‘¬L’*ZÞ‘§˜‚’*ZÞ‘¬¦’*³W= ]Þ‘ÄT˜µ˜*³W ]Þ‘ÄT˜É’*³W= ]Þ‘ÄT¬™*³W ]Þ‘ÄT¬“*Þ‘ÄT˜-˜*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*³W=Þ‘ÄT˜É’*³W ]Þ‘ÄT˜É’*³W ]Þ‘ÄT˜É’*³W=Þ‘ÄT¬“*³W ]Þ‘ÄT¬“*³W ]Þ‘ÄT¬“*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT¬Å—*µ“Þ‘ÄT¬Å—*µ“Þ‘ÄT¬Å—*Þ‘ÄT˜-˜*Þ‘ÄT˜-˜*Þ‘ÄT˜-˜*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*Þ‘˜Y˜*Þ‘¬Ç–*³W ]Þ‘˜R“*³W ]Þ‘¬„“*Þ‘˜Y˜*µ“Þ‘˜™*Þ‘¬Ç–*µ“Þ‘¬ú—*Z„[Þ‘§˜R“*Z„[Þ‘¬„“*Y„[Þ‘§˜³™7%M*³WfY ]Þ‘˜î™*Y„[Þ‘¬.š7%M*³WfY ]Þ‘¬hš*³W2MÞ‘˜R“*³W2MÞ‘¬„“*YÞ‘§˜§š7%M*5ˆ2MÞ‘˜R“*YÞ‘¬Ôš7%M*5ˆ2MÞ‘¬„“*Þ‘˜Y˜*Þ‘˜Y˜*µ“Þ‘˜™*µ“Þ‘˜™*Þ‘¬Ç–*Þ‘¬Ç–*Þ‘¬Ç–*µ“Þ‘¬ú—*µ“Þ‘¬ú—* WìMD*‚ˆÚ†D*³ˆ$‰7%MD*̆2M:‰* Wµ“›D*5ˆ›µ“.›z••µ“Œ•z•J›U›z•J›U›z••‡µ“¨•z•nEz•nEz•µ“Ò“z••‡U›z••‡µ“¨•z•nEz•µ“Ò“ao[L½•`›l›*zH= ]î“ÄT˜•›*zH ]KoÄT˜â›*zH ]î“ÄT˜â›*zH= ]î“ÄT¬!œ*zH ]î“ÄT¬mœ*zH ]î“ÄT¬mœ*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*zH=î“ÄT˜â›*zH ]î“ÄT˜â›*zHî“Vk˜üœ*zH=î“ÄT¬mœ*zH ]î“ÄT¬mœ*zHî“ÄT¬-*µ“î“ÄT˜]*µ“î“ÄT˜]*µ“î“ÄT˜]*µ“î“ÄT¬*µ“î“ÄT¬*µ“î“ÄT¬*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*nE*\EgE*Â*°*Í] ]Ø*Â*µ“ž*Í] ]$ž*°*µ“Ož*zH ]Ø*zH ]$ž*Â*ê\î“§˜nž*ê\Œž*êUî“§˜©ž7%M*zH%MØ*ê\„[î“§˜Ø*ê\„[$ž*êU%Mî“§˜Ðž7%M*zH= ]Ÿ*zH= ]Ÿ*zH ]Ø*Â*Â*µ“ž*µ“ž*¸Œµ“Á“Ô(?ŸAo?EMŸ¡7%M?E3aŸ´?EÒ•oŸaonE*CŒ ]î“ÄT¬|Ÿ*CŒ ]ÀŸ*CŒ ]î“ÄT¬|Ÿ*CŒ ]ÀŸ*CŒî“ÄT¬ñŸ*CŒî“¬' *CŒî“ÄT¬ñŸ*CŒî“¬' *°*êUJ 7%M*zH=$ž*êU%Mp 7%M*zH= ]¤ *µ“3¨I%MÝ *nE*¡­\*¡gEHµ“?Ÿ"¡*î“ÄT¬Ôœ*°*î“ÄT¬Ôœ*°*nEHµ“Ò“*Q`H*Q`H*6¡O¡ S*Q`H*h¡µ“Á“*m``H*¸ŒgE*¸Œµ“Á“*°*°aoX`r¡ S*µ“Ò“H(S`H*µ“Ò“Ô(?ŸAoÔ(òŽ¡7%MÔ(3aŸ´*nE*nE*µ“Ò“Á+„¡%M„[µ“Z”¤+µ“Ò“*µ“” ”¬”kXµ“Ò“*µ“Æ” ”Ó”*µ“•¡¨¡*µ“î“ÄT¬*µ“Ož*µ“î“ÄT¬*µ“Ož?EÒ•Qr¡ß•Å¡aoQr¡µ“ø¡Á+ê”=ø”„[µ“ •Á+ê”ø”„[µ“J•*m`µ“ ¢*¸ŒgE*¸Œµ“Á“*µ“Ož*µ“Ož?EÒ•Qr¡:¢aoQr¡ S*nEÔ(c¢.” S*µ“Ò“Ô(3x¢µ“†¢*µ“Ÿ¢¬¢*nE*µ“Ò“*µ“Ò“*µ“Ò“*µ“Ò“aoÞ“r¡”*nE*µ“Ò“?Eµ“Ò“Hµ“Ò“aoQr¡`›Ã¢*¸Œµ“Á“*µ“Ò“¤+aonEæ¢Ô(*Ô(****Ô(ô¢þ¢7£7£ £%£(£=£%£W£k£%££‰££›£%££ê££77#¤6¤;¤%£6¤Q¤%£6¤_¤6¤7j¤4¥77´lE¥L¥S¥Z¥a¥h¥L¥o¥v¥}¥7„¥—¥ª¥7½¥Ê¥ CGGkGiiÀl Cºl CÍ¥æ¥ÿ¥¦7 ¦i¦¦¦7áÇpÔGq òòóó„„……‘‘Gv˜EINTÐuƒ…¹q”¹tis12‚zkxD¸ë4»¿ÁÊÌÏÐØÚâéô!5@Zde“•œ­ÊËâãä./189‡‰­¯²´ë  E¥;k&ùë?.òó13LMNT[\wxyz{|ƒ„…†‡ˆ¸¹»½ÈÉÛÜÝÞßàæçèé:„…Š‘‘ëN ks<kvœNtoŒ’•Ôþts=?ôsR]D»»½½&3wy{¦TÒfj&p±¦u&yè¦{DpÊ­r˜#679;<=>? "#$%&ur˜v£{(˜|‚Ža-Gùý'+7;=?ijklmnpqrstuwxyz{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéú"$&(,ápÚe¯áqJo¹\Jp»gpÊr-Js7;ÊsKÊv«J}žÓPV¿÷Ó)+139;>?NTy|…³µ»½Ýàçé "%&*,Ón\Sz¦S{8S}Ÿ<Ë¿¿ÁÁÊÌééëëíîñôôööøùûý!&')+12345667799;;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrstuwxyz{|~€ƒ„…†ˆ““••š›žŸ£§©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú  ""#$%&'(*,.//001122889?­¼o¥¼wÊ?@z{‚ƒ„…†‡ˆ‰Š‹¦¬­®¯°±²³´d уdoˆšd{:;ä{Sbd}¬ÍTòòòóóóó01123<=>?LMMNNORT[\`cxy{|ƒ„……†‡ˆˆ¤³µ¸¹»»¼½½¾ÁÈÉÛÜÝÞßàæççèéé#$%&:„„„…………ŠŠŠMn%,Íq–MuwyÖo¨®Vs7Ö{QTv?os?uu¿vª¿xàúˆýˆ9HIJKLMNOTUZ\abcelmnstuz{|€†‡ˆ®¯°±µ¶¹½¾ÆÇÉËÐÑÒרÙÞßàäèérxÑ|pr‘n=qéë‘v¢w³´zgÕ 0CEúq²ztezvžOúxæçCéôøù&',67<=@Lwzƒ†æè#$'(/1Ã!O¾Ã>ñ£¤§Ãq•Ãr,Cs6ÃtjÃ{NNOOPPQQTTUUVVŽŽ’’““””••––——¬T6¬nA,r¬z5#5HIJKLMNTZ\abcelmnstuz{|€†‡ˆ®¯°±µ¹½ÆÇÉËÐÑÒרÙÞßàäèéµo¥5{/îžF6žsCEt\çnbçv®gwÁp9å©pCÿ†ˆppÄðz$ð|ˆ”YA¢¢¤¤³³µµ¸¸¹¹::Yo‚žŸ ÙqkYvšFKOUYxØ¢¥¦¢pÌ­"z¢z "{.‹r$ uq‹|{~”5gipqv‡ýv°ÆUÆŽ¯o¤¯pÐd¯v§¯wÉ8v8}’’s=}‰•êsRêu„êxäjzó? 24ORUX´¶¼¾ÁùúótnswÄÜ<¿ÁÊÌéëôö0“•./0128Ün^Üo©\qôöÜr.Üv­\wÁ\}£¦%# PQSVWY¿ÀÂ÷øû¥qÿ’%s4TU%usŽ˜™š›œžŸ  >?@@HJŽ!U¶ŽNís2NOŽ}³—F—cX—n>cd—wÇ—z`p¿Á`s<>àsL`v›IF¿Áéëôö!“•/0129Éo§ÉwËIz I{1Rpc»¼ÄÅÆÏÐÑÒÔÕØÚëíîïñòóôöøùûýþÿ$,0BGHI^apqrstu˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ02>?@z{‚ƒ„…†‡ˆ‰Š‹‘‘¯²³Òv¬Ryîòùú;&X;qñ»r,0oj„o““––„pǬ„r!_ 24ORUX´¶¼¾Áùú( 13y¨ Fùý'+7;=?ijklmnpqrstuwxyz{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèé"$&(,èiJKhpÁ•¨v¦(w¸hxÙhyù1+ RX¦Áùúñnc1qð±1r³1utqvEHñv¯1|sušožEIktvp¯ÚpدZuwšu~cSYÂû½ã"4´£n@#ooão©#vŠY£wÈLEÝä ¡¨Œn<fhpq–– p­Œs@BŒu{Lx×Ìz#% {(,>#2¼þ.ÅëöBC02:¾nLO\^ž>v“•>xÖ~yù>|t‡n;gipq‡o¡qè°‡qùýtZ‡tfv†‡{?Pzù Ka‹°¾É×’šypÅÂBnÂo§ÂsJ+ C+qï«qÿ†ˆ+t^+{/0´    2244EFFOORRRUUXXq´nB´u€4w¹4yì´z":µn?eqþfqôætmÏ HJÏ.±¼ÆÇÑÒÓÔÕèíîïðñòóøùûýþÿ%&')+-./013679;<=>?GHIJKLMN[\^_`abcijklmnpqrstuwxyz{|~€ƒ„…†‡ˆ˜™š›žŸ ¢£¤§©ª«¬®¯°±¸¹»½ÄÅÆÇÈÉÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàæçèé "#$%&'(*,>?@‚ƒ„…†ˆŠ‹¬®°±³Ïo¨ÏpÔþÏtkXp¼iqØz#!qî¡r&¡xÞ!}‹—ŠwÆŠz“qù“xÝ“}´|r!üwÐüz'*E!   00224CCEOOTTU¥´¶¼¾;ŠŠE}––® 24ORUX´¶¼¾Áùú®sH7oq7r·sI€D  ,F;<€n:D€qørup€uz€vŸFJ|ccddeeffgghhiijjppppqqqqrrss€|z}€}±iDéo«épßâ¦rn9Eòo«òpâruz|ryùÛ# F¦<[n,.[rÛtlÛxã[{9$$rl$xÔ¤yú$|rt F<G6T}~ ok–Ôú– ,on–pÊÌ.­r–s@xÒyèé–yú–{@V|qsÿo¬ÿsXwÅÈ !¦¬­®¯°±²³´ÈnMPÈ{PUwÑ ââ6¦¦Ñëö02Ñ,OU¶¾:s69ƒBƒFlSbõq Þ ]rêõú (8A)Þuƒ^z^|v§o¤§r'+§sF§|ƒ0Š0!`c¢³µ°TG—0p±0s50xÕ°xß0z0}’’ "Õ CEMNT`cx{|…ˆ¢¤³µ¸¹»½ÈÉÛÜÝÞßàçé:; 0‘íîøùûý&')+12345679;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrwxy{|~€ƒ„…†ˆ©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú "#$%&'(*,­q–íîøùûý&')+.12345679;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrstuwxyz{|~€ƒ„…†ˆ©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú "#$%&'(*,­™r&)b<=>?â?ó1133MMNNyy||……ˆˆÝÝààççéé…‘‘brbtcâwÎâz$&â|‡“KtaT  ššT#$%&T+F<Tn,ÔpÕTqó‘ÔqjkTrÔsLMÔ|†’½ V»¼ÄÅÆÒÔÕíîïñòóôöøùûýþÿ$,0GHI^apqrstu˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ12>?@z{‚„…†‡ˆ‰Š‹²³½pÓ®=r={12†fw±o,RÁorïr/ïwÏo{<o|wxG45øo¬cøu†ˆxzx{>QÁAqòÁuAw»¼ÁzªMPªpÏc³@“³q“3vŽœ LORU[\ƒ„†‡¥´¶¼¾Áæèw´µ¶ùe9Þ ¢en4euxνÎ&úÎ@¼ïðGš›žŸ ?@‹±³Nv™Nw¼½¾ÎxâN|u×r-Wtb×wÍ oŸFKluw p¯ tg‰v V yæ‰yú‰}²p®’r%´t[}Š–{Ýä ¡¨ûni{o“–ûpâ¦ÄýÄ@AÕÕ1<<==>>??LLMN[[\\``ccxx{{ƒƒ„„…††‡‡ˆ»½ÈÈÉÉÛÛÜÜÞÞßßææçèèé##$$%%&&Ä|…‘-#QWÀø-opŸ6sD‚»¼¿ÁÄÅÆÊÌÏÐÑÒÔÕØÚéëíîïñòóôôööøùûýþÿ$,0@BGHI^apqrstu“•˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ./011228>?@z{‚ƒ„…†‡ˆ‰Š‹­¯²³¶>Eùý'+7;=?ijklmnpqrstuwxy{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèé"$&(,6pµ¶pÑ6t_¶v©¶|„v¼ÁÊÌÏÐÕØÚïðòòóóóþÿÿ -.001123<=>?CGLMMNNORT[\`cfxy{|ƒ„……†‡ˆˆ• ¢¤³µ¸¹»»¼½½¾ÁÈÉÛÜÝÞßàæççèéé#$%&.:@„„………††ˆˆŠŠ‹­¯±³CòòóóRR¼¾ÁÁ„„……ŠŠ‘‘rhlŸv¤¥Ø Dÿÿ@BXZlnRyT`ht"z0`kN Ó !.9FOR^frc ,46DL\dpxzCT`ht“xh<T`ht,'?WkÄw`¤y ;?@HJhkltvz6 z,z02HJ`btv››G‚@ÿÿAšš;‚@ÿÿE™™2‚@ÿÿH˜˜&‚@ÿÿL——‚@ÿÿO––‚@ÿÿS••‚@ÿÿV””ü@ÿÿZ““ó@ÿÿ]’’æ@ÿÿa‘‘Ü@ÿÿdÐ@ÿÿhÇ@ÿÿkŽŽ»@ÿÿo²@ÿÿrŒŒ¦@ÿÿv‹‹@ÿÿyŠŠ‘@ÿÿ}‰‰ˆ@ÿÿ€ˆˆo@ÿÿƒ~~e@ÿÿ†}}[@ÿÿ‰||Q@ÿÿŒ{{F@ÿÿzz=@ÿÿ“yy2@ÿÿ—xx)@ÿÿšww!@ÿÿvv@ÿÿ uu@ÿÿ¤tt@ÿÿ§ssû€@ÿÿ«rró€@ÿÿ®qqè€@ÿÿ²ppà€@ÿÿµooÕ€@ÿÿ¹nnÍ€@ÿÿ¼mm€@ÿÿÀllº€@ÿÿÃkk¯€@ÿÿÇjj§€@ÿÿÊii›€@ÿÿÎhh’€@ÿÿÑgg‡€@ÿÿÕffÊT@ÿÿØee|€@ÿÿÜddt€@ÿÿßcci€@ÿÿãbba€@ÿÿæaaV€@ÿÿê``N€@ÿÿí__C€@ÿÿò^^4€@ÿÿö]]±@ÿÿ÷<<¢@ÿÿù::š@ÿÿú77l@ÿÿû,,t@ÿÿý**¹ƒ @ÿÿþvv±ƒ @ÿÿÿuu©ƒ @ÿÿtt¡ƒ @ÿÿssó‚ @ÿÿddÝ‚ @ÿÿcc—ƒ @ÿÿ bbŒƒ @ÿÿ aaé‚ @ÿÿ__Ò‚ @ÿÿ^^o @ÿÿ]]e @ÿÿ\\]ƒ @ÿÿWW[ @ÿÿQ @ÿÿ= @ÿÿ) @ÿÿ @ÿÿ!û€ @ÿÿ$è€ @ÿÿ'Õ€ @ÿÿ*€ @ÿÿ-¯€ @ÿÿ0›€ @ÿÿ3‡€ @ÿÿ6|€ @ÿÿ9i€ @ÿÿ<  V€ @ÿÿ?  Kƒ @ÿÿC  1ƒ @ÿÿGƒ @ÿÿJÓÓx @ÿÿK°°%€ @ÿÿL€ @ÿÿMVV€ @ÿÿNUUÿ @ÿÿOSSô @ÿÿPRRç @ÿÿQQQÜ @ÿÿRPPÒ @ÿÿSNNÈ @ÿÿTMMÁ @ÿÿULLº @ÿÿVKK‚ @ÿÿW44^ @ÿÿX&&1 @ÿÿY& @ÿÿZ*[¦e¦t¦*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦e¦ÄT»¦*[¦e¦t¦z•[¦ÄT–¦z•[¦Šfz•[¦ÄT–¦z•[¦Šf*^ŒÄTð¦*^ŒgE*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*^ŒgE*^ŒgE*^ŒgE*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒgE*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^Œ §ÄT§*^Œ §(f3§3§nED§›*›*nE]§f§p§z§„§%£«§®§%£«§Õ§%£«§û§%£«§!¨%£A¨%£a¨%£€¨%£7Ÿ¨¯¨µ¨¯¨Ï¨¯¨à¨¯¨ñ¨¯¨©©¯¨©E©¯¨©x©¯¨©©¯¨©»©¯¨©Ù©¯¨©õ©¯¨©ª¯¨©1ª¯¨©Oª¯¨©mª¯¨âª©èª¯¨âª©8«âläl77U«l«s«x«}«‚«‡«‹«°l´l7«77žG"‡€fÇŽ&?G‚š,EÐ3LP‚›9R¹ƒqv‚34€lkÙ"{ël]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬æèêìîðòô÷úý<=>?@ABCDEFGIJKLMNOPQRSUnopqt&*.ô Rââøù+8DQ4€]ÚÛÜÝÞßàáâãäçéëíïñóõøûþt€cÜêtƒ":KŠ$=‚–*C_Ý‚ªc]ƒW&3 &¦‹1Jæ‘4M&‚—7PdÏ IJKLMNOPQRSÏM¯€jo~]qv8>Ð8v€%VÚÚááââããççõöøùûü #*+,0789<CDEIPQRx‚°A- a-.^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬É IJKLMNOPQRSÁ LVÜÜëë%2>Ka€aÛè!v¡ƒnsÊTeÝì3vó€qãúó’(A“‚¢ó‚¬d\9ÜPààââããóóøùûü)+,689BDEOQR|€dÜ'@ü“5N\‚œ-Fœ‚£%€[me}\pue‚:S…‚ Eƒ   N®Ž>ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž¢¢££¤¤¥¥¦§©ª«¬®<=>?@ABCDEFGIJKLMNOPQRSÎ@ÐN€_Úæ\tw ÷9É—ƒb€ _aceimuvwyÀ{gÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäää##$$%%&&''(())**++,,--..00112233445566778899::\\\]]]^^^___aaabbbcccdddà€oâ÷i+6;Â"i€b )wé‚«_‰ƒ00112233445566778899::aabbccdd©ƒot:ÑÑÓÓ²:LÒ Nßßññ(5AN€U’€gÞî2x²Œ%>2‚˜+DÒ‚©^{Ï»9»¾ÀÚÛÜÝÞßàáâãäçéëíïñóõøûþûR›€hû€r[|ot»2K;‚™8QdS*,7:<]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬®ÄÈÉÐnopq$. ä{#½Ø€S.GÍ€máô]¶>U^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬         IIJJKKLLMMNNOOPPQQRRSSV€` au]]^^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦¦§§©ª«¬®®ÐÐæèêìîðòô÷úý<=>?@ABCDEFGIJKLMNOPQRSnopqÿ SÞÞïï'4@M€V?ƒ&       ¨ +^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬IJKLMNOPQRSÈnopqèi›]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬®æççèééêëëìííîïïðññòóóôõö÷øùúûüýþÿ<<==>>??@@AABBCCDDEEFFGGIIJJKKLLMMNNOOPPQQRRSSUUnopqH 5CµÈ%MÝÝááââããííõöøùûü&*+,3789?CDELPQR€UUè€pˆˆ#<^‚”)B¨‚¤ƒÐÑ1±<>Q{ns‘‰0Ic‚•6Oq‚ž.G±‚¥1ƒ ±ƒpuš7º KVÛÛéé $1=Jº€kàòz‚ŸUãPC€^ l#½Øl$,.Œƒa•:<¦§®Õ€nbƒÑÓÚÛÜÝÞßàáâãäçéëíïñóöùüÿ^"$&ÓUþ‚®ç Qääþÿ-:FS§€ißððQÙ9¾ÄÆÙNuYƒ¢:>"ƒKƒ   Tii:ÑÑÓÓ=€]^¦§®=y½‚¦®#$%&'()*+,-<=>?@ABCDEF†.Æ9ÀÆÈsäýFzÆ‚§0123456789:IJKLMNOPQRS««’@ÿÿ<ªªz @ÿÿ=§§o @ÿÿ>¤¤h @ÿÿ?¡¡R @ÿÿ@ŸŸ; @ÿÿAžžÛ @ÿÿ A+Ah @1 B+ggû @1 C+ffö @1 D+eeè @1 E+ddØ @1 F+ccÐ @1 G+bbÌ @1 H+aaÆ @1 I+``Á @1 J+__µ @1 K+^^¬ @1 L+]]£ @1 M+\\Ÿ @1 N+[[œ @1 O+ZZ” @1 P+YY @1 Q+XX… @1 R+WW @1 S+VVz @1 T+UUr @1 U+TTc @1 V+SS\ @1 W+RRY @1 X+QQR @1 Y+PPJ @1 Z+OO> @1 [+NN6 @1 \+MM, @1 ]+LL( @1 ^+KK @1 _+JJ @1 `+II @1 a+HH  @1 b+GG @1 c+FFü @1 d+EEñ @1 e+DDí @1 f+CCç @1 g+BBàM @ÿÿi+ee°O @ÿÿj+¤O @ÿÿk+O @ÿÿm+KO @ÿÿp+ÇN @ÿÿu+¸N @ÿÿw+ÿÿ¢N @ÿÿx+__`N @ÿÿ{+UUN @ÿÿ+66 N @ÿÿ‚+44N @ÿÿƒ+--ùM @ÿÿ„+,,ºM @ÿÿ‡+­M @ÿÿˆ+M @ÿÿ‰+ŠM @ÿÿŠ+wM @ÿÿ‹+]M @ÿÿŒ+  WM @ÿÿ+  OM @ÿÿŽ+  EM @ÿÿ+  1M @ÿÿ+ M @ÿÿ‘+ÀÀòL @ÿÿ’+šš‹L @ÿÿ”+ÀÀL @ÿÿ•+¾¾vL @ÿÿ–+½½lL @ÿÿ—+ººcL @ÿÿ˜+¸¸\L @ÿÿ™+¶¶RL @ÿÿš+´´KL @ÿÿ›+±±CL @ÿÿœ+¯¯ÑK @ÿÿ +‘‘ÁK @ÿÿ¢+††§K @ÿÿ£+‚‚À4 @ÿÿ¤+ll·4 @ÿÿ¥+ee4 @ÿÿ¦+aa¡4 @ÿÿ§+ZZ4 @ÿÿ¨+XX4 @ÿÿ©+WW÷3 @ÿÿ«+  ï3 @ÿÿ­+®3 @ÿÿ¯+Ÿ3 @ÿÿ°+  ¶ @ÿÿ±+ @ÿÿ²+ÑÑá @ÿÿ³+ÐÐ @ÿÿ´+ÏÏË @ÿÿµ+ÁÁ» @ÿÿ¶+¼¼³ @ÿÿ·+´´ @ÿÿ¸+û @ÿÿ¹+ö @ÿÿº+ŽŽè @ÿÿ»+Ø @ÿÿ¼+ŒŒÐ @ÿÿ½+‹‹Ì @ÿÿ¾+ŠŠÆ @ÿÿ¿+‰‰Á @ÿÿÀ+ˆˆµ @ÿÿÁ+‡‡¬ @ÿÿÂ+††£ @ÿÿÃ+……Ÿ @ÿÿÄ+„„œ @ÿÿÅ+ƒƒ” @ÿÿÆ+‚‚ @ÿÿÇ+… @ÿÿÈ+€€ @ÿÿÉ+z @ÿÿÊ+~~r @ÿÿË+}}c @ÿÿÌ+||\ @ÿÿÍ+{{Y @ÿÿÎ+zzR @ÿÿÏ+yyJ @ÿÿÐ+xx> @ÿÿÑ+ww6 @ÿÿÒ+vv, @ÿÿÓ+uu( @ÿÿÔ+tt @ÿÿÕ+ss @ÿÿÖ+rr @ÿÿ×+qq  @ÿÿØ+pp @ÿÿÙ+ooü @ÿÿÚ+nnñ @ÿÿÛ+mmí @ÿÿÜ+llç @ÿÿÝ+kkÏ @ÿÿÞ+>>¹ @ÿÿß+99£ @ÿÿà+88 @ÿÿá+77{ @ÿÿâ+66e @ÿÿã+55S @ÿÿä+44= @ÿÿå+330 @ÿÿæ+00) @ÿÿç+-- @ÿÿè+** @ÿÿé+'' @ÿÿê+$$#$%23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW*7mQmlmƒmšmÎmÛmñmƒm,µH-nƒm7nFnTn*dn**nE*nEHln~n‰n›n»nÒnÒnÒnÒnÒn»n»n»n»néndnönû*üno*û·.o*nE*nE*9oAo*9oAoKoXoû·T.oÎmaoholopotoxo|o€o„oˆoŒoo”o˜oœo o¤o¨o¬o°o´o¸o¼oÀoÄoÈoÌoÐoÔoØoÜoàoäoèoìoðoÀlôoøoüopp#p7'p7,p3p77p=pBpHp7QpVp_pjpopspéqñqpõqñqr¼l CrÝrBpãrórss!s C2s7sJs\s_scs¥shoºl©s­s°s³s©szG¶sttt"tplt‰tŽt C•t¤t«t´t¨)¹tÇtÉtÌtÒtÁ+ C Cdn C C Cholopotoxo|o€o„oˆoŒoo”o˜oœo o¤o¨o¬o°o´o¸o¼oÀoÄoÈoÌoÐoÔoØoÜoàoäoèoìoðoÀlôoøo7âtðtþt uu&u2u C C@uIu C Ç4^lmo‹ Œ ÇNpñ PêGO¾ÁÃÇGR¢Ðb‹3 ¹9$vo9M Gum—Ç‚6ÎÊ899:;;<<>rsxyz„„……Š‹‘’——œœ±²·¸½½ÂÂÇÇÌÍÒ×Üáââçìíîïôùþ     %*++01277<<==BGHHMNNSXY^_``eejjoottyy~~ƒƒˆˆ’’——œ¡¡¦¦§§¨¨ë„ @ÿÿddä„ @ÿÿ``Ï„ @ÿÿWWÈ„ @ÿÿSS³„ @ÿÿJJ¬„ @ÿÿFFÕ„ @ÿÿgg¹„ @ÿÿZZ„ @ÿÿ MMm„ @ÿÿ kXkX**û*û*7777$wG#ˆ( /<0 :@x„$È„S¹„QZ*Â)4 ##/»<> 37³„Jë„dTHHUUbbD$Œ„%¬„Fä„`% 5>m„„DMÕ„^gFž"&*;ö.0„%Ï„W$ Dÿÿ°ˆ Dÿÿ‰ Dÿÿ  e‡@ÿÿ!!ˉ@ÿÿ‰@ÿÿ¹‰@ÿÿÒ‰ @ šˆ @ÿÿ1 šˆ@ÿÿ¦ˆ@ÿÿˆ@ÿÿýýå‰ @ üü„ˆ @ÿÿ1üü„ˆ@ÿÿûûzˆ@ÿÿ"ùùø‰ @%øønˆ @ÿÿ1'øønˆ@ÿÿ+÷÷bˆ@ÿÿ2õõYˆ@ÿÿ8ôô Š @<òòCˆ @ÿÿ1>òòCˆ@ÿÿCññOˆ@ÿÿFððŠ @Jîî-ˆ @ÿÿ1Lîî-ˆ@ÿÿQíí9ˆ@ÿÿTììˆ@ÿÿXààï‡@ÿÿ[ßßÚ‡@ÿÿ^ÛÛ·@ÿÿaÚÚć@ÿÿdÙÙ¨‡@ÿÿh××·‡@ÿÿkÖÖ’‡@ÿÿoÔÔž‡@ÿÿrÓÓ1Š @'vÑÑ~‡ @ÿÿ1xÑÑ~‡@ÿÿ}ÐЉ‡@ÿÿ€ÏÏr‡@ÿÿ„ÎÎk‡@ÿÿ†ÊÊY‡@ÿÿ‰ÅÅO‡@ÿÿŒÄÄG‡@ÿÿÃÃ>‡@ÿÿ’ÁÁCŠ @1•ÀÀ3‡ @ÿÿ1—ÀÀ3‡@ÿÿ›¿¿*‡@ÿÿž½½UŠ @5¡¼¼‡ @ÿÿ1£¼¼‡@ÿÿ§»» ‡@ÿÿ®¹¹‡@ÿÿ´¸¸ä†@ÿÿ¸¶¶ó†@ÿÿ»µµÎ†@ÿÿ¿³³Ú†@ÿÿ²²´†@ÿÿư°®†@ÿÿȯ¯gŠ @@Ì­­š† @ÿÿ1Î ­­š†@ÿÿÓ ¬¬¥†@ÿÿÖ ««yŠ @DÚ ©©w† @ÿÿ1Ü ©©w†@ÿÿá §§†@ÿÿä ¥¥†@ÿÿê ¡¡ø…@ÿÿí   Ø…@ÿÿð ŸŸµ…@ÿÿó žž'†@ÿÿõ ››†@ÿÿ÷ ——å…@ÿÿù ““Ã…@ÿÿû ]… @ÿÿûv€ŠŠ@0Oüww•Š@0Oýxx Š@0Oþyy¬Š@0Oÿzz¸Š@0O{{Ê@0O||ÏŠ@0O}}ÛŠ@0O~~çŠ@0OI… @ÿÿ^^±‰ @ÿÿˆ @ÿÿ  0† @ÿÿœœ† @ÿÿ ˜˜ï… @ÿÿ ””Î… @ÿÿ ¦… @ÿÿ ‡‡Q… @ÿÿ 8… @ÿÿ__.… @ÿÿ &04?CPQRSTUVWXHnE´­kX*?E«‰¿­×­7%M?ElŠ2M¿­¬D*¿­¹¬D* ŠÚ†?E«‰$‰7%M?ElŠ2M:‰D* ŠÚ†?E«‰$‰7%M?ElŠ2M:‰Á+lŠ2MÞ‘þ­ÄT ®Á+lŠ2MÞ‘þ­W®?E«‰®§®7%M?ElŠ2M®Ë®D*®ô®?E«‰¯¯7%M?ElŠ2Mþ­6¯D*þ­]¯*-­k¯‚¯*-­5­™+˜¯ ­™+-­5­™+-­5­?E-­¿­=­V­¿­¹¬?E-­¿­=­V­¿­¹¬?EòŽ¿­ª¯7%M?E3+R¿­[­Ô(¿­¹¬pXί௠­HnEò¯-­5­ò¯-­5­ò¯ý¯°Ô(?ŸAo?EòŽ¡7%M?E3+R´Ô(?ŸAo?EòŽ¡7%M?E3+R´Á+3°î“þ­ÄT*°Á+3+Rî“þ­o°?E-­®¡°V­®ô®?E-­®¡°V­®ô®pX·°É°dÛ°nE?EòŽ®ã°7%M?E3+R®±Ô(®ô®?Eòޝ*±7%M?E3+Rþ­I±Ô(þ­]¯?Em±?Ÿ+R‚±±?Eº±°?Eʱ°?Eç±SE;jnEö±nEö±nEN*nE*********kXý±7 ²²)²8²H²777£Gcdž°ÎG‡ÈýùÇ9ˆ칉ÂNÍÿB†ŸÂ‰k%m&ë“—›¥¯²ÎkCEë ¼Àøük‡Ê!´ ©­¼½½ÀÁÁÑ´†°]…v¥§©²³µ¶¸¹ÄÅÓÔÖ×ÙÚßàìíîôõ…&3lnp¦…‡¦ˆO‡ÄOˆð8…]_Ø…“Ÿø…— 8†žÁ"a-¹õ†¥* bhãå*‡½Ó" MQó†µ3‡¿À<¸¹ôõœÑ ¹% OXÎÎÏÐÑÓÔÖ×ÙÚÛÛE! ©­¼ÀÑîòøü……|å…“”¥†«e‡È!Î"+®©­ÑîòNßà ¡§©¬­³¶»¼¿ÀÐÑÔ×íîñò÷øûünA îòøùùüýý.…n…yÎ…®†¯Î†²³Î‡Únˆ÷øw+?*w†¥§©·‡Ö€D¡©­¼½ÀÁÑîòøùüý`…wÀ†°Î‡¸iI…^¯‰†¥§³¶¸¹ÄÅÔ×ÙÚßàìíôõ ‡¹‰‡Ï2 ÃÛr‡Î’‡ÓÔ»VXÛ#½Áùý†›¡û‡àd:468“—›žŸ ¡¥§«¬¯°²³µ¶¸¹»½¿ÁÃÄÅÈÊÎÏÐÓÔÖ×ÙÚÛìíðñôõ÷ùûý!¤“—›Ä 䆵¶Ä‡Ù„ˆûüÍdf¡¡§¬¸¸¹¹»¿Ðäíñôôõõ÷û…}†©î-ˆìíî–žŸ ¡¶Ô×ß¶§©¬­»¼¿Àíîñò÷øûüöHJ¶>¹õv…z4¡¡¥§§©«¬¬­°°²³³µ¶¸¸¹¹»¿ÎÎÏÐÐÑÓÔÖ×àìííîðññòôôõõ÷û‡»¼ˆ+ ¨ ¹õ(+È! IV«¬­°°²³µ¶ÃÃÄÅðñò¨‡Ö׈àq6Q…u†˜±‰zg§¬¸¹»¿Ðíñôõ÷ûš†«¬­Ú†²Ú‡Ûzˆùšˆ##*,.Ifc+C ¥«²µÏÓÖìðÃ…c†¡Cˆðñòl5•…~µ…ž‡¹Þ¦žUþ.§³»¿~…{>‡Á~‡ÏÐÑž‡Óˆè g…x'†›œ0 TZ0†œp†¡ ¡¸½ÁÐôõùý›¸¹ôõY!©­ÑîòYAííññôôõõ÷÷ûûq¸¹ôõY† Y‡ÅYˆôâ‡ßbˆõ ‹B¡¡§§¬¬¸¸»»¿¿ÐÐˉTT+½Áùý”†©«¬­²³µ¶ÃÏÐÑÓÔÖ×ÛîðñòˆའÄÅÙÚF+†—˜ï…”ï‡ß—˜ï…”ï‡ß‰ @@ÿÿ58ÿˆ @@ÿÿ-3ðˆ @ÿÿ ?E Š2My¬¬D*y¬¹¬7w Ï  (-5Oˆ$ÿˆ -‰(5€D(*57ðˆÍ(5i%# "#%/02;-##0YA(*57žî(5šˆ7¦ˆ1 Ó"/c%2;» (-5Cˆ*Ä”† $(*-157¬‰ @@ÿÿ„‡¢‰ @@ÿÿ€ƒ›‰ @@ÿÿ |…‰ @@ÿÿ x{‘‰ @@ÿÿqwu‰ @@ÿÿlo~‰ @@ÿÿdjg‰ @@ÿÿ_bo‰ @@ÿÿW]^‰ @@ÿÿ#SVP‰ @ÿÿ$ ­­ ­ ­-­5­ ­-­5­?E-­y¬=­V­y¬¹¬?E-­y¬=­V­y¬¹¬?E?Ÿ+Ry¬[­Ô(y¬¹¬pX„­’­ ­75w džSUG‡P·‡ug‰!)W_€D)+_aÀ†SUP‰i‰†68BDFHJLlnxz|~€‚Y‡L‰‡[r‡U’‡n¢‰J€»!).6;BFJNNSSW_dlqx|€„„‹B)+_a›‰F|Ä”†!%)+.268;?BDNPW[_adhlnquxz„†´†ä†Dć~Í)_%##$&013=>@YZ\fgistv-#$1>Zgt]… .6;BFJdlqx|€¥†%u‰.6dl…‰;BqxÞ(5^kžî)6B_lxΆ8~‡až‡h·‚^‰S~‰.dÏ !).6;BFJNSW_dlqx|€„O‡Ho‰!W¨‡z‘‰;qš†+Ú†2Ú‡† Ó#0=Yfsc&3@\ivC!.;Wdqó†?¬‰N„pd @ÿÿvŒ @ÿÿiŒ @ÿÿed @ÿÿXd @ÿÿ!Z @ÿÿ÷Y @ÿÿIŒ @ÿÿ¶¶¶‰tŽt¶"¶7Ç4ÿBC÷Y OŒD XdpdQ4 !Z edIŒiŒö f4vŒëi[Œ­­²²³³´´¹¹¾¾ÃÃÈÈÉÉÎÏÏÔÕÕÚÛÛÜÜáââçèèíîîïïôõõúÿ    !!&&++00116778=>L˜ª)FN-O„‡²‚Oåëï‚P’“¦¹‚V : B E \ ] d d m o o p ké#B\gnw‚¢¼Ø 8ñ.8kM óëM"ÑÖëNtuwÆÈÉèíîñrÈÏåìôM$?tQ˜¢§]è"Afm¡»×7ð-7]  ]4;]M äÝNpv&3› ž ¨ ² » ï  < = @ G k y ” &P2Zjkpq‡‰‰¬¬¯·DÜÝö÷÷÷ùùúüüþþ&34P]]_cËÌÎÏÏÏÑÑÒãêì¦TD S \ k 7  …wãæéëðtˆœŸ¦ ÑxxOõ3QÞøRÂCT? Z i o s v z | Ir. O „‡ˆ‘“¤§¨®°²³áÄÐá3aOÌÏJOx0 Ê3JN<<ABSÊS¦ÊT{ S4]_ÓV > d g m o p { } ~ <æç¼L0®°Ž³ÀÁFo. …W€4 M³_…NPQUW§ îO2wé#<Bgn‚¢¼Ø 8ñ.8÷‚‡‡§¨÷3 %(N˜ª)8FnyÐù÷K’¢7wMÌ Ù÷P°¶÷Q<âí +HN`¨´ÏÕÜâèïõ 7wR±·÷Rí ÷T— ™ À4X^kl@O¾ÁÂÇÇÈÀP¢¥¨ÀSœÀUí E )-©öø}‡›³Áؾ¾ÂÃZ[\™µ©PŸ´ÄÄ©Q/8rxб·ÌÒ×Üáçìíôùþ %*0BGMSX^œÎÔÚáçíôúÿ 6=©Uæ ²3  2N::AR²Nf2R…=É1›LÁÄN56Uš ð H W¨ dS*^ÚíÍþÿZÍUü S VTP¿üý¿3 L¡ªº»P:=?CQóö÷þÿMz{|}ˆ‰  ‘SMzU~1 z §H O O U U ` w £ © úK”•••––æëëëíîïÖÙÛúO3zQ™¡¦µ¾¿CL¯ãÃMCS,Lu/ ¬]†2 ¬TG \ _ k µ^‡2 žRÇHçBk. çQ ;…=§³ÉÛî1çVˆ pV: Y4®= YQz0 ÙÄÅÎÏ~‡„ФªÚàóù!_`ak˜ÙT—  • ÙV^ f "àá¢K~`˜§»Å"MØ·÷`Ï¢N]_æ"Rsz‹’²¸Íî 2Y_"V ‹LÀ ð”Y‚1 RrxŠ0ýSÔÚýT — › › ž Ÿ   ¡ ¢ £ ¤ ¨ © ª « ¬ ­ ­ ® ² ³ ´ µ ¶ · » » á   ; ” • Æ`‰3 FQZ[¾ ÆUø O o¤E d ¡ « õ L © /áãÄWfwñï3“ü¯P ÈÉ×ÙÜáoS%*ïSÎ/Túÿ/U ­ ¸NjÿrÈÏåì¸Q88Tÿ¸V = { } ~  ƒ „ ‰ Œ $Á9Á_ˆ2 A/UÁK†·L¾ÁP:=>BSîï§³SBGAU¡ « ­ ª «Ÿ ¡ © « ³ ê B ¨ j3£ © *47*L¥¦¨¨¶¸*MñÝê *N 6:;<=AACC*P [^ejÕ×ÙÛÛàjPÁÂÃÉÊ˪V < m o p q u v ‰ ‹ ³³´æ-c³@ɳP¡¤´½\R{0 œZƒ2 œõö47;@LW·|\9ÁÉ\L¶\T¬ÀÆe5&q‰ eOÚÞøåO13:=y´Ä¥P ”¶¶¶···ÀÁeR¬ŽðòéKŽNQgíñÎO2PBEHTáUš ó ú  J Q Y NU± —LÀÁÁWM é뜟 ×NptQWR§Tçí—T ? z z z { | ƒ ƒ ƒ „ „ àKŽ‘•àM!eR¼Þ  `NNPU PVijopvyy Qÿ$àVo } ' 445‰4CÉMpv‰OçéÉQ9:y‘ï 1¾ 8>IT Hq. RPy0 RŸp ð ó ú    H J Q W Y • — ¬ ­ ’ª¶ Ò3RL´­°°_c’M²¸ÒM)***,p&0RS¼½ PCERQ_`ÒT„ { 6!ñ ¥æ ~ ‡ ûf4 ; žD S T \ k u í ï ø E G O » ¸¹º¼0-Jp ;48»K‚{OÛÞâåçéî»O"%wÉ„§É@ o ­ D9=CfÄLH‘ÄO2ÄV > \ ^ ^ _ ` c f f g h m5­£ íCl m4>­M­RÌÒ×6Mv/ öeŽ4 6ž„ˆ¤¨¶ûýÿ h”¤!$)U„ŽNg‘twvL½ÁJs/ Ÿ[„2 _¡Ê_ÁÉŸ3 ZÎL¤§¨ßLwŸOõøßO "%&*VX[wyŸP“³ÀÛŸT @ i s v w { ~ „ ‡ ŸV; y ƒ „ (Kt/ èd4 h¡>ã ü þ   @ S U W ˆ èLc¨N egmtw®°³ÆÈÉè(O„‡Š‘¤§ª²óöùühUà ñDmˆ 1M1O¾ÁÏ1QLMNz‚ 1SþÚLfå&MÁùaÑZOÌÏZP…‡CtŒÏÜ_```aactˆ¿ËÝßìÚP¨ÄÅ£8lrÎ÷ýcS|0 £\…2 cL¸ãP¬¶#Q ,034#TôãUþ U ÌaŠ3 ÌLK‘ N4:;<=BDÌP£§ÅLQ\e~‰ŒŽ‘¡ÄËT_`¾¿Øßà   •K {‚¶·wxxy|~ÕLWP]N 446:;<=BD>Nw1 þAÉDDIINOOTTYY^^cchhmmssyzz‹‹‘’’²²¸¸ÍÍîîï   122YY__¾ 8>~ ‡ þ30v“ þ þK•þL›‡ÜËþP±¹»ÀÙ~T. „ ÏX1 4NX¿{  SôV V: k u v ùM,·ÎÏyUà ê í ùU W ÂNjmÿBP…tˆ«8´Lç4NK}[~Ž‘™¦µºÄËT¾Øà    MSùþæ36f4 =]efhm u { ƒ æKfM "fTêÏ=>ÏK †‡68<=eeeOM  w㦠ÏM8ØcŒ3 Ø3X4:ØKŽ‘–ØM Iëðñö÷ ¥ ØOsz‹’²¸Íî 2Y_¡ « ­ d n u | ƒ XQ–k089<>DINOTY^chmrsxyz„Š‹‘’—œ¢§¬±²·¸½ÂÇÌÍÒ×Üáâçìíîïôùþ    %*+0127<BGHMNSXY^_`ejoty~ƒˆ’—œ¡¦§¨­²³´¹¾ÃÈÎÏÔÕÚÜáâçèíïôõúÿ   !&+0678=>CHPVØQ9¡4OTYZuxy!O„‡‰‘•¤§©­®°²Ž³óöø¡SS 6=ŠM'ŠNPRRSSUüEn. / ü3%(),E3EŸß EM ÅR×®3 &™š›œÈ q ®Løî.Pbfs·4W]de7L §gޤ®°±²·ÉË·Tp § ¬ €ïð€Q«¯¹ €RÂǦ²¹iQ†eíéRì rT}1 òLš‰ÝÌrNOOòNu¤§îrP‘ÂÊÍÛAÛKŽ‘–¤Mýk¤OZ_g Gp. MÀü RO  ¢ £ ¤ ª ¬ ® ´ µ ¶ · q  T*? D D D E G L L L L M M M M N N O P R S T \ \ ] ^ _ d i k k k k l l l l m m m m s u Uà å è –7–N\]PMVŽÁÛV1 4ADE\`afmMúHçêìøQ49>@ÑKŒŽ‘¥QP…ÐÕEôû  ÑP¤´½ÈÑRÜáçìQSºM:QNuu~‚†ºRÒg4 ƒUà lLºìP¯°°lTõü õÈ8¢§¬·CHõ3u4AuO‘ÚÞàïøae¢Å089:;;<DIOTY^chmssyzz„……‹‹‘’’—œ²²·¸¸½ÂÇÍÍâîîï    +1227<==HNYY__`ejoty~ƒˆ’—¡¦§¨­²³´¹¾¾ÃÈÉÉÏÕÛÛÜâèîîïõ  !&+01178>VÝæê uT' ƒ „ ^Q‹ÞRáGM§K‚ˆ§§Léî'Sù000L¥¼ÁÂÃÉÊËå‘¡¢ÄÅtuwx††Ž°O®±²°SX^°TT u *L¡¥¥¦¦§N44™Qñ ™T? Y ] ] ^ ™Uã å è âNpbP޼âS¹ËÀÁ-KL±‰¯÷`ÏKOÌT¾à ËV> ] ` c { } } ~ Tè"Afm¡»×7ð-7TN==CDSÔS²TV  ‘ = 303:=ö M =N;;CR=V Qóö¤Ü  RDINTY^chmH ` w ~ ‡ Ÿ © ³ v „ $ DÿÿV3@ÿÿ,,K3@ÿÿ++>3@ÿÿ((a3 @ÿÿ 55E3 @ÿÿ ))+3 @ÿÿ ''&3 @ÿÿ @ÿÿ?EGESE?E\EgEN*nErE³EµE·E7 C7w+G2:w3B3Ea3;a335;=j33355;;==k0I+3&'K3+{3CDd(CE´5l33355;;==Í35;=5E3)–,NE®5†+,î+,&3 >3()V3,n35†3Dw Dÿÿ::Ø Dÿÿ••¨. @ÿÿÓÓi.@ÿÿÌÌ×, @ÿÿ»Ó×,@ÿÿ¥¥F/@0¼¼g/@0½½‹/@0¾¾±/@0¿¿Ó/@0ÀÀñ/@ ÁÆ0@0 ÂÂK0@0 ÃÃ}0@0  Äİ0@0  ÅÅä0@0 ÆÆ1@0 ÇÇ)1@0 ÈÈL1@0ÉÉx1@0ÊÊ£1@0ËËÎ1@0ÌÌì1@0ÍÍ2@0ÎÎ32@0ÏÏR2@0ÐÐq2@0ÑÑ2@0ÒÒ©- @ÿÿ¶¶£- @ÿÿ¶¶}- @ÿÿ²¶µ2@0³³É2@0´´Ü2@0µµa- @ÿÿ¯¯Q- @ÿÿ¯¯/- @ÿÿ«¯ð2@0%­­ 3@0% ®® -@ÿÿ ©©- @ÿÿ!¨¨- @ÿÿ"§§î,@ÿÿ"¦¦» @ÿÿ#% @ÿÿ$ @ÿÿ%î @ÿÿ&þþæ @ÿÿ'ùù• @ÿÿ(ÝÝŽ @ÿÿ)ÜÜa @ÿÿ*ÑÑE @ÿÿ+¿¿+ @ÿÿ,¶¶5/ @ÿÿ.õõ/ @ÿÿ0êêþ. Dÿÿ1ääÏ. Dÿÿ2ÞÞ±- @ÿÿ3ÔÔk- @ÿÿ4··+ @ÿÿAŸŸ¡* @ÿÿLœœo, @ÿÿY˜˜>, @ÿÿe””?* @ÿÿqâ) @ÿÿ}) @ÿÿ‰ŠŠ8) @ÿÿ™‡‡ã( @ÿÿ§„„Ž( @ÿÿ´9( @ÿÿ¾~~£, @ÿÿÅ{{ä' @ÿÿÍxx‹' @ÿÿÚuu.' @ÿÿårrÎ& @ÿÿónnk& @ÿÿÿjj& @ÿÿ gg½% @ÿÿddj% @ÿÿ'aa% @ÿÿ5^^Ä$ @ÿÿB[[q$ @ÿÿLXX­+ @ÿÿRUU$ @ÿÿZRR}+ Dÿÿ[PPh+ @ÿÿ]OOT+ @ÿÿ_NN1+ @ÿÿaMMÒ* @ÿÿlBBs* @ÿÿu??* @ÿÿ<<¹) @ÿÿŠ99d) @ÿÿ•66) @ÿÿ¤33º( @ÿÿ±00e( @ÿÿ¼--( @ÿÿÅ**»' @ÿÿÌ''^' @ÿÿ×##' @ÿÿà  ž& @ÿÿì;& @ÿÿöè% @ÿÿ•% @ÿÿ B% @ÿÿï$ @ÿÿ(œ$ @ÿÿ3  I$ @ÿÿ<Û# @ÿÿCl# @ÿÿHèè># @ÿÿRØØã" @ÿÿZÈÈ®" @ÿÿc½½ˆ" @ÿÿp²²b" @ÿÿ{§§-" @ÿÿ„œœø! @ÿÿ‘‘‘Ã! @ÿÿœ††Ž! @ÿÿ¥{{Y! @ÿÿ¬ppë @ÿÿ±eeá @ÿÿ²^^Ù @ÿÿ³ZZÏ @ÿÿ´UU¹ @ÿÿµ==¥ @ÿÿ¶99† @ÿÿ·33u @ÿÿ¹++k @ÿÿº##N @ÿÿ»@ @ÿÿ¼0 @ÿÿ½ @ÿÿ¾  ö @ÿÿ¿Õ @ÿÿÀöö| @ÿÿÁÞÞN @ÿÿÂÓÓ3 @ÿÿÃÁÁ @ÿÿÄ··  @ÿÿű±È @ÿÿǧ§å @ÿÿÈ——· @ÿÿÉŒŒ @ÿÿÊ€ @ÿÿËzzN @ÿÿÍoo+ @ÿÿÎffð @ÿÿÏ``¤ @ÿÿÑPPh @ÿÿÓBBC @ÿÿÕ;; @ÿÿ×11Þ @ÿÿØ((Ë @ÿÿÙ$$· @ÿÿÚ!!— @ÿÿÛv @ÿÿÜ  i @ÿÿÝN @ÿÿÞùù4 Dÿÿßññ+ @ÿÿàéé" @ÿÿáßß @ÿÿâÕÕÓ @ÿÿãÎλ @ÿÿä¿¿¬ @ÿÿåµµ @ÿÿ磣— @ÿÿ颢g @ÿÿëžžv @ÿÿíÁ @ÿÿî{ @ÿÿïd @ÿÿð      !"&'÷)***&*9*Ô(D*N*N*T***N*N*N*‚*N*Š*›*²*²*È*Ù*ë*û*û*û* +%+>+M+\+y+™+¤+¬+**û*û*·+·+Á+È+Ñ+7é7777Ó+",,,6,F,U,^,c,k,r,z,,‰,,",,,6,F,U,^,c,k,r,z,Ø,x-„-",,,’-F,U,^,c,k,r,z,-x-„-",,,’-U,^,c,k,r,z,=.x-„-",,,6,’-Ë.U,^,c,k,Ü.x-„-",,,6, /(///7/U,^,>/x-„-",,,6, /(/U,^,c,k,‚/x-„-",,,6,U,^,c,k,r,z,,‰,Ô/Ü/ã/x-„-",,,6,U,^,c,k,r,z,,‰,.0x-„-",,,6,F,U,^,c,k,r,z,r0x-„-",,,6,U,^,c,k,¯0x-„-",,,U,^,ç0x-„-",,,6,U,^,Ó+",,,6,F,U,^,c,k,r,z,,‰,,",,,6,F,U,^,c,k,r,z,1x-„-",,,’-Ë.F,U,^,c,k,r,z,=.x-„-",,,6,’-Ë.U,^,c,k,Ü.x-„-",,,6, /(///7/U,^,>/x-„-",,,6, /(/U,^,c,k,‚/x-„-",,,6,U,^,c,k,r,z,,‰,Ô/Ü/ã/x-„-",,,6,U,^,c,k,r,z,,‰,.0x-„-",,,6,F,U,^,c,k,r,z,r0x-„-",,,6,U,^,c,k,»1x-",,,U,^,ç0x-„-",,,6,U,^,77ó17ó17ó12",,,U,^,c,k,r,z,,‰,d2",,,U,^,c,k,r,z,¿2x-„-",,,’-U,^,c,k,#3x-„-",,, /(///7/U,^,}3x-„-",,, /(/U,^,c,k,×3x-„-",,,U,^,c,k,r,z,,‰,Ô/Ü/A4x-„-",,,U,^,c,k,r,z,,‰,£4x-„-",,,U,^,c,k,r,z,5x-„-",,,U,^,c,k,S5x-„-",,,U,^,5",,,U,^,c,k,r,z,,‰,ÿ5",,,U,^,c,k,r,z,Y6x-„-",,,’-U,^,c,k,r,z,Â6x-„-",,,’-U,^,c,k,%7x-„-",,, /(///7/U,^,~7x-„-",,, /(/U,^,c,k,×7x-„-",,,U,^,c,k,r,z,,‰,Ô/Ü/@8x-„-",,,U,^,c,k,r,z,,‰,¡8x-„-",,,U,^,c,k,r,z,þ8x-„-",,,U,^,c,k,O9x-„-",,,U,^,˜9x-,,U,J;O;x-,,’-U,^,c,k,r,z,a<x-,,’-U,^,c,k,h=x-,, /(///7/U,^,é=x-,, /(/U,^,c,k,r,z,,‰,€>x-,, /(/U,^,c,k,r,z, ?x-,, /(/U,^,c,k,?x-,,U,^,c,k,r,z,,‰,Ô/Ü/$@x-,,U,^,c,k,r,z,,‰,°@x-,,U,^,c,k,r,z,1Ax-,,U,^,c,k,§Ax-,,U,^,BB#B+B@B7TBÑ+77jB777777777pBC C C C7CÂCËC7ÐCìC7ìCùCìC«DÆD CÌDàD77èD#B777ðD77èDEEEE!E5EEGLNSUY[`b./ab‡ˆ‘–˜ù349;>EGLNSUY[`b./ab‡ˆ‘–˜ù349;>EGLNSUY[`b./ab‡ˆ!€ƒG!€ƒG!€ƒG)333,ùùù.ÆÆÆ'''˜# èíïèíïèíïa ùUSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š aÏÑÏÑÏÑá ]^]^]^a-¯¯¯á.áááJ-4-4-4ÊOOOOOOJfffÓ!’ËÛÉßìø2HUa’ËÛÉßìø2HUa’ËÛÉßìø2HUaÓ ÅÈÊÎÅÈÊÎÅÈÊÎS"œœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Žœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Žœ¡§¬²·½Âúûüý679:fhjry€†“•—Ÿ¦­³º   1245deghŠ‹Ž< ííííííííííííEGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€‚†‹‘–˜§¬®²·¹Øßâã÷øùûüÿ   !#$-.0134?@BCßáäëíòôùûÿ !&(,.359;>EGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€‚†‹‘–˜§¬®²·¹Øßâã÷øùûüÿ   !#$-.0134?@BCßáäëíòôùûÿ !&(,.359;>EGLNSUY[`b)+.7:;@CDMPQY\]fijqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ .ÅÅÅîOOOîþžþžþžî,¦¨¦¨¦¨wލ7Møލ7Møލ7Mø÷ ,-8,-8,-8w moomoomooÀ „„„@ ©-¶¶¶²DGDGDG2 113113113² „„„$ N÷RN÷RN÷R.ÇÇÇ›.ÒÒÒ5••dµÊµÊµÊ¤ IKNPIKNPIKNPä' (öx(öx(öxd)666$.ÈÈÈÍ´­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ­¯¶^hs~‰”ŸªµÀÍÝëëëël™žžÐý*W„±îWƒ”–ž¥¬°²´»½ÅÇÏÖÝáãåìîDGsv ¡£¡£¡£) 71Š71Š71Š.ÐÐÐVW]io{W]io{W]io{Ö#íïíïíïV.ËËË!¯pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ pu{€†‹‘–œ¡§¬²·ÈÏØßö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†ÀÂÄÎ×äðý#)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ ?* =7=7=7.ÎÎΈ¨ø(çí¨ø(çí¨ø(çíˆlãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šãåÑáÂÄÐÙæòÿ#+-9BO[hqx…Œ9=Alp’–šZvZvZvÈ £¥§£¥§£¥§ ˆ"²ü²ü²ü‘ èèêèèêèèê!ýejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíõö÷øùúûüýþÿ   '(*+-.0134679:<=NPRZahnu{}‡Ž•›¥¬²´¶¾ÅÌÒÙßáãëòùÿ &,39;=ELSY`fhjry€†“•—Ÿ¦­³ºÀÂÄÎ×äðý#)+-7@MYfqx…Œö÷ùúüýÿ    "#%&()+,./1245789;<=?@ARSUVXY[\^_abdeghjklnopxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™š#ØÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜ššÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜ššÈÓØãþÿ<==ÀÂÄÅÒÛè #)+-.;DQqsxz…Œ79;==?AAjlnp’”––˜šš$    !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ     !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ     !#$'(*+-.0134679:<=?@BCNR{²¶ßã 9=fj“—ÀÄ)-’–ÃÇö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ Ñ,9=Alp’–š9=Alp’–š9=Alp’–š-¨®¨®¨®Q-¯¯¯º(000CD79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š 79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š 79;DPY`gt†”¤«½ÄËØêñø%2DKR_qxŒž¥¬¹ÍÖãü"6?Lepw~‹¤«ºÎÕÜë #&),/2589<=@ADGSVY\_behklopsvy|‚…ˆ‹Ž‘’•–™š Ã!†ø†ø†ø$\   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜   '(*+-.0134679:<=Npw²ÔÛß .59[bfˆ“µ¼Àô%)]j‡Žö÷üýÿ   "%(+.147;?RX[^adgjnx{~„‡Š”˜Ã-¼Ä¼Ä¼ÄC.ÊÊÊl<¼ÆÛæ<¼ÆÛæ<¼ÆÛæ,$ÒâÑÚçó:CP\iÒâÑÚçó:CP\iÒâÑÚçó:CP\i¬ ±³µ±³µ±³µl#èèèuãããu ')+')+')+5! fq|‡’¨³¾ÉÙé5#´ÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽÑÒÓáâãÂÅÐÑÒÙÚÛæçèòóôÿ #%+.9:;BCDOPQ[\]hijqsxz…‡ŒŽ5/ôõôõôõ^./././Þ ÛáçÛáçÛáçÞ!'(,ƒ„Ž–œ´'(,ƒ„Ž–œ´'(,ƒ„Ž–œ´13;o§ù13;o§ù13;o§ùžêìíñêìíñêìíñ"E‘–ù349;=ELSY`./ab‡ˆ‘–ù349;=ELSY`./ab‡ˆ‘–ù349;=ELSY`./ab‡ˆž&^'###ž+¨P\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßP\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßP\cj}‰—§®´ÀÇÎáíôû!(;GNUht{‚•¡¨¯ÂÒÛè +;DQsz” §®ÅÑØßçOOOgœžœžœžçÇÇǧ „ì„ì„ì'!ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejpu{€†‹‘–œ¡§¬²·½ÂÈÏØßèíííííõö÷øùúûüýþÿ     !!#$$'(*+-..0134679:<=?@@BCCNPR\chnu{}‰•›Ÿ¥§¬®²´¶ÀÇÌÒÙßáãíôù !&,39;=GNSY`fhjt{€†“•—¡¨­³ºÀÂÄÒÛäðý #)+-;DMfszŒ’”– §¬»ÃÅÇÑØÝìö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ° fv fv fv ð VX[`VX[`VX[`°ììì0    0!¼ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏÓØßãõö÷øùúûüýþÿ    !#$'(*+-.0134679:<=?@BCIJJKNPSZ\achjnppuww{}€‡‰Ž•—›žžžŸ ¥§¬®²´·¾ÀÅÇÌÎÒÔÔÙÛÛßáäëíòôùûÿ !&(,..3559;>EGLNSUY[[`bbfhkrty{€‚†ˆˆ“•˜Ÿ¡¦¨­¯³µµº¼¼ÀÂÅÎÒ×Ûäèðôôý #%%)+.7;@DMQY]]fjjqsxz…‡‡ŒŽŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïö÷ùúüýÿ    "#%&()+,./1245789;<=?@ACDFGRSUVXY[\^_abdeghjklnoprsuvxy{|~‚„…‡ˆŠ‹Ž‘’”•–˜™šœŸ ð-ÀÀÀÙ ZZZY!pöpöpö™-µµµ¢ ¢¢££¢¢££¢¢££" ÙÜßÙÜßÙÜßb"§û§û§ûâ) : 4: 4: 4 &&&ËÕ1+9= OOOË$$$K! itŠ• «¶ÁÎÞìË#íïíïíï‹' $Ãu$Ãu$Ãu”[ams…[ams…[ams…Ô"E½Âý9:“•—Ÿ¦­³º  45gh޽Âý9:“•—Ÿ¦­³º  45gh޽Âý9:“•—Ÿ¦­³º  45ghŽT+JNJNJN”.ÑÑÑýOOOOOO½% f df df d}+LPLPLP}-²²²ý-ÃÃÃÆOìOìOìOOOFT¨T¨T¨† žžžžžž† 237237237Æ ===F$Š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™š  !$(+.147:==@C†”ž¤«6?Le#<=@AVo|•–™šF+IIJJKKMNOIIJJKKMNOIIJJKKMNO†-³³³†.ÏÏÏï$o, ?˜?˜?˜/-«««/.ÉÉÉo.ÍÍÍ8131313ø!‘ù‘ù‘ù8) 4.‡4.‡4.‡OOOÁ’’’ ¥§§¥§§¥§§'   A-­­­A/õ*'''ª¢!¢!¢!ªj% 9a9a9aª+¨WZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖWZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖWZ^a„‡‹Ž»¾ÂÅèëïòBEILorvyœŸ£¦ËÎÔ× 47=@nqux›ž¢¥ÌÏÓÖê+Wßÿ)Y…’²Ããÿ(?CF[nru˜œŸßÿ)Y…’²Ããÿ(?CF[nru˜œŸßÿ)Y…’²Ããÿ(?CF[nru˜œŸ3»Á»Á»Ás*???\lllÜ"W½ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45gh޽ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45gh޽ÂÄý9:“•˜Ÿ¡¦¨­¯³µº¼  45ghŽ#ËÌÕÛÜåœ$   å #•—™œc #•—™œc #•—™œc%OOO% ¥ 89BC89BC89BC%#ZËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_ablËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_ablËÌÕÛÜåÉÊÝßàêìíöøù23FHISUV_able(---å+ž ž ž NW]io{W]io{W]io{Î’ù’ù’ùNÆÈÆÈÆÈN õ÷ùõ÷ùõ÷ùN kmokmokmoNÍÓÍÓÍÓŽÜÜÜN Ž!{÷{÷{÷Î& )n)n)nŽ( .ÿ(.ÿ(.ÿ(*<<<Ž+¼NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ NY`gptw²½ÄËÔØÛßêñø %.259DKR[_bfqxˆŒ“ž¥¬µ¹¼ÀÍÖãü’¤«µº¾ÃÎÕÜæëïö÷üýÿ    %&()+,./124578CDFGRSXY[\^_abdeghjkrsuvxy~‚„…‡ˆŠ‹Ž‘œŸ — BHNBHNBHN—¢£¢£¢£— %  ^ ^ ^×, ¥§»¥§»¥§»5::   „„„ -©Ò©Ò©ÒI$I-®®®'''R! lw‚˜£®¹ÄÓãïÒ*BBB{{@OOOVhz@OOOVhz@OOOVhz;RRR» »½¿»½¿»½¿» ììì»# ëííïëííïëííï;&»''''DR:R•:R•Ä ¼Ûþ¼Ûþ¼ÛþÄJ‰”bFôJ‰”bFôJ‰”bFôÄ#íïíïíïÄ$ ß[ ß[ ß[-"œúœúœú-#ÌÜÊàíù3IVbÌÜÊàíù3IVbÌÜÊàíù3IVb­+ {úU{úU{úUö)++õõ)++õõ)++õõv žèžèžèv       ¶ „„„öö-¶.ÛÛÛíííßOOOߤ¤¤(OOO(¨¨¨h @BD@BD@BD¨# ëííïëííïëííïè%h+KOKOKO¨.ÓÓÓ(/ïðïðïðq½ÕÜç½ÕÜç½ÕÜç± 999ñ!†‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ †‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ †‹‘–˜²·¹øùü#$0134BC !&(,.359;>EGLNSUY[`bÃÅÈÏÑÖØÝßãæìï+,./FG^_abuv„…‡ˆŸ ±# ëííïëííïëííïq$ ²ýX ²ýX ²ýX1+IMIMIM±-ºÔºÔºÔOOOÔÕÔÕÔÕµ·µ·µ·/èêèêèê#'''#§©«¯¿Èѧ©«¯¿Èѧ©«¯¿ÈÑc!ÕåÝêöFS_lùÕåÝêöFS_lùÕåÝêöFS_lùã"ÈþÈþÈþã( 1+„1+„1+„£,"{"{"{£-¶À¶À¶À WWWÌ-½½½•ÝÝÝÕõöõöõö•%~Y_kq}ƒY_kq}ƒY_kq}ƒ>#ØÿØÿØÿ>, ;”;”;”þ.âäâäâä‡AAA‡!puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ puw{€‚†‹‘–˜œ¡£§¬®²·¹ÈÏÒÓØßãö÷øùúûüþÿ    !#$*+-.013467<=?@BC²´·¾ÀÅÇÌÎÒÔÙÛßáäëíòôùûÿ !&(,.359;>EGLNSUY[`bfhkrty{€‚†ˆÀÂÅÎÑÒ×ÚÛäçèðóôý #%)+.7;@DMQY]fjqsxz…‡ŒŽ’”—ž ¥§¬®²µ»¾ÃÅÈÏÑÖØÝßãæìïüýÿ %&()+,./12789;<=?@ACDFGXY[\^_abdejklnoprsuv~‚„…‡ˆŠ‹‘’”•–˜™šœŸ OOO010101& “ g“ g“ g(***-´´´/çççùOOOù¤¤¤ù+TÀô"%)]jpw~‡‹Ž79jlnp’Àô"%)]jpw~‡‹Ž79jlnp’Àô"%)]jpw~‡‹Ž79jlnp’ÂðððB%+ åçéåçéåçé+fff« „„„+¶¶¶4 +5>+5>+5>4ÄÊÄÊÄÊ4 íïñíïñíïñ´!È{€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ {€†‹‘–§¬²·Øß÷øùûüÿ   !#$-.0134?@BCßáãëòùÿ &,39;=ELSY`)+-7@MYfqx…Œ’”–ž¥¬²»ÃÅÇÏÖÝãìÿ()+,./;<=?@ACDFG[\^_abnoprsuv‚„…‡ˆ”•–˜™šœŸ '''!Aejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ ejlpuw{€‚†‹‘–˜œ¡£§¬®²·¹½ÂÄÈÏØßèíïõö÷øùúûüýþÿ      !!#$$'((*++-..0113446779::<==?@@BCCNPRSZ\achjnu{}€†‡‰Ž”•—›ž¤¥§«¬®²´¶·¾ÀÅÇÌÎÒÙßáãäëíòôùûÿ !&(,39;=>EGLNSUY`fhjkrty{€‚†“•—˜Ÿ¡¦¨­¯³ºÀÎ×äðý)67?@LMYef’”–—ž ¥§¬®²»ÃÅÇÈÏÑÖØÝßãìö÷ùúüýÿ    "##%&()+,./124578;<<?@@CDFGRSUVVXY[\^_abdeghjknoorsuvxy{||~‚„…‡ˆŠ‹Ž‘”••˜™™œŸ # ëííïëííïëííïf444æùûùûùûæ-¿¿¿ÏOOOÏMMMÏ &QSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìQSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìQSUju€‹–¡¬·ÂÏßíPZahnu}‡Ž•›¥¬´¾ÅÌÒÙáëòùÿ&,3;ELSY`hry€†•Ÿ¦­³ºÂÎ×äðý#+7@MYfqx…Œ”ž¥¬²»ÅÏÖÝãìÏ.ÜÞÜÞÜÞØOOOOOOXáçáçáçØ-¾¾¾!OOO¡* @Cœ@Cœ@Cœ «±«±«± ,<´µ¶¶¶½¾¿¿¿åæçççîïððð´µ¶¶¶½¾¿¿¿åæçççîïððð´µ¶¶¶½¾¿¿¿åæçççîïððð“xxx    |ããã|ÛÞÛÞÛÞÅ „„„E½¿½¿½¿E!ähjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæhjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæhjlsuw~€‚‰‹”–˜Ÿ¡£ª¬®µ·¹ÀÂÄÍÏÓÝßãlnp™›žžÐÒÔýÿ*,.WY[„†ˆ±³µîðôWY]ƒ…‡°²µáãæ.OOO®í®"½ý½ý½ý.' !’r!’r!’r·"ŠŒŽô"ŠŒŽô"ŠŒŽô·!$!$!$·ìììËËË€ uxzuxzuxz€ ++++ CFŸCFŸCFŸiîöþâRîöþâRîöþâRi ýÿýÿýÿé!φ‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ †‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ †‹‘–²·øùü#$0134BC &,39;=ELSY`ÃÅÇÏÖÝãì+,./FG^_abuv„…‡ˆŸ i.ÌÌÌÌÌÌ[9;;BDDKNPP9;;BDDKNPP9;;BDDKNPP["Æœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹Žœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹Žœ¡£§¬®²·¹½ÂÄúûüý679:fhkrty{€‚†ˆ“•˜Ÿ¡¦¨­¯³µº¼   1245deghŠ‹ŽÛ#Û+ žŸžŸžŸ8j%Of  ¶E?@”5#ãU ˜5¾ENi @ÿÿÐÐ[ @ÿÿÉÉI @ÿÿÅÅ4 @ÿÿÄÄ) @ÿÿ Ãà Dÿÿ  @ÿÿ ÁÁ @ÿÿ ÀÀù @ÿÿ¿¿ë @ÿÿ¾¾à @ÿÿ½½Ë Dÿÿ¼¼C @ÿÿ»»¸ @ÿÿºº˜ @ÿÿ®®x @ÿÿ­­_ @ÿÿ¬¬@ @ÿÿ««! @ÿÿªª  @ÿÿ©©ç @ÿÿ ¨¨Å @ÿÿ"§§£ @ÿÿ%¦¦ @ÿÿ(¥¥d @ÿÿ*¤¤G @ÿÿ,££1 @ÿÿ-¢¢ @ÿÿ/¡¡õ @ÿÿ1  Þ @ÿÿ2ŸŸÁ @ÿÿ4žž¤ @ÿÿ6Ž @ÿÿ7œœn @ÿÿ9››N @ÿÿ;šš. @ÿÿ>™™ @ÿÿA˜˜ó @ÿÿC——Ø @ÿÿE––Ä @ÿÿF••­ @ÿÿH””– @ÿÿJ““z @ÿÿL’’^ @ÿÿN‘‘I @ÿÿO. @ÿÿQ @ÿÿSŽŽÿ @ÿÿTá @ÿÿVŒŒÃ @ÿÿX‹‹¥ @ÿÿ[ŠŠ‡ @ÿÿ^‰‰n @ÿÿ`ˆˆU @ÿÿb‡‡C @ÿÿc††' @ÿÿe……  @ÿÿg„„ï @ÿÿjƒƒÓ @ÿÿm‚‚¼ @ÿÿo¥ @ÿÿq€€“ @ÿÿrƒ @ÿÿs~~p @ÿÿu}}] @ÿÿw||A @ÿÿy{{% @ÿÿ{zz @ÿÿ|yyõ @ÿÿ~xxÚ @ÿÿ€wwÆ @ÿÿvv¨ @ÿÿƒuuŠ @ÿÿ…ttl @ÿÿˆssN @ÿÿ‹rr5 @ÿÿqq @ÿÿpp  @ÿÿooð @ÿÿ’nnÖ @ÿÿ”mmà @ÿÿ•llª @ÿÿ—kk‘ @ÿÿ™jj @ÿÿšiic @ÿÿœhhG @ÿÿžgg+ @ÿÿ¡ff @ÿÿ¤eeø @ÿÿ¦ddá @ÿÿ¨ccÑ @ÿÿ©bb¾ @ÿÿ«aa« @ÿÿ­``“ @ÿÿ¯__{ @ÿÿ±^^j @ÿÿ²]]S @ÿÿ´\\< @ÿÿ¶[[" @ÿÿ¸YY @ÿÿºXXî @ÿÿ½WWÔ @ÿÿÀVV¿ @ÿÿÂUUª @ÿÿÄTTš @ÿÿÅSSŒ @ÿÿÆRRv @ÿÿÈQQ` @ÿÿÊPPQ @ÿÿËOO< @ÿÿÍNN' @ÿÿÏMM @ÿÿÐLL @ÿÿÒKKé @ÿÿÔJJÑ @ÿÿ×II¹ @ÿÿÚHH¦ @ÿÿÜGG“ @ÿÿÞFF‡ @ÿÿßEEx @ÿÿáDDi @ÿÿãCCS @ÿÿåBB= @ÿÿçAA. @ÿÿè@@ @ÿÿê?? @ÿÿì==ö @ÿÿí<<Þ @ÿÿï;;Æ @ÿÿñ::® @ÿÿô99– @ÿÿ÷88ƒ @ÿÿù77p @ÿÿû66d @ÿÿü55P @ÿÿþ44< @ÿÿ33$ @ÿÿ22 @ÿÿ11ô @ÿÿ00Ü @ÿÿ //É @ÿÿ ..¶ @ÿÿ--  @ÿÿ,,Š @ÿÿ++t @ÿÿ**^ @ÿÿ))M @ÿÿ((< @ÿÿ''2 @ÿÿ&& @ÿÿ%% @ÿÿ!$$ @ÿÿ"##î @ÿÿ$""Ü @ÿÿ&!!Ñ @ÿÿ'  Á @ÿÿ)± @ÿÿ+¨ @ÿÿ,› @ÿÿ.Ž @ÿÿ0| @ÿÿ2j @ÿÿ4_ @ÿÿ5N @ÿÿ7= @ÿÿ93 @ÿÿ: @ÿÿ< @ÿÿ>÷ @ÿÿAã @ÿÿDÔ @ÿÿFÅ @ÿÿH½ @ÿÿI­ @ÿÿK   @ÿÿM   @ÿÿN  ‡ @ÿÿO  s @ÿÿQ  _ @ÿÿSK @ÿÿV7 @ÿÿY( @ÿÿ[ @ÿÿ] @ÿÿ^ @ÿÿ_ó @ÿÿaá @ÿÿcÏ @ÿÿfÿÿ¶ @ÿÿiþþ© @ÿÿkýýœ @ÿÿmüü– @ÿÿnûû‡ @ÿÿpúúx @ÿÿrùùp @ÿÿsøøb @ÿÿu÷÷T @ÿÿwöö< @ÿÿxõõ0 @ÿÿzôô$ @ÿÿ|óó @ÿÿ}òò @ÿÿññ  @ÿÿððE @ÿÿƒãã! @ÿÿ…ââ Dÿÿ†ááù Dÿÿ‡ààÓ Dÿÿˆßß¹ @ÿÿŠÞÞ¨ Dÿÿ‹ÝÝ— DÿÿŒÜÜ @ÿÿŽÛÛm DÿÿÚÚ] @ÿÿ‘ÙÙ Dÿÿ’ØØû Dÿÿ“××ð @ÿÿ•ÖÖá @ÿÿ—ÕÕÚ Dÿÿ˜ÔÔÔ Dÿÿ™ÓÓÌ DÿÿšÒÒº @ÿÿœÑѨ @ÿÿžÐЛ @ÿÿ Ïω @ÿÿ¢ÎÎr @ÿÿ¤ÍÍ^ @ÿÿ¦ÌÌQ Dÿÿ§ËËF Dÿÿ¨ÊÊ> Dÿÿ©ÉÉ. DÿÿªÈÈ  Dÿÿ«ÇÇ Dÿÿ¬ÆÆ  Dÿÿ­ÅÅÿ Dÿÿ®ÄÄø Dÿÿ¯ÃÃÁ @ÿÿ°ßß³ Dÿÿ±ÛÛ78=Qmvm•ª7³ÄÕéï7*8>_d_…›_û_[°_ë_&_dk_d©_ß_@___~’_Ñ_º_ó_, _dh _d¤ _Ø _ 5 _e _• _² _Ï á _= _™ ê _! _X _d’ _dÌ _þ _0 W _Œ _Á _dù _d1_a_‘Áæ__>_[_xŠ_æ_B“__m_dÝ_dM_µ_z_•_°À_û_6’_Ö__da_d¨_ç_&Z_•_Ð_Ð_é÷_÷_O_p_‘_dó_dU_¬_P§_§_¾Ê_Ê_C_b__d½_dù_._c—_ý_c_z_‘c__ã_O_€_d´_dè__@a_Ž_»_í__dT_da_Ž_‰_¸_ç_d _dK _u _Ÿ ¾ _Ò _æ ï _!_E!e!_Ž!_·!Õ!_û!_!"_4"_G"O"_‘"_Ó" #_%#_@#_dƒ#_dÆ#_å#_$,$_S$_z$´$Õ$_%_1%_db%_d“%_Ò%_&\&Ž&_§&_À&_dî&_d,$_S$_'B'_R'_b'g'_Ž'_µ'Ñ'_ò'_(:(_Z(_7m7m7777ª777é7787778787777_7_7_7_7_7z(777777777(7ÿ‡ú‡  ‡ EOb~Ggš‡‰G£ª­  P 4y¹¾ÞÃùÀàɹ HJe‚ù¿Â»kÝÔk77Ìë ‡¹¹ÕÖÙººÎÎÐë¿À«`“+f™ë¾t *0ô 04Ä]¹Ùº  ]|¦ GIdÏÿ*e˜Ø– ˜®áÕ!²âÄá+ácjm–áŒ!ªÊ¾¾ÞÃÊ +1 ovy¢Št§ÙÓ¿ßÈS B“ FHMNPQc€S\“_“Ó‚Ž¡< ²²··âãÄÄÅÅ<õ| < '-3< 3<N<[¼E·ãÅ Å 6ŧ.Èî "® 9. @îWYsŠnˆ’..™n›7 ÷ 9 #@«©ýÿ(i CEF`|é Jg„)ÃiÌÎÐr @ÍóþCDHRVV2 &›QÏ› [ÇÉ$óöù$ 2d 5<@¤d¤«® ðûü CD M (.4Öߣáûüý    EFGLRiœñý –û&– 8Öm–“ÿ ÄðñCDR¿UWqˆiÿˆ÷›ØiÈ<þþÿÿ))**//008899HHIIVVVWWWeeffrrss‚‚ƒƒ‰‰ŠŠ˜˜™™¥¥¦¦Xt‹Q,Ë‘»»Û¿¿Ñ  Ñ IKfƒQOÑbl•‘jº_ÑñDUUz’CGõö÷  !"-./01234<<==>>LMNSSZZ[[\\ijkvvwwxxŽŽœž©©ªª««»ƒ 7?BÃlƒ~C†Ã‹Àls¦5qx{¤õxõ Þ÷Í^7Ì»^ )/Þ ;^‘ÞŸ'M'…ç¨ð‡Ö0ô÷úpøp 6=>Aðnp}  ?LÂb÷"YuŒËßK  : „˼Ô5pÓòòóôõö÷ !"<=>RSTUVWZ[\opqrstuvwxŽœ©ª«½TöÔ 7ÔVXr‰½ 5= = AF+ÊÆ :Ævïƒø ýxùx DGa}ødkn—x­¸ºÁÞßãä¿»Û¿Á "%Kh…A{Áž¥j ªTV[\^_p‡j]ªk³Ûó ,s  3 ó—ž¡œüþ'Ü !Ü /pwz£%z¥€¥ŠN Ž Nr¥˜NšŽœÁ—¼ÜÀ £Ç  ,2`PའR Å &'()*+,56789:;`abcdefghiooppqqrrssttuu|}~€‚ƒ„…†‡ˆ‰Š‹Œ“”•–—˜™š›œœœ¢£¤¥¦§¨‰GÎôÿIWWÉ .I ©IÅûRš›× &'()*+,56789:;`abcdefghooppqqrrssttuu|}~€‚ƒ„…†‡ˆ‰Š‹Œ“”•–—˜™š›œœœ¢£¤¥¦§¨{^„C@@GGQQXX__ÍÎÏÐÑððññóóôôöö÷÷ùùúúüüýýþþÿÿ      !!""$$%%''(())**++,,--..//001122334466778899::;;==>>??AABBCCDDFFGGHHIIJJJKKKMMNNPPQQTTTUUUVVWWXXXYYY[[\\^^__``aaccddeeffgghhjjkkmmnnppqqrrssttuuwwxxzz{{||}}€€‚‚ƒƒ„„……‡‡ˆˆ‰‰ŠŠ‹‹ŒŒŽŽ‘‘’’““””––——˜˜™™šš››žž  ¡¡££¤¤¥¥¦¦§§¨¨ªª««­­®® =>Ä•ŸmºÚ¾­  ­”ö¶þ)¶ -ö <vQòóôõø_  ;_  %_¬è 7@GQX_²·¹»¾¨XÐðCTT¨½ÝÁ( ¨  #¨u¨± !$1¢©¬Údw‡Ôûüýþÿ       -./01234<=>CCCDDDEFGHILLMNRSTUVWZ[\`abcdefghiijkopqrstuvwxŽœœœž©ª«šSZÚwã 8ch›£¦ÌWi£ÒòCCDDEFGHILLMNRRSSTTUUVVWWZZ[[\\`abcdefghiijkooppqqrrssttuuvvwwxxŽŽœœœœž©©ªª«« $ 1ŒRSTUZ]o†ÆòU‡Ž‘>*Éòûüý    EFGLRRiœ¾a” …xGHch•°ˆÓô7“xFnh”JX  %H‘8¸ —Òä'H{h“2H ¡xEƒh`X 8Ë °xD¨ÑŒh‘@HjX EH ˆ @ÿÿ<<N @ÿÿ33F @ÿÿhh: @ÿÿgg, @ÿÿ ffR @ÿÿ ddî @ÿÿSSà @ÿÿRR @ÿÿBBX @ÿÿ>>4 @ÿÿ55# @ÿÿ))Á @ÿÿ @ÿÿÔ(Û(î())):)<))n)p)¨)ª):))º):)Ç)n)77ï)õ)76w (•G0÷Rddd°y BD\]fnoq‹¹Gji9G¹HIIâMORdfgg‰‹ŒŒk"Al‘ ›BBDD\\\]]fffnnnoqqq‹‹‹ë)MMNOOS\\^^_``ffgghhnnqqtttww~~‚ƒƒ‹‹ŒŒ4/5´Bu:B]dd‰‰ö~~F(bΖ.)N13O®BîOS_tþSF`hwƒÏ IIOORRSS^^^__ggggttttu€€€‚ŒŒŒŒX\mn|~_ddˆ(((X8>ˆ:<XYZfhmqw|ƒ‹VÁÑKMM*Y^:^gtŒ #Ó#')+3ÃIR\^nqtu#Z`c–|:,\fnq~‹>Õh…†ŠH g8H ùΔHáhƒ y?s8™H)__žH?ëh‚|8£Hy< Ê _4ÏX ªH…8$ Dÿÿ"5 Dÿÿ½H@ÿÿ99¯H@ÿÿ77ªH@ÿÿ 66£H@ÿÿ55žH@ÿÿ44™H@ÿÿ33”H@ÿÿ22H@ÿÿ%11ŠH@ÿÿ+00fH@ÿÿ.EH@ÿÿ22H@ÿÿ5ÄH @<ÄG @ÿÿ1AÄG@ÿÿLÒG@ÿÿS  ¸G@ÿÿX  úH @]  ªG @ÿÿ1_  ªG@ÿÿe  ŸG@ÿÿi  –G@ÿÿlmG@ÿÿsI @z`G @ÿÿ1|`G@ÿÿ„UG@ÿÿ‰úú1G@ÿÿŽïï#I @•íí G @ÿÿ1šíí G@ÿÿ¥èìG@ÿÿ¬ççG@ÿÿ±ååXI @$¶ääßF @ÿÿ1¸ääßF@ÿÿ¾ãã×F@ÿÿÂááÑF@ÿÿÆßßÉF@ÿÿÊÝÝÃF@ÿÿÎÛÛ¹F@ÿÿÒÚÚ¦F@ÿÿÕÙÙ{F@ÿÿØÒÒSF@ÿÿß··lI @/æ¶¶1F @ÿÿ1è¶¶1F@ÿÿð´µ*F@ÿÿô³³F@ÿÿø²²F@ÿÿý±±F@ÿÿ°°ýE@ÿÿ¯¯õE@ÿÿ ®®ìE@ÿÿ­­ÜE@ÿÿ¬¬ÖE@ÿÿªªI @;©©ÎE @ÿÿ1©©ÎE@ÿÿ%¨¨ÈE@ÿÿ+§§ŽI @?2¦¦¶E @ÿÿ14¦¦¶E@ÿÿ<¥¥°E@ÿÿB¤¤I @CI££xE @ÿÿ1K ££xE@ÿÿS ¢¢^E@ÿÿX œœ3E@ÿÿ^ ‰‰(E@ÿÿc ˆˆE@ÿÿi ‡‡E@ÿÿn ††E@ÿÿr ……E@ÿÿu „„÷D@ÿÿz ƒƒìD@ÿÿ€ ‚‚äD@ÿÿ… ÐD@ÿÿ‹ €€ÈD@ÿÿ }}ÂD@ÿÿ’ ||ºD@ÿÿ– {{´D@ÿÿ™ zz¬D@ÿÿ yy¦D@ÿÿ  xxD@ÿÿ£ vv>D@ÿÿ¨ ss¬I @Y­ rrRD @ÿÿ1¯ rrRD@ÿÿµ qqID@ÿÿ¸ pp3D@ÿÿ¾ oo+D@ÿÿà nn!D@ÿÿÉ mmD@ÿÿÎ llD@ÿÿÓ kk D@ÿÿ× jjD@ÿÿÜ ii¾I @dá hhùC @ÿÿ1ã hhùC@ÿÿé ggóC@ÿÿî ffÎI @hó eeëC @ÿÿ1õ eeëC@ÿÿû ddåC@ÿÿ ccÝI @l bbÝC @ÿÿ1 bbÝC@ÿÿ  aa³C@ÿÿ ZZ›C@ÿÿ YY‰C@ÿÿ  XXxC@ÿÿ% WWYC@ÿÿ* VV>C@ÿÿ. UU0C@ÿÿ1 TT&C@ÿÿ6 SSC@ÿÿ: RRf4@ÿÿ= QQÇ4@ÿÿ@ PPÿB@ÿÿD OOÛB@ÿÿJ 44ìI @|Q 33ÍB @ÿÿ1S33ÍB@ÿÿ[22ÄB@ÿÿ`11J @€f00˜B @ÿÿ1h00˜B@ÿÿo//fB@ÿÿv..KB@ÿÿ|,,rB@ÿÿ**TB@ÿÿ…))DB@ÿÿŠ((J @ˆ'';B @ÿÿ1‘'';B@ÿÿ—&&+B@ÿÿš$$ B@ÿÿ !!B@ÿÿ¥  úA@ÿÿ«óA@ÿÿ°éA@ÿÿµâA@ÿÿ¹ÖA@ÿÿ¼ÆA@ÿÿ¿¡A@ÿÿÁ•A@ÿÿÇ#J @–·A @ÿÿ1ЇA@ÿÿØ~A@ÿÿÝ8J @šã  8A @ÿÿ1å  8A@ÿÿì  .A@ÿÿò   A@ÿÿ÷  ü@@ÿÿü  ñ@@ÿÿå@@ÿÿÛ@@ÿÿÒ@@ÿÿ ¾@@ÿÿ¸@@ÿÿJJ @¦«@ @ÿÿ1«@@ÿÿ"—? @@ÿÿ&ûþž@@ÿÿ*÷÷‘@@ÿÿ0õõ†@@ÿÿ5ôôz@@ÿÿ;óóh@@ÿÿ@òò^@@ÿÿDññV@@ÿÿGððM@@ÿÿLïïB@@ÿÿRîî:@@ÿÿWíí+@@ÿÿ]ìì%@@ÿÿbêêYJ @¶géé@ @ÿÿ1iéé@@ÿÿoèè³?@ÿÿtççhJ @ºyææÍ? @ÿÿ1{ææÍ?@ÿÿää½?@ÿÿ„ââ—?@ÿÿˆáá?@ÿÿ‹ßßi?@ÿÿŽÝÝQ?@ÿÿ‘ÜÜK?@ÿÿ—ØÚC?@ÿÿžÔÖ;?@ÿÿ¥ÏÑï>@ÿÿ­ËÍÕ>@ÿÿ±ÇÇÐ>@ÿÿ´ÆÆÈ>@ÿÿ¸Åž>@ÿÿ»ÄÄ®>@ÿÿ¿Â©>@ÿÿÂÁÁ[>@ÿÿÅ££V>@ÿÿÈŸŸO>@ÿÿËžž>@ÿÿÏšš>@ÿÿÑ——>@ÿÿÔ––>@ÿÿו•xJÓÚ‹‹Õ= @ÿÿ1Ý‹‹P=@ÿÿà8=@ÿÿ $=@ÿÿæ=@ÿÿé~~é<@ÿÿì}}^=@ÿÿíjjF=@ÿÿîii0=@ÿÿïhh=@ÿÿðgg=@ÿÿñff´<@ÿÿô^^Ñ<@ÿÿ÷]]¿<@ÿÿøWWž<@ÿÿûSSŠ<@ÿÿþRR«<@ÿÿÿAA–<@ÿÿ@@€<@ÿÿ==w<@ÿÿ<<g<@ÿÿ..`<@ÿÿ--Y<@ÿÿ,,î;@ÿÿÓ;@ÿÿ ¼;@ÿÿ ®;@ÿÿ™;@ÿÿS;@ÿÿòò4;@ÿÿññ; @ÿÿîîï:@ÿÿÖÖÐ:@ÿÿÕÕ¾: @ÿÿÒÒ÷9@ÿÿ ««Æ9@ÿÿ"ªªÙ9@ÿÿ#¥¥¤9 @ÿÿ$¤J Dÿÿ$޵J@0ù%“9 @ÿÿ&‰‰ÌJ Dÿÿ&„‰ÝJ@0ü'ˆˆˆ9 @ÿÿ(~~ñJ Dÿÿ(|~K@0ÿ)}}z9 @ÿÿ*zzK Dÿÿ*xz'K@0+yyK9 @ÿÿ,gg;K Dÿÿ,egLK@0-ff&9 @ÿÿ.VV9 @ÿÿ.SVaK@0/TToK@00UU9 @ÿÿ1QQ9 @ÿÿ1NQ|K@0 2OO‰K@0 3PPÚ8 @ÿÿ477o< @ÿÿ5,,H @ÿÿ6++uH @ÿÿ7**CG @ÿÿ8@E @ÿÿ9••ÌC @ÿÿ:ŒŒˆD @ÿÿ;uuçB @ÿÿ<NNB @ÿÿ=##Ý> @ÿÿ>ÉÉ—> @ÿÿ?ÀÀ>> @ÿÿ@æ= @ÿÿA””«= @ÿÿCŒŒù; @ÿÿDá; @ÿÿE¤; @ÿÿFµ: @ÿÿGÎΠ: @ÿÿHÉÉŒ: @ÿÿIÈÈ|: @ÿÿJÃÃm: @ÿÿKÂÂ^: @ÿÿLÁÁN: @ÿÿMÀÀE: @ÿÿN»»:: @ÿÿOºº1: @ÿÿP¹¹&: @ÿÿQ¸¸: @ÿÿR··: @ÿÿU±± : @ÿÿX°°»9 @ÿÿY¢¢¬9 @ÿÿZ˜˜-9 @ÿÿ[““T9 @ÿÿ]jjù8 @ÿÿ^XXÈ8 @ÿÿ_FFð8 @ÿÿ`CC»8 @ÿÿa11®8 @ÿÿb00 5 @ÿÿc#.:>BXcgk{‡•™¥µ¹Òúý    GªGgEÔ(ºGÍGÛGæGH HH!H2H*IH`HÔ(pHzHÛGˆHÔ(HzHÛG¦HÔ(ºHÆHzH×HÔ(ºHîHüHIIÔ(ºHÆHüHIIH2IJIH[IsIŠIH¨IgE?E²IÇIåIÿIJ5J7§J¹JÉJÚJ?EêJKK,K:KQKdK€KŽK¥KHêJK,KQK€KLH[LtL‹L L?E[LtLÏLíL7%M?E[LtL‹L2MFM?EƒM˜M®M*ÒMìMH‹LN,N[L@NTN?EÏLN,N[L@N¥N7%M?EÿN2MN,N[L@NOD*sO²I2M†OH HH!H2H?E²OÄOßOöOP&P7§J¹JÉJÚJ?E‰PŸP§J¬P¹J·PÇPÜPÚJçPH‰PŸP¬P·PÜPOQHQ•Q©Q»Q?EQ•QáQüQ7%M?EQ•Q©Q+R?RsR„RšR¥R*¾RšRÐRsR„RšR¥R*¾RšRÐR?EåR÷R S*IH`H GªGgEHÆÐD€¹ OQRSUVWXYZ¹5)¹A¹FÚDik !'Ùõ…ø6%?ëT¦¨ªÄÅÆÇËÏÜÝßáâðñòóôõ÷  !>AOQRSUVWXYZjklmnopxyz{|}„…†‡ˆ‰œ¤§¬­®¯²³ÙÛÝßáú015k ‹ë?äèìíîï &adgq€‚ƒ¢¥¨ª234ëCdet ,/2ôFãäå   Ý>ÈÉÝCab]Dqq]FºÀÎ&3&(*&9V÷û&:¸¦?á÷¦A&CS¦Dx¦FÙ59OT;û=qwH1˜#/29Qá˜B/0Gça-"«ÂÅÇñóõ  !*.234kmoy{}…‡‰¯°±á;*aB)*,.Ê;Ób.Ó´èS;òÓ;S>žŸSF·<ZÁÂÄÅÆÇâäæçðñòóôõ  )*,./01234jklmnopqrsxyz{|}„…†‡ˆ‰œ¬­®¯°±ÙÚÚããääååçèú         5< 3¼; êíï  (cfiƒª·å 2347;Þãååî   îB RS]^}~€äæçèéìî  &',./023abdeghqrs€‚¢£¥¦¨©´¶Úãäèí   î;nA% 0134bcceffhiirr      w¥6¹D÷Œw3Ÿ÷9«w<<K,÷Dƒ@<%HM@E•@H©>Á2 ç  ,./023s²:É2<$GL2?ÍÖ?F²A2B$v2H› OQRSUVWXYZ›?á÷›CYdÅ¥§ª«ÕÖñò  !"#$%&,-.012<=@AFGHIWY]^fghijnopqr•–—šÁÂÄÅÆÇËÏÔØáâäçèêìíîïðñòóôõ÷     !$&()*,./124OPQRSTUVWXYZacdfgijklmnopqsvxyz{|}€‚ƒ„…†‡ˆ‰œ¢¤¥§¨ª¬­®¯°±·×ÙÚãåçïú    01234567d PTä8:>ºº¼¼¾äDäE¬­®¯°±ÍeŠÐÐÙÙäæçèìî         &.///001222334AAHHOOQRSSUUVVVWWXXXYYYZZZZadgqqrs€‚œ¢¥¨´ãéêëìú M 0Í?äæM@ïÍB234Ö# µ¶·çì V3V>ŸÖ?äæqrV@ðÖAÖEª2VH¿<WZ¥6¹ˆ"39Nˆ9~®±ˆDtuE…‘çs>–‘@õz9z¬¯z@óúACfghijnopqrâíï)*pƒ¤§ªç 012347Ã>&ÄÅÆÇ  !jklmnoxyz{|}„…†‡ˆ‰¬­®¯°±C?ÔECA   //0223ÃFÛCGñ¬9˜¬Dyµ9˜µ:Î5@ìíîï&adg€‚ƒ¢¤¥§¨ª²³ÛÝßá012347µH79Sž<AIS@-èéêìíîïòóôõ !&'(abcdefghilmno€‚ƒ†‡ˆ‰347ž@÷ýžFמH4g<.5çBMNð8C99p9r‹ŸýpCVYZðGÙ9¢¥¨Y<,4YA  aaddgg€€‚‚úú  YCV¢ÁÂðñòóôõ ïï 5 >•–‹B,,..œœããïïï666 Gçèí9PU: °°°±±±&&&'''”E¢£¤¥¦§01”H2ý=•–ýE¯FÆ9 ªÆ<YZF=iwÆA¯H78=iq€8>š¸@48A  ¸G H+s*1ó?æéê '(0134bcefhir£¦©íóAóCf\9j'(hiÜ<]ÜAÜE¬¥ OPQRSTUVWXYZ%#bc{./8%<#FK%@ê3%HŽ!©<!13CRR>——>¿À—?áûA    B"#CR—F×`<-3`G`HÉ ).IDpIF´¶·ãäåçë    ÉFÝÒ@RDqrÒG »#ìì»81»9ž ¢»=Š‹;?ÏA;B&'7B m:ÂmDssmGmH&öjjttyˆv>¦¨Ò9vA 0134_ééêê'(bbccefhi£££¦¦¦©ßFãä¨ 4Õßåñû¦¨ªÂÅÇñóõ  !*.234RSWXYZkmoy{}…‡‰¯°±´Ò9¨#êê(Eˆ1:¹1>š1F´¶1Gï6ßåçûDlc{8EL<&INÌC]ŒLE—žõü•%ê(cfiÕ=‹ŒÕ>Ç•AUG÷úHþ.,./2adgqs€‚¢¥´Úè >3  ¾: ÒÕÕÖÝÞßßç>>œ¾>Äþ>ËÌÏÐÔÕØÙ>>AAEEHHOO¾@~A>CU>Dps¾E¥§1‡AF°>´½?ßA  Dkù9!ù8LXù;+ù<fghijnopqr}~€ù>ËÏ>Ay?Ýù?ççùCgh¢ÞëÜàB%·B@îïÂD|+ ÌÌÕÕä,>>EE+3 «<AN«=„†Œ+@ìí«@4+B$+Dn´)jææéêê '((01344£¦©¶¶¶¶¶·····äääåååí4;ñû´<W^´=†††‹ŒŒ´Dz#éé:È=gu=rx>š?ËÏÔØ>AEHDvf4Qæ9§¨æ:Õßåçñæ=“”fA fB*.fHÏ. äçèìî &O>ž¡A!DmŠ<@HRŠH0“òóôõ !jklmno†‡ˆ‰“9‰|:Ã|>¨ªü@ |B,,.E!7æèèéììîî &&'034QQSSUUVVWWXXYYZZbehr¢¢£¥¥¦¨¨©´´¶ä E3 E:»EH®"æ 0134r¶¶¶¶····ääåå    ®"ä ®80®;®>Â.A ®FÙ57Gï6€ÄOQ+4€<=L€DsE„€E¢GåHi 6¤ÐÜìø+8Ve°Åé<fn}i?ÝéAr;úÿr@òóôõ !jklmno†‡ˆ‰rB*rEœ¶·ú[>£Û@[B)*,.ÛB4¤@AHIW¤9¤;$=hp *14çççç     ?ËÌÏÐÔÕØÙ>>AAEEHHOO @çE¢£¤¥¦§01G–#^}~€äæqr¢¢££¤¤¥¥¦¦§§¬­®¯°±0011:±–<@M@èé3–G?ßÿBOÈ01234567È84FH9fjÈ=Š‹‹È>ÅÈD}ÈE§1Ñ $v´´´µ¶¶¶¶····×Ñ<]Q?ÜÑFß::º:@íºD{< 04ƒ=pvƒFÕÖll#íìD‚ƒìE­ìFãäå   õE®uH*^  ÞÊÓã+=D^:Á^=jx^@ñ^E™œÞG§@ûý'A  0ËÏ>A0!/20=hv0CT°E¤0 äèìî &adgq€‚¢¥¨´ã RS; îññòùúûû™;<"25™H3b b" 0â<^b>¦¬¹b?Üâ?ääâAË# ´¶·çê K3 K9gq­°K?ØHKB),KHTAAT Ô ÔØEHT+ê(cfiT9jtTB)=9b½?â=F´=Gï6½H9† RS}~€èéê'(bcefhi£¦©Ú †9}=ft>•†> ª¬¶¹º¼¾ÀËΆ@ôCPRSTWXYZï:Öo<:,ï>Ë>ø!£¦¶x=ouxCWxE¢£¤0xGÁA/·å ª=âþ§»*F³ªG  ªH6³?âç³@'(efhi³B/2³CZ3Do3E‰œæé'behr£¦©¶ä :·E‡œE£¦©F²e9o˜öå@åCcN 66Îdh‘ENîùÿNfghijnopqr}~€N:ÀÎ@NCUVWXYZÎE¨©ª×Fá :É A ‰CX Dj: °°°±±±&&&'''=go~E†F±{—žõü{FÉÒÄ# ´¶·çé Ä?âäæçpqrsÄ@     0134DB(7ÄB1ÄG -"æé'behr-#c/-9`“¶ 4œéêëìú¶>!ÂÅÇñóõ  !*.234kmoy{}…‡‰¯°±¶E¥¦§12êç ]•–ššžŸËÌÌÍÏÐÐÑÕÕÖÙÙÚÜÝááäèèèééêêìììííîîîïïòóôõ÷÷ûû       !&&&''((,.//012234>>>?AAABEEFHHIOOQRSSUUVVVWWXXXYYYZZZZaaabbccdddeeffggghhiiq€€€‚‚‚ƒƒ†‡ˆ‰œ¢¢¢££¤¤¥¥¥¦¦§§¨¨¨©©ªª²²³³ÛÛÝÝßßááãéêëìú 0011223344677Ÿ9CSSXXZZŸG è%å h+·å h=nth@òhEœçèú ñ@qF¼¾qH'Ú8 79:C¾ÉËÒÒÚD#?ÍÑÖÚ?BFI£@ûý£B//22£E£¤¦¨©ª02#F²³ÛÝßá#Gëë£H5 :°Œ:È B!FI£@ûý£B//22£E£¤¦¨©ª02#F²³ÛÝßá#Gëë£H5 :°Œ:È B!$ ˆe_–<ä¼Lä\ NŸç\0}ž<á?ÄL8}m@ÌLó\ @}«<ãø\ a< ‡ÕLE}ý\$m$ DÿÿU7 @ÿÿddL7 @ÿÿ[[÷6 @ÿÿKKî6 @ÿÿIIå6 @ÿÿGGÍ6 @ÿÿBBÄ6 @ÿÿAA·6 @ÿÿ@@£6 @ÿÿ <<š6 @ÿÿ ;;6 @ÿÿ ::}6 @ÿÿ 66u6 @ÿÿ 55j6 @ÿÿ44I6 @ÿÿ11?6 @ÿÿ0016 @ÿÿ//6 @ÿÿ..6 @ÿÿ-- 6 @ÿÿ,,ö5 @ÿÿ++î5 @ÿÿ**æ5 @ÿÿ))Ö5 @ÿÿ((Í5 @ÿÿ''Ä5 @ÿÿ&&¹5 @ÿÿ%%°5 @ÿÿ§5 @ÿÿŠ5 @ÿÿ€5 @ÿÿv5 @ÿÿ m5 @ÿÿ!a5 @ÿÿ"AFJFSFjFFŸF®F¼FÑFÜFåFõFýFGSFFjFGG)GAKMXYefrs‘’”•±²µ¶ÅÆÑãt\B./12345:BFHILNQRRSSVWZZ\__bbde{Œ‘’“¡¥§¨««¬®²³µµº½¾¾¿¿ÂÂÄÇÇÊÊÌÍSÞFýS½íW`jk¡¤¥¦§ª¼½¾¿Îß%((‚…… "5„‘¥¥±]Yn\›ÝZ¬®²ËÐÓÖÙÜàâåèëîñ]\ ..uw{ŒŒý\ò$7&312LW’®÷<lm®Á**,/13ObcˆˆŠ‘˜»ÊË÷ "'5:GR_l~¯°¿Rù†[ÙRkªoSäQïS¼íx/Tù¾T^ïüXnpt—²³µ#88;>>@BJNQQRSSZ\z€–˜˜šœœž¡©«¬²³µº½½¾¿¿ÂÄòû #/06?BLNZ[ghtuz“–™Ÿ´·ºÇÈÐÑáÏX/24557î(;HS`mÀZ$[nopqstò+-/0VXZ[ceghprtu“”–—™´µ·¸ºÃÇo\ ,245{Š’“ØO5®°±²ö{ xZ€Zaghhiijklm}}™¢£¤¥¦§ª®¶ÁÆÆ'((((**-CC|„…………††ˆˆ‹¢¢ðý  ""'(++/55:;?GHLRSVVZ_`ccglmppt}~ƒ†‘’£¤¤¥¥¥¥¦§§««¯°±²¿ÀÃÃÇÑÔ×××ÛÛÛÞÞ\îø\òü 2DO\ivy‡Ššž¨¬®»ÉÌÌÐÔÖØÚÜÞSêk¡SÛ4AUµzŸáYðýþ!Z!TdÀÌÁZ›¬ÀËa\'BNQRRRSSSZZZ\v¡«««¬®®²³µµµº½¾¾¾¿¿¿ÂÂÂÄ\!8:VXÊS`¡ŠZD[lnpppq8;>?@zœžò+,-/0>?ABKLMNVWXZ[cdeghpqrtu’’“–––—¯±²²´···¸ÃÄÅÇÈ*\ñJ\’j\2bwʪ\s²óAl¯SYkpryz{{³Y´#ãó\ò{|} ¢£œY§L\ZXÑüZ ¦ÐÓÖÙÜàâåèëîñE¦ìW–ìóeR¥EYk¬®ËÐÓÖÙÜàâåèëîñåZ¥e\14I^_bw’¨ÆÇÊ…\8˜T¾ð%x‘U¶%ƒ8˜åîYò WR§wRj¤ó(…„¥÷R(…¥T¿ð‚±—TGQSVXYYYmxz}~~~ï     ~±±±²²³³÷Yö.NŒº×[å7\ý×\íöÀSÏàV”±Cq²QRS½¾¿/Zgt—¸ÇàX4€Y’“”•@[®¿îñÀ\z°²³µ¶¸ÉQm¶éYñ   ]ó?@@LÑ)] yŠž¬®ÌÜÞòYò2])<ITanÁ›X#Y ELLWXYkrw~ÛYðþÿB®ÁZ÷@¤Z—$[¨d[Ó\ëä\ðƒ„„„„…†$]üÌÐÔÖmH~¬®± Rú-Z)D­[àí[è ]÷6Z7V[Ж\>œ+VcpÃ_ /XZ—™s|ðY EMVYks}~ß\íô¨WEJLRSTT>@z˜šœžíùáèX6ˆYBŽ’“”§®±í8<ABCDXppq—²8>QRRSs˜œ²²³³½¾¾¿ô /?LZgt’––—²··¸ÇÑÑRÕ!QSç^‘SØ!±WghÆ(*C…†ˆ¢„¥¦§ÛÛqY[§Q],WdqÄzZ [^uxyšŸ«¸»ÂÊš[Üz\IKLRSWXZ^^{¨ª«®µ¾¿ÂÆÆ#TöƒUíY7CZ7=>¬WlíöìWö,YHñŒYŽ•§¬²´íô#8E8>s–˜œ,] 2DO\iv‡š¨»ÉÌØÚÕYï  ,33Fbce{Š‘‘¥ÊËÍu[Öþ ”§®°±±²íöù7CÞW«Þ¾[â'Sß§X /(;HS`mÀ'Y*HSYnz~ðö÷ùúý!\nq›µ¶ NOQST}º»½¿Àñz{}“—Ÿ £´¸ç\ò#6ÐÙVþZp–·™Zj¤¼½¾¿Î%((‚……„‘¥¥±"R}£°¢W$®Á:LLVWWX "'+/5:?GLRVZ_cglpt¯¿ÃÇ Y E“®An“´KZ:=@ACDEÔS "5”Y“”•©®°±²ï:ABCDETZ:>??BD”Zi}TNÆ~)|^  1>£nÍU@ÿÿ;;ùU@ÿÿ99ãU@ÿÿ 77=V@ÿÿ 55"V@ÿÿ33ìW@ÿÿ11ÞW@ÿÿ//AU@ÿÿ--TV@ÿÿ++V@ÿÿ))ÌW@ÿÿ!&'€R@ÿÿ%#$S@ÿÿ( !ØQ@ÿÿ+÷Q@ÿÿ/2R@ÿÿ2·W@ÿÿ5çQ@ÿÿ9ÉQ@ÿÿ="R@ÿÿB ©Q@ÿÿE W @ÿÿFÎm†u•uÎm†u•uÎm†u•uÎm†u•uÎm†u•u.o¢u´uÅu.oáuðuÔ(þuvvHnEHnEHáuðu.oáuv2v.oáuðuÔ(áuðu.oáuNv]v.oáuðu.oáuðu.oáuwv]v.oáu´uÅu.oáu‡v¢v³v.oæv­\7#çQ÷Q·WÇWØQ€R$V)¨W ©Q ÉQS!AU-ùU9±W !$'/3579;"R 2R"V3¢W $›-ƒU3579;ãU7TV+¬W1ÌW'ìW1üW1E3579;ÍU;=V5W þ-ÞW/_  !#$'//11WV.ñn¨N†>Õ^ ûn[ o²N&zi.>¸N^oZo.J—>'nN’ oYÂN1y ë^ ÇN]oX.\yX@ÿÿ JX@ÿÿ 0X@ÿÿ%X @ÿÿHáuwwƒ¸ÎmFwXwqw„wwÎmáu{´7 _ ¨W¬W 0X`XE%XyX ‘X  ¢WJXjX¶>ÝN”.-oVâN¾>È›.QlÃ>wëNN _ È>Ç7oU^x€‘òN¨.?oTÐ>Æ`klJÕ>Å'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ`] Dÿÿ X Dÿÿ!!Ì` @ÿÿo×q` @ÿÿ ©R6` @ÿÿ¡Û_ @ÿÿ<~x_ @ÿÿ|U_ @ÿÿ#;`_ @ÿÿ(ã7Õ^ @ÿÿ+´ß©^ @ÿÿ1#±˜^ @ÿÿ9 e^ @ÿÿ@Ö÷R^ @ÿÿGÄÒ.^ @ÿÿO¨¾…\@ÿÿToq–\ @ÿÿY:^^ @ÿÿ]$-Ö_ @ÿÿ^É_ @ÿÿ_½_ @ÿÿ`·_ @ÿÿaÎmÞzôz{{Ÿ²ÎmÞzôzá²Îmºw„{•{{¶{Á{³Îm||„{•{ƒmI³Îmôz„{•{ƒm‡³Îm•|„w®|Îm•|áu„wF¹*áu{´*áu•|3xú|y¹*•|3xú|!y8}E}R}H•|3xú|!y8}”}*•|3xú|!y8}”}*•|3xú|!y8}Ï}R}*•|3xÜ}ì}kX•|3x„w~Háu×w¹@~¸lºl CºGR4ÇW-0Éʪ°×ÙÝÞèíôy’¸…‹²´¸¹ÃÈϧÅ!"ÓÙêF„„¾Îßî:;G]ª^% äS~úÐZ(HUdg_ãCEIyX),%)$/0PQRSeoz‹µ¹»¿ÍÒã '/0‡‰‹’?HJQs¤«­¯³¹½ë^ ½¬¸‡“ÛÕÝòSŠ5+WW/23458PQRSeoz‹½‹–¬¬­¸ÅÅÏÖî÷÷ÿ{¹¹Ø Qy‡‡ˆ“  ª±ÉÒÒÚÛÞî‘ÆÆì;¹ÂÕÕÖÝéñòõGH`‡º¼¿Ôæðñûˆ’“Ÿ&39uuÉàDU¹¾ÍÓ  ˜¿ÇíùZ[—¢ºÊÌãåL{š¢ÈÔßãIij¤¬ÇÛÝùû±ÄäÕç>F‹R8T#'-99;=>>A__apquuw¦®¯åèðô÷÷øüþ14=ADFFGMMOQRRVY]šš¡¦®®²²ÈØÙÙúýý!&&()*..266>BCEIIKLMQQSTU]^^cfnnpr˜›£ªª¬¯ÁÁÃÅÅÇÑÔØÝÞêíòòóBq|‰‰£³´´ÕØØêð÷û  ##(--::?CEILPPSTX\\_`dllps}}ƒƒ…‡¥­¶¶¸¼¼¾ÀÐÐÒÕÕâèìñò   x¥»ÆÆÉÍÒ××ÚÚçëëìïïü  !%%'++-22499:@@BCCDMMNSSUXX\`efinno}ÏX%())+Z{'>?åìðñ"$,.01=RY&()*BCEIKLMQSTUnoqrxª«­®¯ÅÇÊËÑÔB #%:<CEILPSTX\_`d}~ƒ„†‡Ž¶·¸¼½¿ÀÕÛÜâè¥ !%'+-235@ACEX\­tª­O_æ"#‚ËÌÑÒÓäåêëìCÜÝâãäúûaÊÔØO)/;s°Wa3ˆÁ%2FITgn\ž˜^ ¡S ‡-Ôæðˆ’!Z(Óìäa\¢µ}!` AWX%&FIJgÊS/Øì`ŠZ×'9;=>A_auw¦®å  "#$,-.01=MOQRSTY˜™¡¦®²ÇÈÙùúúý&'()*.26>IJKLMQRSTUZ\fnpŽ›£ª¬ÁÃÅÅÇÉÊËÑÔÝÞãäêíB{|‰¢£´ÔÕØê #$%(-:;<?PQSTX\]_`diks}ƒ…¤¥­¶¸¼¾ÐÒÕÕÙÛÜâèñòùú¥ÄÅÍÒ×Úëïü  %&'+,-24@BSUXX\efi­tª«­Š^éêñòŠ_/°±²´´|~?‹Œ’”¤ÙÚ®ÇÉÎÎÏÐÐÑÑÔÔÕרØÚßßáââããææçøÓV @@BCFGacdghüZ4|‚…ˆŒ””˜›ž¢|^è<_åë  'E â:{; ¨¬ns…\p9_uMÁÐSTR¡Xg0U9•½Ñ9_ru°Þ5M^”³·Üýþ7DÁßvŽ’·ØÙí.KÐó}¶¿Üïðÿ Sg~¬ø s›¨¯µîY Ûæêìîîïòó.^©WR5wR2o{¹‘ÆG÷R¹ÆHTS¡‹¢>—T >JLNÙíííïð÷Y ËäÜú×[•þ7\®+S¹×\|‡Œ§Àäï 8_g¤Íàæö¡«©±·=Eoy|„÷]À·_^i,DR^ÉÚø$/?Q`kÀS{ïàV¸Í"àX(€Y ª±³¶·¸ÇÊËËÍÎÏ@[CSf”ž¢êÉQ©ITñû“Ÿ ]Gs{€ƒ„„…ŒŽ””®²³·ÙÛÜãúýýþCDDÞßáBv‰Ž’´¶·¾ÕØØÙíEIKKòóõ¥¿×ÚÜëïïðÿ  fgh)]•œ£ÍYŒþ  x~¨h£Z]ÁÈÏ1?w‰‹)^>KNNQ[s„‰’I^ ª·ÅË×Þèéêñò ©^ $®²Ùý‰´Ø×ÚëïÉ_d|µ5Wq)`+A^bdimõ ,7DFRV^bx|²µÉÚæø$/35?QUW`koqÒT].PjÐâø›òYÛåæè2]‚ŒR^Å6-’_ „679E-.0¬öø !s™›§¨­¯´µ»ÀÅY=MOQQRX\Û_<„@A«««õrrBDUÄV @@AABabbcZÎçßý$[6d[\›ä\·¾ÀÁÁÄ—˜›¢ªª«¬¬­®°¸¹½½¿ÆÇÊÑÞßèéøùyz{|}~¸¹¹¹¹º»?z{}……†‡‡ˆ‰‹“”˜˜š¡¢¥¬¹ºÃÄÓÔ‘’“”——ÅÆÆÆÆÇȤÃÄÇÎÓÓÔÕÕÖ×ÙÝÞââäFGHHHI®¾¿¿ÀÀÂÐâîïðñóùùûûüüþ++.u‘’“–ŸŸ  ¢¥ÐÐÔ$]‘v‡þrŒ ¼6wƒD_åìíññöü=AHIU„ÙÛñEíï ¨acmd`¤¯±³çì|¤`®  u§©­±²¶ºav„…ˆ‹› R '(Jµó•–¤¥U ©±´îöoy”™£§­[Œí[˜ ] ¹‰JN­±Ž²z~€†‰_ ÅÆÇÈÉÊËÑÒãäêëBÕÖØÙÛÜâãùú¥XY[\V[|–\&;±Êá>ì,R&IQnªÅ #:P\}ƒ¶¼Õ %+2@XªÖ_õ 7FVbx²æ6`¡_ %$&µ·ã?¤ß\|…=F¡©¿^)3456CSTÿ_ <L]ah.2PTjn¨Wh;@E[quz’Ùáããíöãìô,.4;DMOR]|®²ØÙý&(.6BIKQS]nªÁÃÅÇÝ=‰³´Ø #-:CPS\_}ƒ¶¼ÐÒÕñx¡µ×Úëï %+2@SUXe­õöt˜™èX*¯wˆY“;CFJQpuwx{„©±¸ÅÊÍ×áåæïð $9>_uãêì÷÷þ",0;FFMR…šš®²Ùý!&).6CILQT^^nªÁÅÑØÞêòòF‰´Øðû #-:EIPT\`ll}ƒ¶¼ÐÕâìò  ©ÆÆ×Úëï %+299@CCMMSX`fnn¨`ö™ÑR%  QS—HO$‘S„%  ±W6ZÎÎÖ×´½ÉÊÝÞ|““žž¹º  ˜¤¥¸¹’—¨¨ÆÇ<=âHˆˆÀÑãùü +AAIJ ±ÐqYÑêâ[5Q]lu‡Š´ÉÌ:<@`bvx|‚…ˆŒ•˜›Ÿ£©îôþ-.DNPS¨ÁÛð'(JKRS`bho¥«ÂÄÆÇ÷ƒœ¶Ëòý$;QS]_nu~„¯·½ÑÓÖzÒä &,3ATVYq«Q`¢¯q`©zZ'-BLOV^š[ˆú^3ÃŒ§ÀÏßäéï 8_g}¤ÍàæöMRZ‚›ªº¿ÄÊæñü/mt“®Þôü+Ly´ºú` v|}©ªª­±²´#T­Öˆ±ÖéƒU |<¡©©®oouvY+CZ £_ ãå¾ÀÃÊÛè&/¬W&VWX%(IJ«´ÐÐÐâââòóóöÿr””•––™££¤¥¥§©ìW¯|„ŒY;ANpu‰©®±ÅÉÊ×àáãã $+9;>_auw,]:Ë#+3?FNVkƒ”Ÿ¾ûþ ¦Üàø )@MYey€™©¹8;óö "(.5;Ptw|…‡Œ`«´µòÿÌ`ou[‚Õ^µvU_;Þòfõ_<HMRVWXZ_j‚›¿Êæñü/mt®Þôü+Lvy`@X]aag''(.22@FFJPTTaggjnnþª¸ÅÉÍÎ×ÞÞàèéêñò ÞWÁÑ—Æø z¡Ó^ËÇרD¾[^`¢´çìçQ  ±²'S‹'Y)Úèêòæ  '(€../166;=rsu¯°³@--35‡ˆ‹ÀÁÄ'_å"$0X‘œº¦Ç0_å™U‰?J­®±±uvvyy}…¶ÙVAb™Z!2PQRSeoz­Ö{¹¹ˆ±î‘ÆÆÖéGHº¿Ôæðˆ’™_ –¬ y‡;ÂÕ‡"R"'0!")1=LT[u†—¢³¶Òëß5T`j‹œ¬ÄãâS‹ÅÏî÷ÿQ ªÉÒÚ¹ñ¢WDU˜ÇùZ{¢Ôi¤Ä«¼Õçöøør‹˜™››ª­ Y ÊãÛùKZ  `?_jõ 7FVbx²æ0RlR¿ÔSÅ÷ ÒÞõ”Y¬±¶¸ÇÊÍÏÙáãåæïðö ýSQ‹¢>ýT } =ãä¯ w®½_bm3UoRX´òÿ”£†[…Æ^ EIhkú ÕçùoSe“ABïSPXg0/T¥ÀÏR»o\ORƒ…ŒŽ/`a2Tnï`p„8T¼xZ&0123458DUZZ·»¼½¿ÀÁÃÄÇÉÊÊÍÍÎÎÎÑÑÒÓÖ××’–—›¢¹ÅÅÆÉÊÏÏÑÖ×ÙÝÞèíîôô÷÷øýÿ !")1=CLTZ[uy†‘’’“““—œžžž¢³¶¸º»ÒØë      ?syz}”  ¡¤¥ªª¬±²´¸¹ÃÈÉÏÏÒÒÓØÚÛÞßäîõ 57EFTV`bijx‹œ¤¦§§¨¨¨¬²ÄÅÇÈãæì!""%(0;<==IJR^^l¤½ÂÃÇÎÞçéêêëìïñòõFI`|„„„‡ˆˆˆ‹‹®·¸º¼¼¾Ç×  :;;=>AAADDEFIJJø\d‘•œ£ËÍ#+3?FNVYkvƒ‡Œ”Ÿ¾ûþþ   Brx~¦¨Üàø )@MYehy€Œ™£©¹ 8;Z]¥¼ÁÈÏóö "(.156;?Ptww|ƒ…‡‰‹x_|­¸`§SšP[*AUèêòr¯‡ÀÁZ)HTdfg\q””(9DH_dgu|‚…ˆŒ•˜›ž¢>MƒÁDЧSA^ ª¶ÅÏ×Ýö $q¯*\¢óA ˜ÇùZ{¢Ôi¤Ä³Yº[,Mó\/01;<=stu°²³B345ˆŠ‹ÁÃÄœ`¬ÃÊÛè!&/Qs»ÀÅÊÔÖeR3åZ3e^×.å`p|÷]@ÿÿã]@ÿÿ¼]@ÿÿ š]@ÿÿ çV@ÿÿ |] @ÿÿ.oáu{´.oæv­\.oZzizž·.oz{´Îm¢u—z®z!¹7_ çV ×]ã]÷]¸V üW |]°] ¼]E W‰] š] Ò] Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\libtasn1\c:\libtasn1\lib\asn1.cc:\program files\microsoft visual studio 8\vc\include\stddef.hc:\program files\microsoft visual studio 8\vc\include\crtdefs.hc:\program files\microsoft visual studio 8\vc\include\sal.hexpr__inner_fallthrough__inner_data_entrypoint()category__inner_control_entrypoint()__inner_blocksOn()resource__inner_callback__inner_override__inner_typefix()ctype__inner_check'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ `] Dÿÿ!!Þa @ÿÿö?¨` @ÿÿ hßWa @ÿÿ0X @ÿÿy“JX @ÿÿKvyX @ÿÿ #9Åa @ÿÿ$·a @ÿÿ(‘a @ÿÿ-  ÎmZz´u\~j~n²Îm¤~´u³~„w´Îmê~´uþ~•{G´*áu{´ÎmFwXwqw„wwHáuwwƒ¸?¦ª³¸¦ª³€¦ª³c€ŠGRÇW€‚$-@oyšçêì~—­ºÒýG]§ÇËÏÖS!|yX$ya 9:<DEGQRSW[^_abhŒ“[$)z€€‚  #$&'),-/02?@Zinoxy™š¡¤¿ÂÍØãçêìûjoprsttux}}~†ŽŽ—§§«­¹¹º¿ÃÇÇËËÏÏÒÖÖØøúûý$"R&')/02i¡¿ÂÍØãûâS¢WcKRn "+88<CGSqqu|€–———œœ¡¡¥§¨ª­­®±±³¶¶¸¸º¿¿ÂÂÂÇÌÒ×Ýâéúÿmuz}ƒ†‡ŠŽ‘‘‘’’š››§§¬°°²·¹¼¼¿¿ÃÃÇÇËËÏÏÒÖØØ YdÈÓÞöôM RB{™¯ÔS#,n™t}޹]~Š‹S£Â#ýSþ/W/ƒƒ #%&,./?BZnpx{™›¤rsttx}€Ž™«¯¹»$=a Piiijj ‹‹‹ŒŒ&3)-.RˆŠ  &/:EMRdfs~†ÈÊÓÕÞàöøpu}޹ûR†[ ÏM RoSÅÅ)ïS//TõÔ5ZkÕÖØa4?M[x†˜¥§ª®±³·¸ºÿØO –¡¥¨¿ÂÇÒÝ·xZg&)-.155|‚ƒƒƒƒ„………†ˆŠ $%%%&-.../@ABCCGKKMopppqqu|š›››œçèéìññój~€‘‘‘’𭮝°±µµº»»»¼øý  \0˜^ÏSÛÍ-¡S•ª!AU!Z[k‘“ÎÙäüÊSÊT 8q—§­­³¶¶º‘JXK<Gu€’›jXKeŠZ& dehiu€Š‹ÈÉÌÍÓÔרÞßâãö÷úûk¦§ÆÇÊËÎÏÖר*\2Š^23óARгY g”§ÇËÏÓalzƒ‡Š’›§°²¼¿ÃÇËÏÒØüZ|^/18ˆEJgõeRÅR/åZÅa°²T1U u’“œ§ÇËÏÞ=îYNUX\]`aj.^§ÇËWRwRƒ3÷RƒTþ1—T8PTTTUU[[[\]`aaceijooopp ]]]^_abbdehhŠŒ–––———¦¦¦§²²²³¹¹¹º÷Y 9DQer}ÉÔß÷×[*7\€Wa·a zƒ‡Š¼¿ÃÒÀSryàVS`XKjp@amb ø ÉQITt«R!ÒT"+C|œéÿš2]½vÒ]hoöúra hmWnpq›a "BZ :ERfs~ÊÕàø$[d[\.ä\|„† yz{||€„„†êëìììííj—˜™šš›¡¡$a'//3„a rsu}~€Œ‘ R"­R%.p›»­[%í[, ]ópÛû-aMXY\]`a WXZ^_ab­a   6ZâV[–\Ö6aORU_$&z| jöøŸa  ¨W0Kcn7<GQS]dehŠÆÇÈÉÌÑÒÓÔ×ÜÝÞßâö÷ú hl’›§·ÇËϨ`hha¨a "ÑR6QSÐÉ+‘S6Z±Wƒ……%.Kp„›íñ¡±µ» ‘X$1238qYhÌ×ú[Q]בa غR&€š["š]„ú^ì#TæsÑ4ƒUh¬W$+./112388ˆŠCC||éhoššÒöúìWoú,YNTU[ceio9<DGru}€ìaö "%'*,.02u[õaöžRÞR?xÞW5¾['ÞaöçQ†'S¤$'Y }ˆˆŒ efhikÉÊÌÍÎÔÕרÙßàâãä÷øúûü0Xz™Zƒƒ %.BZp{›rsx™¯»_out_ecount_opt()__deref_out_opt__deref_out_bcount_opt() __post __deref __nullterminated_'b Dÿÿb DÿÿW @ÿÿ~€hc @ÿÿclTc @ÿÿ LVÜb @ÿÿ &:Àb @ÿÿ  #§c@0 !!Âc@0 ""6c @ÿÿ@@"c @ÿÿ<<«b @ÿÿHœ¬°KoÅgEHÅgEèKo*‚âlD‚älœ‚§‚6÷Ri·T6÷TALc7\-—b—cvÀb $$&= cw©U8‰cruvw:@A2],"c<AëNyU(WTq~«b'()*+,-./012345678D:<>Z4¤bTcLdcNQTehkELc ])Õb"Aíb0þsvy®=&3>NeþK>ŽNyU'NU*Æ^/^bs6c@QhNcAŽcuÏMA/U2a.ÿb5ˆrxZ=>>>ARihccQ]+c7zcp³Y3£_1“bquv~¬W!>RiÜb&>__pre __deref __elem_readableTo() __post __deref __elem_readableTo()__deref_inout __pre __deref __byte_writableTo() __post __deref __byte_writableTo()__deref_inout __pre __deref __elem_writableTo() __post __deref __elem_writableTo()__deref_inout __pre __deref __nullterminated __post __deref __nullterminated__notnull __elem_readableTo(1) __pre __deref __valid __post __deref __valid __refparam__deref_out_ecount()__deref_out__deref_out_ecount() __post __deref __nullterminated__post __deref __valid __refparam __post __deref __nullterminated__deref_out_bcount_part(,)__deref_out_ecount_part(,)__deref_out_bcount() __post __deref __byte_readableTo()__deref_out_ecount() __post __deref __elem_readableTo()__deref_bcount() __post __deref __valid __refparam__deref_ecount() __post __deref __valid __refparam__deref_ecount(1) __post __deref __valid __refparam__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __byte_writableTo()„Œ DÿÿŸŒ Dÿÿ¹Œ Dÿÿ##‡b @ÿÿnn|b @ÿÿmmIT @ÿÿkk™_ @ÿÿjjë^ @ÿÿii'S @ÿÿee1S @ÿÿdd8T @ÿÿbbdS @ÿÿ ``CS @ÿÿ ^^éR @ÿÿ \\ÞR @ÿÿ [[ÅR @ÿÿ YYºR @ÿÿXXÔS @ÿÿWWâS @ÿÿVVÊS @ÿÿUUžR @ÿÿSSR @ÿÿRReR @ÿÿQQWR @ÿÿPPGR @ÿÿOOQS @ÿÿHH‘S @ÿÿGGÀS @ÿÿFFob @ÿÿEE#T @ÿÿDDS @ÿÿCC¸Q @ÿÿBBT @ÿÿAAT @ÿÿ@@/T @ÿÿ ??¡S @ÿÿ!>>ýS @ÿÿ"==÷R @ÿÿ#<<­R @ÿÿ$;;wR @ÿÿ%::oS @ÿÿ&99S @ÿÿ'88ïS @ÿÿ(77S @ÿÿ)66ÑR @ÿÿ*55°S @ÿÿ+44R @ÿÿ,33™Z @ÿÿ.00$] @ÿÿ/**,] @ÿÿ0)))] @ÿÿ1((^b @ÿÿ2%%=b @ÿÿ3µ€½€Å€Í€Õ€Ý€å€í€õ€ý€ %-5=EMU\cfilor zux{~„‡õ)‰‹zG@~¸lºl CÑ+¸lºl C—78GROOWRPPwR::÷R<<'SeeTAA‡bnnS66°S44ÀSFFàŒ#éR\\ITkk™Z00)]((™_jjâSVVë^iikb00D#R33dS``ÔSWW$]**eRQQ­R;;ÅRYYSCCýS===bö0000žRSSÞR[[T@@^b%%RRRoS99ïS77/T??obEEÏŒ¸QBB8TbbØŒÑR551SddQSHHS88‘SGG¡S>>ºRXXÊSUUCS^^#TDD,]))|bmm_valid __refparam__post __valid __refparam __post __exceptthat __maybenull__post __valid __refparam __post__out_bcount_full() __post __nullterminated__out_ecount_full() __post __nullterminated__out_bcount_part(,) __post __nullterminated__out_ecount_part(,) __post __nullterminated__bcount() __post __valid __refparam __post __nullterminated__ecount() __post __valid __refparam __post __nullterminated__post __valid __refparam __post __nullterminated __exceptthat __maybenull__post __valid __refparam __post __nullterminated__out_bcount_part(,)__out_ecount_part(,)__out_bcount() __post __byte_readableTo()__out_ecount() __post __elem_readableTo()__ecount(1) __post __valid __refparam__in_bcount()__in_ecount()__in__in_bcount() __pre __nullterminated__in_ecount() __pre __nullterminated__in __pre __nullterminated__in __pre __byte_readableTo()__in __preßf DÿÿÌ4 Dÿÿn Dÿÿè~ Dÿÿ Àf @ÿÿ7 σ#׃& „--D#'+.ÀfØfÀƒ"èƒ'ìƒ'„.Êfòƒ**„+*)(( += _INTSIZEOF()) - _INTSIZEOF()) )t(  = (va_list)_ADDRESSOF() + _INTSIZEOF() )v( (sizeof() + sizeof(int) - 1) & ~(sizeof(int) - 1) )n(__alignof())(sizeof())( &reinterpret_cast() )__w648struct threadlocaleinfostructintunsigned intunsigned long [6]LC_ID [6]wchar_t *int *threadlocaleinfostruct::__unnamed_0002_1 [6]lconv *unsigned short *const unsigned short *const unsigned char *__lc_time_data *struct tagLC_ID *struct tagLC_IDunsigned shortstruct localeinfo_struct *struct localeinfo_structpthreadlocinfopthreadmbcinfostruct threadmbcinfostruct *struct threadlocaleinfostruct *__time64_t__int64__w64 long__w64 intsize_t(void)x_CRT_INSECURE_DEPRECATE()  size_t __cpd @ÿÿvŒ @ÿÿiŒ @ÿÿed @ÿÿXd @ÿÿ!Z @ÿÿ÷Y @ÿÿIŒ @ÿÿ¶¶¶‰tŽt¶"¶7Ç4ÿBC÷Y OŒD XdpdQ4 !Z edIŒiŒö f4vŒëi[ŒT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , va_list _Args);_SecureVFuncName_CRT_INSECURE_DEPRECATE()   __cdecl ( ,   ,  * );_HType1_HArg1_HType2_HArg2_CRT_INSECURE_DEPRECATE()   __cdecl ( ,  * ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   ,  );_TType4_TArg4_CRT_INSECURE_DEPRECATE('b DÿÿW@ÿÿb @ÿÿHœ¬°7Wb“bURE_DEPRECATE()   __cdecl ( *,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_CRT_INSECURE_DEPRECATE()   __cdecl ( *);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( * ,   ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_FunctionCall__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_'b Dÿÿ|^ @ÿÿ,7Š^ @ÿÿ *HÂ΂ã‚ó‚HÂ΂ã‚ó‚ ßc  #&',034ØO -|^,äc "%&',/234d&d3Í ,- R#I^"-/R0Š^òc#&,-03öc "%&, _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(, , , , _s, , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(, , , , , _s, , , , ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0'b Dÿÿb DÿÿrW Dÿÿd Dÿÿ`] Dÿÿ X DÿÿÞd @ÿÿz—·d @ÿÿ [j¢d @ÿÿ JWÍU @ÿÿ"FùU @ÿÿÉãU @ÿÿ‘¸=V @ÿÿƒ"V @ÿÿÑûAU @ÿÿ ©ÃTV @ÿÿ"›¦V @ÿÿ$Š”ÞW @ÿÿ'wƒÌW @ÿÿ*dn€R @ÿÿ.TZØQ @ÿÿ1BGS @ÿÿ449÷Q @ÿÿ8#*2R @ÿÿ;·W @ÿÿ>çQ @ÿÿBð÷ÉQ @ÿÿFÒå"R @ÿÿKµÆìW @ÿÿO`¨©Q @ÿÿR6Q?d @ÿÿS++5d @ÿÿT'')d @ÿÿT$'Xe@0 U%%je@0 V&&’ @ÿÿW!"Ko¯ƒ`HKoǃՃàƒëƒöƒKoǃ„'„Îm†u@·Îm†u@·Îm†u@·Îm†u@·Îm†u@·Ô(þuvvHnEHnE.oáu{´Háu{´.oáuvS·Ô(áu{´.oáu{´.oáuNvv·.oáu{´.oáu{´.oáuwvv·.oáu´už·.oáu‡v¢vÁ·.o¢u´už·.oæv­\>„J„.o]„û·xçQñ-12ÇWM”–$''((8äå$-BBZbuužªªÞîÿ23'Y­»ÀG]½Â‡dÕßà°SÒV‹pdàPe€ˆŠ“ùUÉÙVoˆ™ZÜ&X[`e ÒÜßåìïö&+™_¡g%E¶¹¹º»¼½¿ÀÁÂÄÅÓÕÕרÙÜàáãäñóóôõö$&&'()578CEFUWWXYegijklmx|~£ÑØÚèíFSV_y‘–˜›®ÉÎÐÓÖàäñõ"&&).9"R¶à+m"VÑ¢WL¶º»¼ÀÁÄÄUXklÝÞ)+^gÕØâãððóô¢dK^bfë^¡R&'eïÔSYÝTVœ”ZIõ(€€€‚] dqrww|Š‹š =VW'7KKXÜÜ &XY[`ae ¡ÒÜÝßåæìíïö÷&+,-../}d¬¹º½ýd}ƒ…”&3F+==@BIJLMNggiinx€€‘””››££¹¼ÁÁÕÙÜááãó&77EEWgik||€Øèî–Î×&:PV`dh‡‹–RØãôR,..d '(+-.124ØOÞ)k¸Q&ØQCxZ›ckn{||}}€„”––›œœœŸ  ¡¡£§z~€€€€€‚ÓÚÛÜÜÝÞàäååèèéééììíîñòò !#,-.BBBFIIILLSVXYZuuuy|||“˜›žªªª®±±±´´ËÐÑÒÕØÜÝÞìíîÿ   $)*+,-./233555889:=>>ø\$ 8=?ACFHJLTVWprtvy{}”™›œ¥§©«®°²´Xd<?ÀØd\fS5¡SX`ÜåìöAUªáYeloqqrstwxƒ‡ˆŠŠ‹Œ‘d®·»¼ÀÀÁe}j3KOOQQSV\^^__abbcceffgiÊTðOQJXÞŠ^ ]^fgÔÕáâòóŠ_  $_``abó\ )*+klmüWagk|^w\Óàñœd- \\]]^^_cfffggkmÌÓÓÔÔÕÕÖààááââäññòòóóõEÐÈ!e\&F‘¢ÕbKU5d'+9??žedA»Øjlm’¤þª±ÀÁžR-/TUú‚·ENUÙçøÞWxìL´8îY ÔÞÞßMRSUV^`®²µ»ÀÀÁÞd{÷Q$!.wR +—T®ÀÀÀÀÀ·W·d\…ˆ€RUàVqŠÄ©Q7ÉQÓ(ITÜ aæí÷)]FJLVWy}›œ®²´)^ :<=AEIJKLMNP)d$&’Øãéôú2RÒT|š “’d \Òd\be~…Ž‘›ª°³³¹º½¾ÛY dopqrsˆ‰Š‹Œe~…Ž‘„d  Ìä\1 !"#,124Z[[^m“žŸ ¡¢¢ËÖ×Þßßâãäååæîïïððóôõöö÷$] 8=ATpt™¥©$e~…’­R[ßÍU" ]Ø a–Î'-eˆŽ‘6eˆŽ‘_%%6:<<`acµ¶ÒÓðññ#$$45CTUewxzÓ “Ë$?d +FG‘‘ ¡¢¢d¬º»?e‰’¨W ¶¿ÀÂÄÖÞßßàHe€…†“ÑRܱW%N}œœ¡ñôôõõ€ééñò!16IIi||¢±±  55=>qYßñd{‚ˆƒUÑ‘É"ãU‘ã]'¬WJailn||  ÓרÙÜÞààáãFij(ÓàñÌWe£"ìWa_Öäõ,YÔÕ,] ?CHrv{§«°Ld 9?@EFG’ž¡£¤Œd $%&()+66bdegiiÌd\^Pathwchar_t (&_Drive)[_DriveSize]wchar_t (&_Dir)[_DirSize]wchar_t (&_Name)[_NameSize]wchar_t (&_Ext)[_ExtSize] (const wchar_t *, wchar_t (&)[_DriveSize], wchar_t (&)[_DirSize], wchar_t (&)[_NameSize], wchar_t (&)[_ExtSize])size_t _DriveSizesize_t _DirSizesize_t _NameSizesize_t _ExtSizeconst wchar_t *_FullPathwchar_t *_Drivesize_t _DriveSizeInWordswchar_t *_Dirsize_t _DirSizeInWordswchar_t *_Filenamesize_t _FilenameSizeInWordswchar_t *_Extsize_t _ExtSizeInWords (const wchar_t *, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigneŠ^@ÿÿ|^@ÿÿ Y @ÿÿ àX @ÿÿHÂ΂ã‚ó‚HÂ΂ã‚ó‚MƒÑ+}ƒƒÑ+}ƒ Yßc'döàXèX|^Š^äcòcÍe_t _Sizesize_t _SizeInWords (const wchar_t *, const wchar_t *, wchar_t *, unsigned int)const wchar_t *_Nameconst wchar_t *_Value (const wchar_t *, const wchar_t *)const wchar_t *_EnvString (const wchar_t *)const wchar_t *_ErrMsgconst wchar_t *_Driveconst wchar_t *_Dirconst wchar_t *_Ext (wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *) (wchar_t (&)[_Size], const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_PathResult (wchar_t *, unsigned int, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_FullPath (wchar_t *, const wchar_t *, unsigned int)const char *_Destchar (&_Drive)[_DriveSize]char (&_Dir)[_DirSize]char ('b Dÿÿb Dÿÿ`] Dÿÿ rW Dÿÿ!!d Dÿÿ""šf @ÿÿ È~f @ÿÿ ~‘f @ÿÿig¸` @ÿÿHZf @ÿÿç1êe @ÿÿ§ã¼] @ÿÿš£š] @ÿÿ"U—®e @ÿÿ&>Rú^ @ÿÿ)+e @ÿÿ.§ôçV @ÿÿ3VŽ÷] @ÿÿ6KRã] @ÿÿ90@’@ÿÿ:%%KoÞz‡„M²Îmºw´u·„ï³Hâ„ì„´u…Ä´ÎmÞzizôz´ÎmY…Zz7¸Îmáu{´.oZzizž·.oz{´Îmì„„…M²Îm|{´Îm¬…ñmƒmô´Îmù…—z®z`¸.oáu{´.oæv­\XošGR*ÇW<Oltu|}µÀÉÕÕ##OP‰²G]lÙâôÿ‡bmÄÍÎS¢ëVñùUØLNNOOQ§¬®±Ùçíïò'€†‡‰Âe>Bë^<4fMjoxyz{„…†‡’•—™›Ÿ¡£¥§©«­¯±³µ·¹ÄÈÌÏÐÑÔÚÜãåéíî÷ø  )*+,-./0123456789:;<=BKS èW@1::k¶·ÃÄÍÎ]h‹³´·¸»¼ÈÌô~ŒÁÐÑ(*+,-./0123456789:;<=E´µÝe X`fnt~€Š‹Œ’’&3&6689;<=NNO^~ª¼Ëâ$M[[m¬íù PosT\‚‡ª«¾¿ÇR®¶ÆU‹ÏZklmoR-oSi¨üïS¤/T°ZmÏe X]`–KNPRTUWØOºq½¸Q¸8T8¸VVaxZÏYcehhklmqqtuuwxx||}~‚‚ª·¸¹¼¾¿Á  #$©®±³´µÈÉÕÕÕÙÜÜÜßßéïòô÷üýþÿÿ ###'***--luvzz~††ŒÁÄÄÈÈÌÌÏÏÐÑÔÔ×ÙÙÜàââåééìíîòôô÷øýÿÿ (*+,-./0123456789:;<=EOPPSTWWWZZ[\`aa€‰‹ŒŒ¦²³´µ·½½¾ÁÄÄø\*¬³¾¿ÃÄÏYbewy{‚‡Žª¯±²ÐÒÔÖÙÛÝßëðòó "$')+-¸`HXd58f jw‹Ž‘”¿ÀÃÇË'ASi¦ñ¡S®´e§¡e §¶¶¶·¸¸¹¹ºÃÄáeX~€ŠŒÊS´¸È/ŠZYklnmØÙÜáâåóô÷øþÿ Š^ö÷Š_)"@GHIJKO©¹º»¼½¿ÃÃËÍé   êe§Uó\Yqstª½¾¿Sf‹üWVc}¼]›øN|^õ|bl·Ãœdêõõöö÷÷ø|e X\^`afhioqr‰‹E U¦­=¦æG}¨eR,ÅRÑ2ŽNT`afhioqr‰xyz{„…†‡’•—™›Ÿ¡£¥§©«­¯±³µ·¹ÄÈÌÏÐÑÔÚÜãåéíî÷ø  )*+,-./0123456789:;<=BKT²UÙì*â0¼NUãú®e>÷Q¾K€Á WR+wR·»Ì€ÆG÷R“ÊHT´—T-«µ¶¶¶·¸¸¹¹ºÃÄÔmxxx„„„ÜÜÜÜååååøøøø    7\‚×\IW~†×]›ŸHN÷]LG¹Ã·f¢ª¼ÀS˜ ÀU\àXä©Q·ÉQ¸füRéR4IT=µ©U±)]³eޱ²ÙÝßòó'+-‰]V\)^ 35689:;<=?’%åÒT¼Ò] ›ŸçõølqsuS[’_ ­ØÙßãì󨺼U^fLTY„ꤤ¥¹dS7ä\-"@FKO©µ¶·¸¹ÀÁÆÆÉÊËÌÌÍéøùüýþÿ  $] ¾Ãbw{¯ÐÔð"Df wŽ‘”ÀÃÇË'A R¯·­R–ÎU§°¼¼ÇרÚÛîHNT¡ª®²º ] D¬íP‡6Xj–\lÙâôÿ–f~‚„Œ_0355KLYª@UVXš›§©ççéKl€fj¨WYlmnmÙÛÜâäåôõ÷øÿ  §¹º¨`ºÑRjœÖ1S9QSiª‘Sžß±W!=mwx‚FMMˆ‰ÆËÜÜýýÿÿ**WW`a½Äcß‘e§ºRÐ1š]V¡ú^QÌšf¡CS6#T³¶ƒU V§>HIj~¡¦Yåæã]1]‹¼fçTcf¿¬W9hh¶¸¸ffõüjqzz††~†ŒŒ¤®¶··ºÁÌW#ìWBŸq†,] ¿ÄÏy‚‡ÒÖÛ $)Œ`¤®¯¶Œd©¼¿ÀÁõ_   )>BjqžR.ÞR3ÞW |ÉI‘’ß -Z~f~çQ¿"OŒÀ'S:çVV§e ª¾¿ÁÇÉÉËÍÎ×°SôšÓ°]@BDFGIMMQV[]_…”Ÿ¡™U°î )Dª™Z h³·»Ìô~ŒÁE´™_;ÙeX_ffghllnqt|}}…ˆ‰‰‹‘‘”"R¹nt¿âS5"VÚ¢W6;qq¶¹¹ºglnqt½¿÷ÄÄÈÈÌÌÏÏÔÔ×ÙÜàâåééìíîòô÷øýÿ ¥º¼RÂFÔS0TVí”Z 8NOQMþþÿ ýS¬ýT¨âäåæé=VÛ=fmx„Q_stChconst char *_SrcChsize_t _SrcSizeInBytes (const char *, unsigned int, localeinfo_struct) (const char *, unsigned int) (const char *, localeinfo_struct)const char *_Ch (long, char (&)[_Size], int) (long, char *, unsigned int, int)ldiv_tn Dÿÿ!!ßf Dÿÿ""Ì4 Dÿÿ##„Œ Dÿÿ$$Á˜ Dÿÿ&&¨Ž @ÿÿ“ÅŽ @ÿÿI“Ž @ÿÿFFúŽ Dÿÿ@F @0AA$@0BB;@0 CCR@0 DDi@0 EE^Ž @ÿÿ ==RŽ @ÿÿ <<EŽ @ÿÿ;;1Ž @ÿÿ::!Ž @ÿÿ99 Ž @ÿÿ88ú @ÿÿ77å @ÿÿ66Î @ÿÿ55· @ÿÿ44¦ @ÿÿ33‘ @ÿÿ22‚ @ÿÿ11t @ÿÿ00g @ÿÿ//Z @ÿÿ..P @ÿÿ--G @ÿÿ,,= @ÿÿ++2 @ÿÿ**' @ÿÿ )) @ÿÿ!((     *żμۼì¼ú¼*Ô(Ü}**filor zux{~„‡õ)‰‹zG@~¸lºl C C^Ç\ñö')NT\{‡™¥¯ºÇäïÿ"(28[ns{ƒÐ*G ,±ÀÁq†ßŒg/U|¦»å#3t„ù0‡ŽE5:?DKPW\cdeinu}„œ¢P-Vu}ƒ•«Ãæû$,4?CGKOSWpwˆ.™U—˜¢Wâê—©‚12‚ŽDÝáð9CLQX]optv~ƒ…’’’“£¤âŽžáâåæéê"LS‘§¨ ³ëŽ¡ cdejTc¶4f š¼¾ÀÆÇ¿¿t0Sy¡¸â  0>BFJNRVfim1½?¢ýT ™±³·ò÷ûÿF=R+O]^_`abcdefghijklmnopqrstˆ‰š›œžŸ²³´ÂÈÉÊËÌÍÎÏÐÑÒÓÔ)*+9:@DHLPT\]^_`acd|}Ù-}ŽCÚÚÝ 9Ceiopv~…—¥ŽIÊ&3‰°ÕÖרÙÚÛÜÝ+ar‡¡­®Àæöcd>¸ÂÄÆU¿¦3v3afÆr1§¨©ª®·Á78:;ABDEFNOPRZ[\^ghijrsuw‚„† ¡¢¥¦©ª·¸hU±èX™ˆYÛñúþx_ú¨`âæê¸`Ñhc:;DEPR\^iuw„†¢¦xŽBÑ×ÛÝâæêíñöþ  "8BO[hs‚¡¨Ž”a\ px\ží~‡‘q`e³‘2o…ý>!Ž9°ÕÖרÙÚÛÜÝr‡äJ1Ž:PvŠµß -;j~ôVqŽ AÌÏ)8BO[hs‚¡ñŽ¢¤¥ª±ú^Ô¼šf Z#.QRwx‹Œ ¶·àá  ./<=AEIMQUeghkl€ï/ú7ðñòóôõö÷øùúì|ƒU—˜³Y$PQvwŠ‹°µ¶ÕÖרÙÚÛÜÝßà  -.;<gjkr~‡“ŽFI›ŒYœÛðñõöúþX_üZòøúÌ` E–u[ñå6 èEŽ;ÞàŽŽNÇUþNORSTUVWY\]^_`abcdefghijklmnopqrstuxyz{|}~€‚ƒ„‡ˆ‰ŒŽ‘’“”•–™š›œžŸ ¡£¤¥¦§¨©ª«¬¯±²³´·¸¹º»¼½¾¿ÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÞáâãäåæçìïñòóôõö÷øùúûüÿ    !"#$%()*+,/01234589:=>?@ABCDEFGHIJKLMNOPQRSTUVWX[\]^_`abcdefhilmnopqstuvwx{|}€‚ƒ„…†ˆ‰µcde^` oxÞaíÞd­®®e×~f"(ŽÌÎ5‘’“”§¨©ª¼½¾¿um^Ž =WX~€‚Ö,—TŸ–––——˜ž¤¤¤¥¨¨¨©WaÛÝ·4b!I·Ž˜ÑÔ×ÛÝâæíñöúþ "ÀU¾àV o¼¿ÉŽœ67@AMNYZfgqr€Ÿ ¸ÁÒTÚeop~’_'–±³µ¶ÑÔ×ÛÝâæêíñöúþ "5;?EKRW^nw}†œ¦2*KYz„Ž–¤¬¹Äãçü!%15Xx‚‰Ó+RŽ<¢4²Ž”Û_þ$[ôöDfVu}ƒ•«Ãæû$,4?CGKOSWpwˆÆÄŽd›ÊÌÏÑ×ÚÚÛÝÝÝáâæêíðñöþ   ")58899:?BBCCDKLOOPQWX[[\]cdeehhiinooppsstuvv}~~‚‚ƒ„……’’’“—œ¡¡¢£¤¥³U —±³ÆÑê  ¼ ]KXêëð Ž8êëì b­Ž”6š6`ÖŽœÍ·reemallocYYSIZE_MAXIMUMYYFREEYYMALLOC()((void) ())emsgid((YYSIZE_T) -1)_asn1_yynerrs_asn1_yydebug_asn1_yychar_asn1_yylval_asn1_yyerror_asn1_yylex_asn1_yyparse"yacc.c""2.1b"c:\libtasn1\lib\coding.cc:\libtasn1\lib\parser_aux.hASN1_TYPE node (ASN1_TYPE)node_asn *pointerconst char *name (node_asn *, const char *)node_asn *node (node_asn *)long vchar *str (long, char *)unsigned int value (node_asn *, unsigned int)node_asn *down (node_asn *, node_asn *)node_asn *rightconst unsigned char *valueunsigned int len (node_asn *, const unsigned char *, unsigned int)unsigned int typec:\libtasn1\lib\element.hchar *nameint name_size (node_asn *, char *, int)const char *valueunsigned char *value_outint value_out_sizeint *len (const char *, unsigned char *, int, int *)ASN1_TYPE elementvoid *iderchar *ErrorDescription (ASN1_TYPE, cn Dÿÿ+„ Dÿÿ""ñ„ Dÿÿ## Y@ÿÿÙÙ–\@ÿÿ Öט^@ÿÿÒÔ6Z@ÿÿÏÐ.^@ÿÿ ËÍqY@ÿÿ&ÈÉ…\@ÿÿ+ÅÆTc@ÿÿ.ÁÁhc@ÿÿ1¿¿Þd@ÿÿ4½½šf@ÿÿ8º»Þa@ÿÿ>·¸Ì`@ÿÿD´µq`@ÿÿH±²6`@ÿÿP¬¯Û_@ÿÿW§ªx_@ÿÿ]¤¥Ç\@ÿÿd ¢~f@ÿÿižž¨`@ÿÿo›œWa@ÿÿu˜™®e@ÿÿy––ú^@ÿÿ|””¸`@ÿÿ‘’f@ÿÿ‡e@ÿÿŒŒpV@ÿÿ’‰ŠhU@ÿÿ—†‡‘e @ÿÿ˜~~M‹ @ÿÿ˜x|_‹@0 ™yyw‹@0 šzz‹@0 ›{{ƒU @ÿÿœtt_ @ÿÿrr=‹ @ÿÿ jr¨‹@0&ž kk¾‹@0&Ÿ llÔ‹@0&  mmë‹@0&¡ nnŒ@0&¢ ooŒ@0&£ pp3Œ@0&¤ qqE @ÿÿ¥ ,,™U @ÿÿ¦ vví[ @ÿÿ§ ccV[ @ÿÿ¨ bb†[ @ÿÿ© aaš[ @ÿÿª ``¾[ @ÿÿ« __­[ @ÿÿ¬ ^^\ @ÿÿ­ ]]×[ @ÿÿ® \\*\ @ÿÿ¯ [[\ @ÿÿ° ZZu[ @ÿÿ± YYd[ @ÿÿ² XX@[ @ÿÿ³ SS[ @ÿÿ´ RR$[ @ÿÿµ QQåZ @ÿÿ¶ PPüZ @ÿÿ· OODf @ÿÿ¸ JJcf @ÿÿ¹ IIôŠ @ÿÿº HHSf @ÿÿ» GG©U @ÿÿ¼ BBc @ÿÿ½ AA·T @ÿÿ¾ @@ÿb @ÿÿ¿ ??Z @ÿÿÀ >>³Y @ÿÿÁ ==/U @ÿÿ <<£_ @ÿÿà ;;íb @ÿÿÄ ::Æ^ @ÿÿÅ 99a @ÿÿÆ 887\ @ÿÿÇ 772] @ÿÿÈ 66Q] @ÿÿÉ 55NU @ÿÿÊ 44 ] @ÿÿË 33U @ÿÿÌ 22U @ÿÿÍ 11èX @ÿÿÎ ''„ @ÿÿÏ %%e @ÿÿÐ „ @ÿÿÑ !"#'()*+,-HÏy‚y•yáykX•|3x„w~Îm•|3xú|!y8}E}R}HªxÃx xÏxÜxÎm•|3xú|!y8}Ï}R}Hªx_y xÏxÜx*•|3xÜ}ì}HÅgEKoÅgEKo¯ƒ`HKoÞz‡„M²ÎmZz´u\~j~n²ÎmÞzôz{{Ÿ²ÎmÞzôzá²Îmºw„{•{{¶{Á{³Îm||„{•{ƒmI³Îmôz„{•{ƒm‡³Îmºw´uÌw„w×w·³Îmºw´u·„ï³Îm¤~´u³~„w´Îmê~´uþ~•{G´Îmì„„…M²Îm|{´ÎmÞzizôz´Hâ„ì„´u…Ä´Îm¬…ñmƒmô´Îm7mQmlmƒmšmÎmÛmñmƒm,µWµÔ(*Ü}.opµÔ(*Ü}*‡µ‡µ‡µ*™µžµ£µ¨µ­µ²µ·µ¼µÁµÆµ‚«ËµÐµ}«Õµs«x«Úµ@~¸lºl Cr zux{~„‡õ)‰‹zG@~¸lºl C Cߵߵãµ7’ÇWoÇ\ G]nV‰yU†9‹c‚V‰Âe–kÜ”ZqTcÁ4fôŠHýT‡Š¥ªWlz‹\=‹jopq&3v†[aÆ^9/U<ÏX¢ï`µa8\Z˜^Òx_¤¸`‘8fa\¯\ÆA^ÌÓe eŒ¡eŒ!‹]*\[³Y=SfGüZOE,†‰Œ‘”–˜›ž ¤§¬±´·¿ÁËÒåZP…\Åå`µ%‹^U1NU4.^Ë®e–·T@÷T¿Á×[\7\7×\’ž ¤¬²´×]‘Wa˜·f»€YÈÍ@[S „©UBI^ÍÔ ‹O)‹_2]6Ò]›·ra™œU2YÙÛ_§ûP„%Z>$[Qd[X\]DfJ€QU†‘±´º­[^í[c ]3íb: ‹R-‹`M‹x~66ZÏV[b–\Ö6`¬–fž_rt·ŸVŠYÙß\¡¤©­ÿ_¨ÿb?fhU†¨W ™œ¡¤©­Æ×ÙèX'ˆYÅÉËÐÒÖ¨`›ha˜hc¿±WpqYÈ[RQ]5Q`®q`±cAñd½‘e~Œ‹X1‹aš[`ú^”šfºƒUt†‘’”–˜›ž ¤§¬±²´´ºCZÏÔ£_;cfIãZ¬Wky˜›ž ·ŒYÅÉËÐÒÖÌ`´ìa·u[Yõ_”–§õa¸‹Y5‹bþÈÌÏÓ¾[_^`¯Þa·Þd½~fžpV‰ðS™Uv‹[¢Wm{ YÙaaš[``ú^””šfººƒU(t†‘’”–˜›ž ¤§¬±²´´ºt†‘’”–˜›ž ¤§¬±²´´ºCZÏÔÏÔ£_;;cfIIãZZ¬Wky˜›ž ·ky˜›ž ·ŒY ÅÉËÐÒÖÅÉËÐÒÖÌ`´´ìa··ìƒ"¬‰#u[YYõ_”–§”–§õa¸¸‹YY5‹bbþÈ ™ Dÿÿn DÿÿÌ4 Dÿÿßf Dÿÿr– Dÿÿ**±– DÿÿDD¢ @ÿÿ\a†˜ Dÿÿ YYQ˜ @ YY¼’ @ÿÿ@R“ @ÿÿ`>Z— @ÿÿ é'4— @ÿÿ$˜åÍ– @ÿÿ%jj¶‘ @ÿÿ&ffA‘ @ÿÿ'``[‘ @ÿÿ([[T‘ @ÿÿ)LL¸— @ÿÿ*€€— @ÿÿ-ŒŒ – @ÿÿ.33‹– @ÿÿ0++*żWÈiȺŠC*żÈiȋȢȯȽÈÇ*żÈiȋȢȯȽÈÑÈ•ÆKożÈiȽÈÑÈáÈHÈÑÈÉ/É***Ô(<É7vÉzÉ7~ÉÌtkÇ4 !l‘ÛJ¹à'GO ©­´µ»½ÇÈÉÌÑ'Yêð""ùû'“û‡—0’¡£ïñP—²—bÏáófBJ˜cdiˆ‰ŽÓÔØBCG‡ˆŒ°±¶×ØÝ $ÙVä®êÙ’õ ùy“©¯³´µ  Ù–n Dÿÿßf DÿÿÌ4 Dÿÿ„Œ Dÿÿ ¨Ž @ÿÿѼ @ÿÿxŒ³ @ÿÿ huŽ @ÿÿ .fœ @ÿÿ**Œ @ÿÿ))“Ž @ÿÿ''ð Dÿÿ"'@0 ##@0 $$5@0 %%S@0 &&¬ @ÿÿ,,  *żμۼHÀÀ7n*ÀÀ"¡ì¼XoÔ('À*Ô(*Ô(8À/·T8‡Ž%»À‡ $inory…¶¿Ç{‚‹ÀU€™U“ÉŽ–½¾ËÍÒT¼’_’¡£¥¸»Â²ŽƒU““Ž'.•³i‚¬Tm‚Tc¥|eimÄŽ •±³¶¶»¼¿¿ÀÁÆŒ)˜™šŸ¡¤œ*€¸¬ ,18>COQUW[]_¼y¶E’½?˜TkmmntýT &”¡¦¸¼¼ÁÃU“¡®¸¹Ž.±­Ž6i{>§ÐŽN…‡¦TmU26<AFGHIJKLMRSa£NU>CW[]ÆUŠ‹ÖŽ–´ÊÎ{€…‡ŠÖ|‚‡o#y„³¶¿/U1OQU_r œžŸ¤¦¾¿ÀÂÊËß}ƒ„hU¡¸èX”hcÀ¨Žú^®¹ long, int)void *_DstBufsize_t _ElementSize (void *, unsigned int, unsigned int, unsigned int, _iobuf *) (void *, unsigned int, unsigned int, _iobuf *)wint_twint_t _Ch (unsigned short, _iobuf *) (wchar_t, _iobuf *)const wchar_t *_ModeFILE **_FileFILE *_OldFile (_iobuf **, const wchar_t *, const wchar_t *, _iobuf *) (const wchar_t *, const wchar_t *, _iobuf *) (_iobuf **, const wchar_t *, const wchar_t *) (int, const wchar_t *) (const wchar_t *, localeinfo_struct, ...) (const wchar_t *, ...) (const wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, unsigned int, const wchar_t *, ...) (const wchar_t *, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, const wchar_t *, ...) (_iobuf *, const wchar_t *, localeinfo_struct, ...) (n Dÿÿßf Dÿÿ„Œ DÿÿÌ4 Dÿÿ à˜ Dÿÿ!! ™ Dÿÿ((¨Ž @ÿÿJͽ @ÿÿ-:© @ÿÿ++*żμۼXoXo3Ç4 }~„…—˜¥¦ÇÈÉ·T¿×O÷TUpV³V\}}„„Œ——¥¥´ÈÈ™U`©+‚ ‘Xku‚V]ª«¯³»Ç²ŽKkm”ª«¢mëN”œ¢UºëQRS[‘”¡ª«D$¬WuüW`¯°”'$‘_‰®4‘b¯³¶ÃËT‘vvŒ‘ýTa¯´À­ŽKkm¡$½-{•£&3\]^f4Œª>†™§ËÌŽN”œ¢R‘«Ub·ËNU¾Æ2NjtÞOku‘[kmprœ/U½ŸV^~~……‘˜˜¦¦´ÉÉr fuvw{‚•£¸»ÀÃ#ØOŒªhU¯èXahcèŽKH‘ke+A‘dú^°ƒU`QH‘qe1A‘” @ÿÿ C”r *, unsigned int, unsigned int, const char *, localeinfo_struct, ...) (char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, localeinfo_struct, char) (const char *, localeinfo_struct, ...) (char *, const char *, localeinfo_struct, char) (char *, const char *, localeinfo_struct, ...) (_iobuf *, const char *, localeinfo_struct, char) (_iobuf *, const char *, localeinfo_struct, ...) (const char *, char) (char *, unsigned int, const char *, char) (_iobuf *, const char *, char) (char *, unsigned int, const char *, ...) (_iobuf *, const char *, ...) (char *, const char *, char) (char *, const char *, ...) (char (&)[_Size], const char *, char) (char (&)[_Size], unsigned int, const char *, char) (char *, unsigned int, unsigned int, const char *, char)char *_Bufferchar (&_Buf)[_Size]rsize_t _Size (_iobuf **) (const char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, unsigned int, const char *, ...) (const chammm™—bŸ íîBJÙ—ê  (y{˜cdiˆ‰ŽÓÔØBCG‡ˆŒ°±¶×ØÝ $¢]sB“ ›ãñ‹Œ“—ª­®»¼“aJ—}„……†²¶~ëN?$IWacdij†ˆ‰Ž”¾ÉÑÓÔØÙ @BCGHM…‡ˆŒ’®°±¶·¼ÕרÝÞã $%*ë’j™ëc‹–+$EIRW‚•»¾ÆÉý =M‚’ª¼Ñä+«— eg:}°ò6}¥ÌT‘LlÇ7z/[`¢É 8NN’4—™•¬] >ER_´»ÆÏöý½?nõ}dÇ‚™›œ©©¯¯³´µãããääëñññóõû    #celnnpqst||}}~€€ƒƒ‰‰ŠŠ‹‹ŒŒŽ““””•––——œžž¦¦¨ªª««¬­­®®¯±·»»¼¼ÅÇÇÎÎÏâãäîôôö%(()*17ATYqqsyzz„–™™šžž­®·¼¿ÇÇÊÊßàáéíîù-//24Q[[``ggiƒ“––—¢ÂÂÈÉÉÓåèèììöþ   /889=— œ»»½½ÀÇÈÉÑØÙÚ&3"®ólƒÏáèÿ.gŒŸ®Öð&EqŠš´Ûíö"9__f4­>¥“-óƒƒÎîôôö((qq™™žž®¼¿ÇÊßéí-/`ggi––ÂÂèèììöþ  9¦•+f–#&—„…‰Œf˜mƒƒ…r „†ŠŽ’™Ÿ¡¢ØO ÷(q™ži–ÂèìxZçóóóô÷ú%fffgiltØfø’nt¸—|€œÃA‘`eHH¡—cã­CK!˜ eŠÔCˆ²Ù A˜ jÙH·Þ%a˜dÊ3(Êfj–$š–/ê–u *—…†‰ŒZ—êr““‚©¯ #}Ó—éü 'n{s˜qƒ…ü3ÁÄÄÄÆÇÇÈÉÉÒÕÕÕרØÙÚÚ¬W óô÷GKUZfgi¬¾œg²¼’A_Ì—!èúÿ.6GKUZswš¡££¦&lqt𡬾Æïññôì— ER‚»Æý<‚ªÑõhôge“{€¥{˜ciˆŽÓØBG‡Œ°¶×Ý$ŽN $IW”¾É M’¼ã*îYsš£¦ñô.—„†×bçè%&B7“ûŽÅw—ëõcsCK÷— a†Ñ@…®Õ@O›»½ÀÆÇÇÈÉÉרÚÝ –23 ‘ìóóû0 *ffmuœîÒ3++ÒT¦’_EJQ²ŽN™ÆÇÇÈרØÙê ar||€€•¦¬ÇÎÏâãä%%AGKTTYYz„„––­·¼¿ÇÇÊÊþ >N[ƒƒ““¬¾ÉÓÓåå,8AJ]_js¡[‘N[ãäñnpq||}~€€‰Š‹Œ”–—œž¦¦¨«®±·¼ÇÎÏâãä%)1ATYyz„–­·ÇÊàî24[ƒ“—ÈÉÓå8GGMMqq ¡—‰ŒÉÚD $(/D—žÆÈ×ÙÄ—æîîîîôö27$```agi¢Téêðþ >NQSUV,/13<lstw†™­Žê airœ¦¯±·y4ÈAJ]_js  –.<DQ^²ºÅÎôü 9§ÎÍ–jGHKMNOm—êùüþ&afrrä›®êRé0AJ]_¶‘ f*sšáQ/OOö–v 6˜ gŒÖEŠ´Û"“Ž_“'.q¥{<DQ^²ºÅÎôü 9§ÎVVß—ëû0)muœ¨W ÀÄÌÑÕݨŽj(’6w¡ÆH—­®²¶è—+!=ERgl€‚Œ‘³»ÆÖÛõý:<EJ€‚Ѝª´¹ÏÑÛà"'“ÅQ“œãäñ‰Š“”–žª«­¯»Q˜WY`¬ÇÎÏâãä%%AGKTTYYz„„––­·¼¿ÇÇÊÊþ >N[ƒƒ““¬¾ÉÓÓåå,8AJ]_js¡[‘N[ãäñnpq||}~€€‰Š‹Œ”–—œž¦¦¨«®±·¼ÇÎÏâãä%)1ATYyz„–­·ÇÊàî24[ƒ“—ÈÉÓå8GGMMqq ¡—‰ŒÉÚD $(/D—žÆÈ×ÙÄ—æîîîîôö27$```agi¢Téêðþ >NQSUV,/13<lstw†™­Žê airœ¦¯±·y4ÈAJ]_js  –.<DQ^²ºÅÎôü 9§ÎÍ–jGHKMNOm—êùüþ&afrrä›®êRé0AJ]_¶‘ f*sšáQ/OOö–v 6˜ gŒÖEŠ´Û"“Ž_“'.q¥{<DQ^²ºÅÎôü 9§ÎVVß—ëû0)muœ¨W ÀÄÌÑÕݨŽj(’@– @ÿÿKK – @ÿÿ@@ – @ÿÿ??þ• @ÿÿ >>ó• @ÿÿ<<é• @ÿÿ::Ò• @ÿÿ88¿• @ÿÿ77Ø3 @ÿÿ 66¦• @ÿÿ"55i• @ÿÿ#ÉtdÇkÇÇŒÇkÇǔǜÇDzÇÇêÇñÇpøÇ²ÇÇêÇñÇpÈêÇñÇpkÇÇ9ÈøÇkÇÇ9ÈœÇ9È C!w•"Ø36–?? –@8–@@@–Ki•É•7<é•: –?Ê3,Ò•8â•89:;<=k)Û•89:;<=ó•<D#,´ 56799;;==>?@ÄO+´•67:<>>?@}•)M–KK® 56799;;==>?@ö-#æ3))†•*Ž•+¦•5®•556677þ•>¿3ÏK89:;<=¿•7struct *, const char *, const void *, int, char *) (node_asn_struct *, const void *, int, char *) (node_asn_struct, const char *, void *, int *, char *) (node_asn_stë“@ÿÿ|€Ü“@ÿÿwz“@ÿÿquë’ @ÿÿ kÿ“@0 %%”@0 &&)”@0 ''>”@0 ((S”@0 --o”@0 55ˆ”@  TW§”  !VVÅ”  "VVÛ”  #VV÷”@0$WW•@0%[[0•@0&ddM•@0'ee¼’@ÿÿ0©“ @ÿÿ1oo®’ @ÿÿ2     *ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅoÆÆÆ•Æ***Ô(*Ô(ºl C CäÆ****ÅÆ?ÅWÅpÅoÆÆÇBÇ C ×sy~G’qw|O’qw|W’rx}“V'“V7“W_“gø’-A‘&Ù’[t“VQ“ey“h©“oB“d“q[‘%c’sy~ë’ uz€““ië“|T‘(¼’Ü“wÍ’te“gÕ“uz€¶‘'n’sy®’“5%%”@0 &&)”@0 ''>”@0 ((S”@0 --o”@0 55ˆ”@  TW§”  !VVÅ”  "VVÛ”  #VV÷”@0$WW•@0%[[0•@0&ddM•@0'ee¼’@ÿÿ0×@ÿÿ0©“ @ÿÿ1oo®’ @ÿÿ2     *ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅoÆÆÆ•Æ***Ô(*Ô(ºl C CäÆ****ÅÆ?ÅWÅpÅoÆÆÇBÇ C ×sy~G’qw|O’qw|W’rx}“V'“V7“W_“gø’-A‘&Ù’[t“VQ“ey“h©“oB“d“q[‘%c’sy~ë’ u ™ Dÿÿ±– Dÿÿn Dÿÿë“ @ÿÿIP¥‘ @ÿÿ@GÜ“ @ÿÿ29H‘ @ÿÿ*0&3 @ÿÿ''*żȤɸÉÓÉÑÈ*Æ*żWȤɸÉÓÉÅ*żȤɸÉÓÉÑÈ*Æ*żWȤɸÉÓÉÅ C#×,4CKa—˜+.37BEJNØf¨ŽXH‘+l‰4# ‘`mta˜S²NUÊf²Ž +.37AEJNXl¦¢ê‘+A“7N[‘__¢¥¦ë’5Lë“Js˜_„†D#U¬WtT‘uv“—¼’.EÜ“3TZlnq‡ž}d58LO­Ž +.37AEJNXl¢¥¥‘A&3&'>ªÞ ,.47CEKNamtþ‘"f˜[„„†r tvw…‡‹“—ž¤¦§_“Ÿ˜,/47CFKNA49*]zhQ¤Á“Åuh¥¡™µï ?R°9oW®~¾D‚dnËµÌ Nv†G2-™ DÿÿÆ @ÿÿ CÆë“ @ÿÿIP¥‘ @ÿÿ @GÜ“ @ÿÿ29H‘ @ÿÿ*0&3 @ÿÿ''*żȤɸÉÓÉÑÈ*Æ*żâÉ7n*żȤɸÉÓÉÑÈ*Æ*żâÉ7n C#×,4CKa—˜+.37BEJNØf¨ŽXH‘+l‰4# ‘`mta˜S²NUÊf²Ž +.37AEJNXl¦¢ê‘+A“7N[‘__¢¥¦ë’5Lë“Js˜_„†D#U¬WtT‘uv“—¼’.EÜ“3TZlnq‡ž}d58LO­Ž +.37AEJNXl¢¥¥‘A&3&'>ªÞ ,.47CEKNamtþ‘"f˜[„„†r tvw…‡‹“—ž¤¦§_“Ÿ˜,/47CFKNÈ*1Œ‘ž^J›`k¦»¦E!#¤„[>„m`ÚJ•¡€>)\„–Û(œfq'_*o[ª¥´Ò%a+w$ Dÿÿ›l@ÿÿdd”l@ÿÿccl@ÿÿ bb†l@ÿÿaal@ÿÿ``wl@ÿÿ__nl@ÿÿ^^fl@ÿÿ]]Xl@ÿÿ"SSÚj @@ÿÿ&FGËj @@ÿÿ*DEÃj @@ÿÿ.BCXj @@ÿÿ2@A1l@ÿÿ8::&l@ÿÿ=99l@ÿÿC88l@ÿÿH77l@ÿÿM66úk@ÿÿQ55ïk@ÿÿV44çk@ÿÿZ33Ük@ÿÿ`22Ôk@ÿÿe11Êk@ÿÿi00¤l @m//¸k @ÿÿ1o//¸k@ÿÿt..°k@ÿÿw--·l @z,,¦k @ÿÿ1|,,¦k@ÿÿ€++œk@ÿÿ„**Èl @"ˆ))k @ÿÿ1Š))k@ÿÿ((ˆk@ÿÿ’''Ûl @&•&&~k @ÿÿ1—&&~k@ÿÿ›%%lk@ÿÿ ##vk@ÿÿ¤""dk@ÿÿ§!!Pk@ÿÿ­  [k@ÿÿ²Dk@ÿÿ¸:k@ÿÿ½/k@ÿÿÂ&k@ÿÿÆìl @2Êk @ÿÿ1Ìk@ÿÿÑk@ÿÿÔm @6Øñj @ÿÿ1Úñj@ÿÿßýj@ÿÿâáj@ÿÿçêj@ÿÿëÚj@ÿÿïÓj@ÿÿóËj@ÿÿ÷Ãj@ÿÿû»j@ÿÿ  m @A  ±j @ÿÿ1  ±j@ÿÿ   ©j@ÿÿ¡j@ÿÿ$m @F—j @ÿÿ1—j@ÿÿ$j @@ÿÿ(þ…j@ÿÿ,üü~j@ÿÿ/ûûvj@ÿÿ3úúoj@ÿÿ7ùù5m @N;øøfj @ÿÿ1= øøfj@ÿÿB öö_j@ÿÿF ôôXj@ÿÿJ óóQj@ÿÿN òòEm @TR ññHj @ÿÿ1T ññHj@ÿÿY ïï@j@ÿÿ\ èè(j@ÿÿ_ ÚÚ!j@ÿÿc ÙÙj@ÿÿf ØØj@ÿÿk ×× j@ÿÿp ÖÖj@ÿÿs ÕÕúi@ÿÿw ÔÔòi@ÿÿ{ ÓÓëi@ÿÿ~ ÌÌsg @@ÿÿƒ ¿ÀPi @@ÿÿ‡ º»9i @@ÿÿ‹ ¸¹1i @@ÿÿ ¶·ÙV @@ÿÿ“ ´µ¦i@ÿÿ™ ®®ži@ÿÿž ­­”i@ÿÿ¢ ¬¬Um @i¦ ««ˆi @ÿÿ1¨ ««ˆi@ÿÿ­ ªª€i@ÿÿ° ©©hm @m³ ¨¨vi @ÿÿ1µ ¨¨vi@ÿÿ¹ §§_i@ÿÿ¾ ¥¥hi@ÿÿ ££Pi@ÿÿÆ ¢¢Ii@ÿÿÊ ¡¡Ai@ÿÿÍ   9i@ÿÿÑ ŸŸ1i@ÿÿÕ žži@ÿÿÛ (i@ÿÿà œœd@ÿÿå ››ym @zê šši @ÿÿ1ì šši@ÿÿò ˜˜i@ÿÿø ––ýh@ÿÿý ••õh@ÿÿ ““d@ÿÿ ŽŽŠm @  ŠŠëh @ÿÿ1ŠŠëh@ÿÿˆˆáh@ÿÿ††›m @………Õh @ÿÿ1……Õh@ÿÿ#„„Íh@ÿÿ&ƒƒ®m @‰)‚‚Ãh @ÿÿ1+‚‚Ãh@ÿÿ/¿m @Œ3€€°h @ÿÿ15€€°h@ÿÿ:~~Ê;@ÿÿ=||Ñm @A{{Œh @ÿÿ1C{{Œh@ÿÿHzz˜h@ÿÿKyy{h@ÿÿOxxnh@ÿÿUwwch@ÿÿZvvWh@ÿÿ`uuMh@ÿÿettAh@ÿÿjss7h@ÿÿnrr,h@ÿÿsqq$h@ÿÿwpph@ÿÿ|ooh@ÿÿ€nnh@ÿÿ„mmÙV@ÿÿˆllÿg@ÿÿ‹ffZ@ÿÿ^^õg@ÿÿ–XXëg @@ÿÿšRUãg@ÿÿžPPØO@ÿÿ¡OOÒT@ÿÿ¥NN R@ÿÿ©MMäm @©­LLÎg @ÿÿ1¯LLÎg@ÿÿ´JJR@ÿÿ¸HHôm @­¼GGÅg @ÿÿ1¾GGÅg@ÿÿÃEE³g@ÿÿÈCC½g@ÿÿÌBB«g@ÿÿÑ==£g@ÿÿ×<<œg@ÿÿÜ88“g@ÿÿâ66àV@ÿÿç44/`@ÿÿì33ˆg@ÿÿò22g@ÿÿ÷11sg@ÿÿü00jg@ÿÿ///j @ÿÿhh_l @ÿÿZZ>l @ÿÿ>>Íi @ÿÿ¾¾±i @ÿÿ³³Vg @ÿÿ..Gg @ÿÿ ***g @ÿÿ :g @ÿÿ g @ÿÿ !%15@EMShly€„ˆ‹¨¬*¢†·†®MD*̆چD*̆چD*̆ç†ô†D*̆چD*Ì†ç† ] ‡*¢†·† ].‡*¢†·†®MD* WìMD*̆`‡w‡D*̆•‡ô†D*̆¡‡w‡D*̆•‡ô†*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·†ÄTþ‡*¢†·†®M*¢†·†ÄTþ‡*¢†·†®MÁ+5ˆï] ]ÄTCˆÁ+5ˆï] ]†OD*‚ˆÄT“ˆ?E³ˆÄT͈7%M?Ĕ%MÄTöˆD*‚ˆÚ†?E³ˆ$‰7%M?Ĕ%M:‰D*‚ˆÄT“ˆ?E³ˆÄT͈7%M?Ĕ2MÄTöˆD*‚ˆÚ†?E³ˆ$‰7%M?Ĕ2M:‰?Ĕ2Mç†U‰D*̆ç†ô†D*̆چ?E5ˆfYç† ]y‰D*Ì†ç† ] ‡*¢†·† ]ÄT¹‡*¢†·† ].‡*¢†·†ÄTþ‡*¢†·†®M?E«‰Å‰â‰7%M?E Š2MÿMŠD* WìM?E«‰FŠQŠ7%M?ElŠ2MzІŠD*zŠgED*̆¦Š¼ŠÏŠD*̆¦Šw‡ùŠ W`‡®MÁ+ W¡‡®MùŠ W•‡ ‹ùŠ W¡‡®MD*Zö\„[†O?EYö\„[%‹7%M?E5ˆ»eï]Z‹l‹*¢†·† ].‡D*Zö\„[†O?EYö\„[%‹7%M?E5ˆ»eï]Z‹l‹Á+ï] ]¦‹Á+ï] ]¦‹Á+ WìMÁ+ W¡‡®MD*Zö\w‡?EYö\â‰7%M?E5ˆ»eï]Š*¢†·†®MùŠ W•‡ ‹D*Zö\w‡?EYö\â‰7%M?E5ˆ»eï]ŠD* WìMÔ(¹TAoÔ(¹THÇ‹Ô(¹TAoÔ(¹TH ]Ö‹*ó‹m` ]ŒÔ(¹TAo*ó‹1Œ S*ó‹1Œ SÔ(CŒ`Ho[TŒ^ŒeŒoŒÔ(¹TŒŒ ŒÔ(¹T¸ŒÇ‹Ô(¹TÀŒ ŒÔ(¹T¸ŒÇ‹Á+Í]CŒ ]ÄTÕŒÁ+Í]CŒ ]æVÔ(ÄT?E9ÄTP7%M?E¹T%MÄTvÔ(Ao?E9¡7%M?E¹T%M´Ô(¹TÌßïÔ(¹TÌ ŒKom`ŒŒ SÁ+m`ÀŒ SÔ(¹TAoKom`¸ŒŽKom`ÀŒ S?E¹T%MH ]%ŽÔ(¹TH ]Ö‹Ô(ê\4a„[æV?EêU4a„[PŽ7%M?EÍ]»eCŒZ‹Ž*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1Œ ]ŒÔ(ê\4a„[æV?EêU4a„[PŽ7%M?EÍ]»eCŒZ‹ŽÔ(ÄT?E9ÄTP7%M?E¹T%MÄTvÔ(Ao?E9¡7%M?E¹T%M´?EòŽ 7%M?E3+RzŠ>Ô(*gE?EòŽ[u7%M?E3+R(Só‚Ô((S`HÁ+m`ÀŒ S*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1Œ ]ÄT³Ž*ó‹1Œ ]Œ*ó‹1ŒÄT–*ó‹1Œ S*ó‹1ŒÄT–*ó‹1Œ S*ó‹1ŒÄT–*ó‹1Œ S*ó‹1Œ SKom`HŽÔ(CŒ`Ho[ÇÒ%Mã?EÇ»eÒZ‹ Á+m` ]dcÁ+m` ]dcÁ+m``H*ó‹1Œ SÔ(ê\4a Œ?EêU4au7%M?EÍ]»eCŒó‚Ô(ê\4a Œ?EêU4au7%M?EÍ]»eCŒó‚?EÍ]=\E>Ô(¹THÇ‹*M_%Mqo[ÇÒH%Mo[ÇH%MoŒ?EÇ»eÒZ‹ o[ÇÒ%Mã*M_%Mq*M_%MÄTÈ*M_%Mq‘‘H ]%‘o[ÇÒH ]7H‘7777O‘7GG7õGg*hmÔi–khnÓPi¢º»Pk k()*l7¹[9iŸ¸¹jÕk"°<lëP0123=NOPRflmnopqrstuvwxy|‘“•–žŸ¡¢£¥´¶¸º¿ÌÓÔÖèóôúûüþ3456789:@BDFS]^d+66EJXXˆˆ˜˜ïö  ë ‚¨&,«g=ëgRëhˆŠŽëiÉÌt 6X´%GGHHHLLMMM{{€‚ƒƒ…††ŠŠŽŽŽŽšš››››¨©©«¬¬]D  Ýg#Nmnopqrstuvw‘“•–ÓÔô3456789:]^diœ&3!#%¦i®fjöø&k]¦k+,&l9fl]Ï R´¶¸º¿þ@BDFÏ.­®12˜#/46<EJX\^fˆ˜­®Ìïöüþ 12ØOO˜hyXjó@AXlPSa-2oqsuw„…†–ª«¬®()*./02468:áh†ái¿¿À!jÙ¡jájÊ;|Êk0Ó‹ÓCEJˆ˜¥ïö  #“g46i˜š›Ój<ŽEGHJLMNNOlmmnnooppqqrrssttuuvvwwxxˆŠŽ‘‘““••––š›žžŸ¡¡¢¢£¥­®´¶¶¸ººÓÓÔÔÖÖèñòóôôöøùúúû   l studio 8\vc\include\stddef.honce_INC_STDDEFc:\program files\microsoft visual studio 8\vc\include\crtdefs.h_CRTIMP_DLLdllimport_INC_CRTDEFS__midl_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_WIN32ERROROnlyWin32targetsupported_CRT_NOFORCE_MANIFEST_CRT_FORCE_MANIFESTmessage_VC_NODEFAULTLIBc:\program files\microsoft visual studio 8\vc\include\sal.h__specstrings__nothrow__declspecnothrow_PREFAST_SPECSTRINGIZEx__null__notnull__maybenull__readonly__notreadonly__maybereadonly__valid__notvalid__maybevalid__readableToextent__elem_readableTosize__byte_readableTo__writableTo__elem_writableTo__byte_writableTo__deref__pre__post__precondexpr__postcond__exceptthat__execeptthat__refparam__inner_control_entrypointcategory__inner_data_entrypoint__inner_success__inner_checkReturn__inner_typefixctype__inner_override__inner_callback__inner_blocksOnresource__inner_fallthrough_dec__FallThrough__inner_fallthrough__ecount__bcount__in__in_ecount__in_bcount__in_z__nullterminated__in_ecount_z__in_bcount_z__in_nz__in_ecount_nz__in_bcount_nz__out__out_ecount__out_bcount__out_ecount_partlength__out_bcount_part__out_ecount_full__out_bcount_full__out_z__out_z_opt__out_ecount_z__out_bcount_z__out_ecount_part_z__out_bcount_part_z__out_ecount_full_z__out_bcount_full_z__out_nz__out_nz_opt__out_ecount_nz__out_bcount_nz__inout__inout_ecount__inout_bcount__inout_ecount_part__inout_bcount_part__inout_ecount_full__inout_bcount_full__inout_z__inout_ecount_z__inout_bcount_z__inout_nz__inout_ecount_nz__inout_bcount_nz__ecount_opt__bcount_opt__in_opt__in_ecount_opt__in_bcount_opt__in_z_opt__in_ecount_z_opt__in_bcount_z_opt__in_nz_opt__in_ecount_nz_opt__in_bcount_nz_opt__out_opt__out_ecount_opt__out_bcount_opt__out_ecount_part_opt__out_bcount_part_opt__out_ecount_full_opt__out_bcount_full_opt__out_ecount_z_opt__out_bcount_z_opt__out_ecount_part_z_opt__out_bcount_part_z_opt__out_ecount_full_z_opt__out_bcount_full_z_opt__out_ecount_nz_opt__out_bcount_nz_opt__inout_opt__inout_ecount_opt__inout_bcount_opt__inout_ecount_part_opt__inout_bcount_part_opt__inout_ecount_full_opt__inout_bcount_full_opt__inout_z_opt__inout_ecount_z_opt__inout_bcount_z_opt__inout_nz_opt__inout_ecount_nz_opt__inout_bcount_nz_opt__deref_ecount__deref_bcount__deref_out__deref_out_ecount__deref_out_bcount__deref_out_ecount_part__deref_out_bcount_part__deref_out_ecount_full__deref_out_bcount_full__deref_out_z__deref_out_ecount_z__deref_out_bcount_z__deref_out_nz__deref_out_ecount_nz__deref_out_bcount_nz__deref_inout__deref_inout_z__deref_inout_ecount__deref_inout_bcount__deref_inout_ecount_part__deref_inout_bcount_part__deref_inout_ecount_full__deref_inout_bcount_full__deref_inout_ecount_z__deref_inout_bcount_z__deref_inout_nz__deref_inout_ecount_nz__deref_inout_bcount_nz__deref_ecount_opt__deref_bcount_opt__deref_out_opt__deref_out_ecount_opt__deref_out_bcount_opt__deref_out_ecount_part_opt__deref_out_bcount_part_opt__deref_out_ecount_full_opt__deref_out_bcount_full_opt__deref_out_z_opt__deref_out_ecount_z_opt__deref_out_bcount_z_opt__deref_out_nz_opt__deref_out_ecount_nz_opt__deref_out_bcount_nz_opt__deref_inout_opt__deref_inout_ecount_opt__deref_inout_bcount_opt__deref_inout_ecount_part_opt__deref_inout_bcount_part_opt__deref_inout_ecount_full_opt__deref_inout_bcount_full_opt__deref_inout_z_opt__deref_inout_ecount_z_opt__deref_inout_bcount_z_opt__deref_inout_nz_opt__deref_inout_ecount_nz_opt__deref_inout_bcount_nz_opt__deref_opt_ecount__deref_opt_bcount__deref_opt_out__deref_opt_out_z__deref_opt_out_ecount__deref_opt_out_bcount__deref_opt_out_ecount_part__deref_opt_out_bcount_part__deref_opt_out_ecount_full__deref_opt_out_bcount_full__deref_opt_inout__deref_opt_inout_ecount__deref_opt_inout_bcount__deref_opt_inout_ecount_part__deref_opt_inout_bcount_part__deref_opt_inout_ecount_full__deref_opt_inout_bcount_full__deref_opt_inout_z__deref_opt_inout_ecount_z__deref_opt_inout_bcount_z__deref_opt_inout_nz__deref_opt_inout_ecount_nz__deref_opt_inout_bcount_nz__deref_opt_ecount_opt__deref_opt_bcount_opt__deref_opt_out_opt__deref_opt_out_ecount_opt__deref_opt_out_bcount_opt__deref_opt_out_ecount_part_opt__deref_opt_out_bcount_part_opt__deref_opt_out_ecount_full_opt__deref_opt_out_bcount_full_opt__deref_opt_out_z_opt__deref_opt_out_ecount_z_opt__deref_opt_out_bcount_z_opt__deref_opt_out_nz_opt__deref_opt_out_ecount_nz_opt__deref_opt_out_bcount_nz_opt__deref_opt_inout_opt__deref_opt_inout_ecount_opt__deref_opt_inout_bcount_opt__deref_opt_inout_ecount_part_opt__deref_opt_inout_bcount_part_opt__deref_opt_inout_ecount_full_opt__deref_opt_inout_bcount_full_opt__deref_opt_inout_z_opt__deref_opt_inout_ecount_z_opt__deref_opt_inout_bcount_z_opt__deref_opt_inout_nz_opt__deref_opt_inout_ecount_nz_opt__deref_opt_inout_bcount_nz_opt__successsentinel__nullnullterminated__reserved__checkReturn__typefix__override__callback__format_string__blocksOn__control_entrypoint__data_entrypoint__fallthrough__analysis_assume_DEBUG_CRT_MANIFEST_RETAIL_CRT_MANIFEST_INCONSISTENT_CRT_MANIFEST_DEBUGYouhaveincludedsomeClibraryheaderfileswithandnotThiswillworkcorrectlyPleasesetorclearconsistentlycrtassemh_M_IX86commentlinker__LIBRARIES_ASSEMBLY_NAME_PREFIX_CRT_ASSEMBLY_VERSION_VC_ASSEMBLY_PUBLICKEYTOKEN_M_AMD64_M_IA64_CRT_PACKINGpackpushc:\program files\microsoft visual studio 8\vc\include\vadefs.h_INC_VADEFS_W64_X86___w64_UINTPTR_T_DEFINED_WIN64uintptr_t_VA_LIST_DEFINED_M_CEE_PURESystemArgIteratorva_list_ADDRESSOFvreinterpret_castconstchar_VA_ALIGN_SLOTSIZEOFt_VA_STRUCT_ALIGN_ALIGNOFap_APALIGNsizeof__alignof_M_CEE__va_start__va_arg__va_end_crt_va_start_crt_va_arg_crt_va_end_INTSIZEOFnintpop_CRT_STRINGIZE__CRT_STRINGIZE_Value_CRT_WIDE__CRT_WIDE_StringL_CRTIMP_NOIA64_CRTIMP2_STATIC_CPPLIB_CRTIMP_ALTERNATIVE_CRT_ALTERNATIVE_INLINES_CRT_ALTERNATIVE_IMPORTED_MRTIMP_MRTIMP2_MCRTIMP__CLR_OR_THIS_CALLMRTDLL__CLRCALL_OR_CDECL__cdecl_CRTIMP_PURE_PGLOBAL__cplusplus_cliprocess_AGLOBALappdomain_M_CEE_MIXED__STDC_SECURE_LIB____GOT_SECURE_LIB____STDC_WANT_SECURE_LIB___CRT_SECURE_NO_DEPRECATE_MSC_FULL_VER_CRT_DEPRECATE_TEXT_Textdeprecated_CRT_INSECURE_DEPRECATE_Replacement_CRT_INSECURE_DEPRECATE_MEMORY_CRT_SECURE_DEPRECATE_MEMORY_CRT_INSECURE_DEPRECATE_GLOBALSRC_INVOKED_CRT_SECURE_NO_DEPRECATE_GLOBALS_CRT_MANAGED_HEAP_DEPRECATE_CRT_MANAGED_HEAP_NO_DEPRECATE_SECURECRT_FILL_BUFFER_PATTERNxFD_CRT_OBSOLETE_CRT_OBSOLETE_NO_DEPRECATE_NewItem_CRT_JIT_INTRINSICjitintrinsicCannotuseSecureCRToverloadswhenis_CRT_NONSTDC_DEPRECATE_CRT_NONSTDC_NO_DEPRECATE_POSIX__NewName_SIZE_T_DEFINED_RSIZE_T_DEFINEDrsize_t_INTPTR_T_DEFINEDintptr_t_PTRDIFF_T_DEFINEDptrdiff_t_WCHAR_T_DEFINED_WCTYPE_T_DEFINEDwint_twctype_t_USE_32BIT_TIME_Tcannotbittime_t_INTEGRAL_MAX_BITS_ERRCODE_DEFINEDerrcodeerrno_t_TIME32_T_DEFINED__time32_t_TIME64_T_DEFINED__time64_t_TIME_T_DEFINED_CONST_RETURN_CRT_CONST_CORRECT_OVERLOADSUNALIGNED_CRT_ALIGNalign_MSC_VER_GREATER_THEN_13102050_CRTNOALIASnoalias_CRTRESTRICTrestrict__CRTDECL_ARGMAX_TRUNCATE__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0_ReturnType_FuncName_DstType_Dstexterntemplate_Sizeinlinereturn__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_TType1_TArg1__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_TType2_TArg2__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3_TType3_TArg3__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4_TType4_TArg4__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1_HType1_HArg1__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2__DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3__DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0_HType2_HArg2__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST_VFuncName__pragmawarningdisable_ArgList__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST__DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH_Src_DriveSize_DirSize_NameSize_ExtSize_Drive_Dir_Name_Ext__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_ReturnPolicy_DeclSpec__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX_s__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX__RETURN_POLICY_SAME_FunctionCall__RETURN_POLICY_DST__RETURN_POLICY_VOID__EMPTY_DECLSPEC_SecureFuncName__insecure__T__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_CGETS_SizeRead_Err_SecureDstType_SecureVFuncName_Ret__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_CGETS__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_ARGLIST_EX__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_GETS_Argsthreadlocaleinfostructthreadmbcinfostructpthreadlocinfopthreadmbcinfo__lc_time_datalocaleinfo_structlocinfombcinfo_locale_tstruct_locale_t_TAGLC_ID_DEFINEDtagLC_IDwLanguagewCountrywCodePageLC_IDLPLC_ID_THREADLOCALEINFOrefcountlc_codepagelc_collate_cplc_handlelc_idlocalewlocalewrefcountlc_categorylc_clikemb_cur_maxlconv_intl_refcountlconv_num_refcountlconv_mon_refcountlconvctype1_refcountctype1pctypepclmappcumaplc_time_currthreadlocinfo_PFT_SHOULD_CHECK_RETURN__checkReturn_opt_PFT_SHOULD_CHECK_RETURN_WAT__checkReturn_watMIDL_PASS__crt_typefix_NO_INLINING_CRT_UNUSEDvoidthreadlocaleinfostruct::refcountthreadlocaleinfostruct::lc_codepagethreadlocaleinfostruct::lc_collate_cpthreadlocaleinfostruct::lc_handlethreadlocaleinfostruct::lc_idthreadlocaleinfostruct::__unnamed_0002_1threadlocaleinfostruct::__unnamed_0002_1::localethreadlocaleinfostruct::__unnamed_0002_1::wlocalethreadlocaleinfostruct::__unnamed_0002_1::refcountthreadlocaleinfostruct::__unnamed_0002_1::wrefcountthreadlocaleinfostruct::lc_categorythreadlocaleinfostruct::lc_clikethreadlocaleinfostruct::mb_cur_maxthreadlocaleinfostruct::lconv_intl_refcountthreadlocaleinfostruct::lconv_num_refcountthreadlocaleinfostruct::lconv_mon_refcountthreadlocaleinfostruct::lconvthreadlocaleinfostruct::ctype1_refcountthreadlocaleinfostruct::ctype1threadlocaleinfostruct::pctypethreadlocaleinfostruct::pclmapthreadlocaleinfostruct::pcumapthreadlocaleinfostruct::lc_time_currtagLC_ID::wLanguagetagLC_ID::wCountrytagLC_ID::wCodePagelocaleinfo_struct::locinfolocaleinfo_struct::mbcinfoNULL_CRT_ERRNO_DEFINED_errnoerrno_set_errno_get_errnooffsetofsmvolatile_MT__threadid_threadid__threadhandleYYSIZE_MAXIMUMYY_YYENABLE_NLSENABLE_NLSlibintlmsgiddgettextlint__GNUC__YYUSEeYYIDiyyoverflowYYSTACK_USE_ALLOCAYYSTACK_ALLOC__builtin_alloca__BUILTIN_VA_ARG_INCRalloca_AIX__allocamalloc_alloca_ALLOCA_H_STDLIB_HstdlibYYSTACK_FREEPtrYYSTACK_ALLOC_MAXIMUMYYMALLOCYYFREEfreec:\program files\microsoft visual studio 8\vc\include\stdlib.h_INC_STDLIBsalvadefsc:\program files\microsoft visual studio 8\vc\include\limits.h_INC_LIMITSCHAR_BITSCHAR_MINSCHAR_MAXUCHAR_MAXxff_CHAR_UNSIGNEDCHAR_MINCHAR_MAXMB_LEN_MAXSHRT_MINSHRT_MAXUSHRT_MAXxffffINT_MININT_MAXUINT_MAXxffffffffLONG_MINLONG_MAXULONG_MAXxffffffffULLLONG_MAXi64LLONG_MINULLONG_MAXxffffffffffffffffui64_I8_MINi8_I8_MAX_UI8_MAXxffui8_I16_MINi16_I16_MAX_UI16_MAXxffffui16_I32_MINi32_I32_MAX_UI32_MAXxffffffffui32_I64_MIN_I64_MAX_UI64_MAX_I128_MINi128_I128_MAX_UI128_MAXxffffffffffffffffffffffffffffffffui128SIZE_MAXRSIZE_MAX_POSIX_ARG_MAX_POSIX_CHILD_MAX_POSIX_LINK_MAX_POSIX_MAX_CANON_POSIX_MAX_INPUT_POSIX_NAME_MAX_POSIX_NGROUPS_MAX_POSIX_OPEN_MAX_POSIX_PATH_MAX_POSIX_PIPE_BUF_POSIX_SSIZE_MAX_POSIX_STREAM_MAX_POSIX_TZNAME_MAXARG_MAXLINK_MAXMAX_CANONMAX_INPUTNAME_MAXNGROUPS_MAXOPEN_MAXPATH_MAXPIPE_BUFSSIZE_MAXSTREAM_MAXTZNAME_MAXEXIT_SUCCESSEXIT_FAILURE_ONEXIT_T_DEFINED_onexit_t_onexit_m_tonexit_t_DIV_T_DEFINED_div_tquotremdiv_t_ldiv_tldiv_t_CRT_DOUBLE_DEC_LDSUPPORTld_LDOUBLE_PTR_LDunsignedpush_macropop_macro_CRT_DOUBLEf_CRT_FLOAT_LONGDOUBLEld12_LDBL12RAND_MAXx7fffMB_CUR_MAX___mb_cur_max_func__mb_cur_max__p___mb_cur_max___mb_cur_max_l_func__maxab__min_MAX_PATH_MAX_DRIVE_MAX_DIR_MAX_FNAME_MAX_EXT_OUT_TO_DEFAULT_OUT_TO_STDERR_OUT_TO_MSGBOX_REPORT_ERRMODE_WRITE_ABORT_MSGx1_CALL_REPORTFAULTx2_MAX_ENV_purecall_handler_set_purecall_handler_Handler_get_purecall_handler_purecall_handler_m_invalid_parameter_handler_set_invalid_parameter_handler_get_invalid_parameter_handler_invalid_parameter_handler_m_Handlerh__doserrno_doserrno_set_doserrno_get_doserrnostrerror__sys_errlist_sys_errlist__sys_nerr_sys_nerr__p___argc__p___argv__p___wargv__p__environ__p__wenviron__p__pgmptr__p__wpgmptr__argc__argv__wargvenviron_environ_wenviron_get_pgmptr_pgmptr_get_wpgmptr_wpgmptr_get_fmode_fmode__p__fmode_set_fmode_Mode_PMode_get_osplatformGetVersionEx_osplatform_get_osver_osver_get_winver_winver_get_winmajor_winmajor_get_winminor_winminor__p__osplatform__p__osver__p__winver__p__winmajor__p__winminor_countof_Array_CountofType_SizeOfArray__countof_helper_CRT_TERMINATE_DEFINEDnoreturnexit_Code_exitabort_set_abort_behavior_Flags_Mask_CRT_ABS_DEFINEDabs_Xlabs_abs64_atexit_m_appdomain_Func_atexit_m_Functionatexit_CRT_ATOF_DEFINEDatof_atof_l_Localeatoi_Str_atoi_latol_atol_l_CRT_ALGO_DEFINEDbsearch_s_Key_NumOfElements_SizeOfElements_Base_PtFuncCompare_Contextbsearchqsort_sqsort_byteswap_ushort_Short_byteswap_ulong_Long_byteswap_uint64_Int64div_Numerator_Denominator_dupenv_sgetenv_VarNamegetenv_s_ReturnSize_DstSize_DstBuf_Dest_PBufferSizeInBytes_PBuffer_itoa_s_Radix_itoa_i64toa_s_Val_i64toa_ui64toa_s_ui64toa_atoi64_atoi64_l_strtoi64_EndPtr_strtoi64_l_strtoui64_strtoui64_lldiv_A1_A2_ltoa_slong_ltoamblen_MaxCount_Ch_mblen_l_mbstrlen_mbstrlen_l_mbstrnlen_mbstrnlen_lmbtowc_DstCh_SrcSizeInBytes_SrcCh_mbtowc_lmbstowcs_s_PtNumOfCharConverted_SizeInWords_SrcBufwchar_t_Sourcembstowcs_mbstowcs_s_l_mbstowcs_lrand_CRT_RAND_Srand_s_RandomValue_set_error_modesrand_Seedstrtod_strtod_lstrtol_strtol_lstrtoul_strtoul_l_CRT_SYSTEM_DEFINEDsystem_Command_ultoa_s_ultoawctomb_swctomb_MbCh_WCh_wctomb_s_l_wctomb_l_SizeConverted_SizeInByteswcstombs_s_DstSizeInBytes_MaxCountInByteswcstombs_wcstombs_s_l_wcstombs_l_CRT_ALLOCATION_DEFINEDcalloc_Memory_NewSizerealloc_Count_recalloc_aligned_free_aligned_malloc_Alignment_aligned_offset_malloc_Offset_aligned_realloc_aligned_recalloc_aligned_offset_realloc_aligned_offset_recalloc_WSTDLIB_DEFINED_itow_s_itow_ltow_s_ltow_ultow_s_ultowwcstod_wcstod_lwcstol_wcstol_lwcstoul_wcstoul_l_wdupenv_s_wgetenv_wgetenv_s_DstSizeInWords_BufferSizeInWords_Buffer_CRT_WSYSTEM_DEFINED_wsystem_wtof_wtof_l_wtoi_wtoi_l_wtol_wtol_l_i64tow_s_i65tow_s_i64tow_ui64tow_s_ui64tow_wtoi64_wtoi64_l_wcstoi64_wcstoi64_l_wcstoui64_wcstoui64_l_CVTBUFSIZE_CRTDBG_MAP_ALLOC_fullpath_FullPath_Path_ecvt_s_NumOfDights_PtDec_PtSigndouble_NumOfDigits_ecvt_fcvt_s_NumOfDec_fcvt_gcvt_s_gcvt_atodbl_Result_atoldbl_atoflt_atodbl_l_atoldbl_l_atoflt_l_lrotl_Shift_lrotr_makepath_s_PathResult_Filename_makepath_onexit_m_appdomain_onexit_m_onexit_CRT_PERROR_DEFINEDperror_ErrMsg_putenv_EnvString_putenv_s_rotl_rotl64_rotr_rotr64_searchenv_s_EnvVar_ResultPath_searchenv_splitpath_s_splitpath_FilenameSize_swab_Buf1_Buf2_WSTDLIBP_DEFINED_wfullpath_wmakepath_s_wmakepath_CRT_WPERROR_DEFINED_wperror_wputenv_wputenv_s_wsearchenv_s_wsearchenv_wsplitpath_s_wsplitpath_DriveSizeInWords_DirSizeInWords_FilenameSizeInWords_ExtSizeInWordsSetErrorMode_seterrormodeBeep_beep_Frequency_DurationSleep_sleepmaxminsys_errlistsys_nerrecvtfcvtgcvtitoaltoaputenvswabultoa_Dstbufonexit_wsplitpath_s<_DriveSize,_DirSize,_NameSize,_ExtSize>_wsearchenv_s<_Size>_wmakepath_s<_Size>_splitpath_s<_DriveSize,_DirSize,_NameSize,_ExtSize>_searchenv_s<_Size>_makepath_s<_Size>_gcvt_s<_Size>_fcvt_s<_Size>_ecvt_s<_Size>_wgetenv_s<_Size>_ultow_s<_Size>_ltow_s<_Size>_itow_s<_Size>_wcstombs_s_l<_Size>wcstombs_s<_Size>_ultoa_s<_Size>_mbstowcs_s_l<_Size>mbstowcs_s<_Size>_ltoa_s<_Size>_itoa_s<_Size>getenv_s<_Size>__countof_helper<_CountofType,_SizeOfArray>__unnamed_0005_5__unnamed_0005_5::ld12__unnamed_0005_4__unnamed_0005_4::x__unnamed_0005_3__unnamed_0005_3::f__unnamed_0005_2__unnamed_0005_2::x__unnamed_0005_1__unnamed_0005_1::ld_ldiv_t::quot_ldiv_t::rem_div_t::quot_div_t::remyyallocyyssyyvsYYSTACK_GAP_MAXIMUMunionYYSTACK_BYTESNYYCOPYToFromCount__builtin_memcpydoyyiforwhileYYSTACK_RELOCATEStackyynewbytesyyptryysizeyystacksizeYYFINALYYLASTYYNTOKENSYYNNTSYYNRULESYYNSTATESYYUNDEFTOKYYMAXUTOKYYTRANSLATEYYXyytranslateyyprhsyyrhsyyrlineyytnameYYPRINTyytoknumyyr1yyr2yydefactyydefgotoYYPACT_NINFyypactyypgotoYYTABLE_NINFyytableyycheckyystosyyerrokyyerrstatusyyclearinYYEMPTYYYEOFYYACCEPTgotoyyacceptlabYYABORTyyabortlabYYERRORyyerrorlabYYFAILyyerrlabYYRECOVERINGYYBACKUPTokenValueifyylenyytokenYYPOPSTACKyybackupelseYYTERRORYYERRCODEYYRHSLOCRhsKYYLLOC_DEFAULTCurrentfirst_linefirst_columnlast_linelast_columnYY_LOCATION_PRINTYYLTYPE_IS_TRIVIALFileLocfprintfYYLEX_PARAMYYLEXYYFPRINTFstdioYYDPRINTFArgsYY_SYMBOL_PRINTTitleTypeLocationstderryy_symbol_printyy_symbol_value_printyyoutputyytypeyyvaluepyy_stack_printbottomtopYY_STACK_PRINTBottomTopyy_reduce_printyyvspyyruleyynrhsyylnoYY_REDUCE_PRINTRuleYYINITDEPTHYYMAXDEPTHyystrlen__GLIBC___STRING_Hstrlenyystryystpcpy_GNU_SOURCEstpcpyyydestyysrcyydyysyytnamerryyresyynyypdo_not_strip_quotesyysyntax_erroryyresultyystateyysize0yysize1yysize_overflowYYERROR_VERBOSE_ARGS_MAXIMUMyyargyyxyyfmtyyfyyunexpectedyyexpectingyyoryyformatyyprefixyyxbeginyychecklimyyxendyycountyydestructyymsgyylocationpYYPARSE_PARAMyymsgbufyymsg_allocyyssayysspyyvsayyvalyysetstateyynewstateyyvs1yyss1yyexhaustedlabyydefaultyyllocyyreduce_asn1_add_nodeTYPE_DEFINITIONS_asn1_set_name_asn1_get_name_asn1_set_right_asn1_set_downstrcpystrcatTYPE_CONSTANT_asn1_set_value_asn1_get_last_rightCONST_UNIVERSALCONST_PRIVATECONST_APPLICATIONTYPE_TAG_asn1_mod_typeCONST_EXPLICITCONST_IMPLICITTYPE_DEFAULTCONST_TRUECONST_FALSETYPE_INTEGERCONST_LISTCONST_MIN_MAXTYPE_SIZE_asn1_get_downTYPE_BOOLEANTYPE_TIMECONST_UTCCONST_GENERALIZEDCONST_1_PARAMTYPE_GENERALSTRINGCONST_SIZETYPE_OCTET_STRINGTYPE_BIT_STRINGTYPE_ENUMERATEDTYPE_OBJECT_IDTYPE_IDENTIFIERTYPE_NULLCONST_TAGCONST_DEFAULTCONST_OPTIONTYPE_SEQUENCETYPE_SEQUENCE_OFTYPE_SETTYPE_SET_OFTYPE_CHOICETYPE_ANYCONST_DEFINED_BYCONST_ASSIGNyylocyyerrlab1yylspyyreturnkey_wordkey_word_tokenccounterklastcstringfgetcEOFungetcASN1_NAME_TOO_LONGisdigitstrcmp_asn1_create_errorDescriptionerrorerrorDescriptionASN1_SUCCESSASN1_FILE_NOT_FOUNDASN1_SYNTAX_ERROR_asn1_ltostrASN1_IDENTIFIER_NOT_FOUNDasn1_parser2treefile_nameASN1_TYPEdefinitionsASN1_TYPE_EMPTYASN1_ELEMENT_NOT_EMPTYfopenfclose_asn1_set_default_tag_asn1_type_set_config_asn1_check_identifier_asn1_delete_list_asn1_change_integer_value_asn1_expand_object_id_asn1_delete_list_and_nodesasn1_parser2arrayinputFileNameoutputFileNamevectorNamefile_out_namevector_namechar_pslash_pdot_pstrchrmemcpy_asn1_create_static_structureLIBTASN1_DEBUG_PARSER_libtasn1_logyyalloc::yyssyyalloc::yyvsYYSTYPE::constantYYSTYPE::strYYSTYPE::nodec:\libtasn1\lib\parser_aux.h_PARSER_AUX_Htypevaluelennameright_asn1_get_rightdown_asn1_remove_node_asn1_find_up_asn1_find_nodepointergstr.hc:\libtasn1\lib\element.h_ELEMENT_H_asn1_append_sequence_set_asn1_convert_integervalue_outvalue_out_size_asn1_hierarchical_namename_sizeMAX_TAG_LEN_asn1_error_description_value_not_foundErrorDescriptionEstrcpyMAX_ERROR_DESCRIPTION_SIZEEstrcatasn1_length_deransans_lentempSIZEOF_UNSIGNED_LONG_INT_asn1_tag_dertag_valueSIZEOF_UNSIGNED_INTasn1_octet_derstr_lenderder_lenlen_len_asn1_time_dermax_lenASN1_MEM_ERROR_asn1_objectid_derfirstn_endn_startbit7valval1_asn1_allocaASN1_MEM_ALLOC_ERRORmemmove_asn1_afreebit_maskasn1_bit_derbit_lenlen_bytelen_pad_asn1_complete_explicit_tagpis_tag_implicitlen2len3lefttype_field_asn1_insert_tag_dertag_lenclass_implicittag_implicittag_derASN1_CLASS_APPLICATIONASN1_CLASS_UNIVERSALASN1_CLASS_PRIVATEASN1_CLASS_CONTEXT_SPECIFICASN1_CLASS_STRUCTUREDASN1_TAG_NULLASN1_TAG_BOOLEANASN1_TAG_INTEGERASN1_TAG_ENUMERATEDASN1_TAG_OBJECT_IDASN1_TAG_UTCTimeASN1_TAG_GENERALIZEDTimeASN1_TAG_OCTET_STRINGASN1_TAG_GENERALSTRINGASN1_TAG_BIT_STRINGASN1_TAG_SEQUENCEASN1_TAG_SETASN1_GENERIC_ERROR_asn1_ordering_setvetendnextprevlastp_vetp2_vettagasn1_get_tag_derasn1_get_length_der_asn1_ordering_set_ofchangeasn1_der_codingelementiderp2counter_oldtlenmovemax_len_oldrisASN1_ELEMENT_NOT_FOUNDDOWNUPRIGHTASN1_VALUE_NOT_FOUNDvalue_lenASN1_DER_ERRORc:\libtasn1\lib\structure.h_STRUCTURE_Houtput_file_name_asn1_copy_structure3source_node_asn1_copy_structure2rootsource_name_asn1_add_node_only_asn1_find_left_asn1_error_description_tag_errorpuntasn1_get_octet_derret_lenstr_size_asn1_get_time_der_asn1_get_objectid_der_asn1_str_cpy_asn1_str_catasn1_get_bit_der_asn1_extract_tag_derclass2ASN1_TAG_ERROR_asn1_delete_not_usedCONST_NOT_USEDasn1_delete_structure_asn1_get_octet_stringcounter2counter_endtot_lenindefinitetemp2_asn1_get_indefinite_length_stringasn1_der_decodingp3len4resultCONST_SETASN1_ERROR_TYPE_ANYFOUNDSAME_BRANCHOTHER_BRANCHEXITasn1_der_decoding_elementstructureelementNamenodeFoundcurrentNamenameLenstatememcmpasn1_der_decoding_startEndname_elementstartnode_to_findasn1_expand_any_defined_bydefinitionsNameretCodeauxasn1_read_valueasn1_create_elementasn1_expand_octet_stringoctetNameobjectNameoctetNodeobjectNodeASN1_VALUE_NOT_VALIDtmp_namenegativevaltmpk2LIBTASN1_DEBUG_INTEGERasn1_write_valuenode_rootivaluevalue_tempdefault_tempPUT_VALUEptrptr_sizedatadata_sizePUT_STR_VALUEADD_STR_VALUEvalue_sizeasn1_read_tagtagValueclassValuepTagc:\libtasn1\lib\errors.hERRORS_Hc:\libtasn1\lib\int.hINT_Hlibtasn1.hdefines.hmem.hMAX_LOG_SIZExFFTYPE_IMPORTSCONST_DOWNCONST_RIGHTfmtSTDC_HEADERSstdargLIBTASN1_ERROR_ENTRYlibtasn1_error_entrynumbererror_algorithmsASN1_TAG_IMPLICITASN1_DER_OVERFLOWASN1_ARRAY_ERRORLIBTASN1_ERROR_LOOPLIBTASN1_ERROR_ALG_LOOPbreaklibtasn1_perrorretlibtasn1_strerrorLIBTASN1_DEBUGargsva_startvsprintfva_endlibtasn1_error_entry::namelibtasn1_error_entry::numberdestdest_tot_sizesrcdest_sizestrncatstrncpyc:\libtasn1\lib\gstr.hylist_structlist_typefirstElementlistElement_asn1_malloc_asn1_free_asn1_strdupdrcountval2p4p5name_rootname2parse_version_numberparse_version_stringmajorminormicroasn1_check_versionreq_versionverLIBTASN1_VERSIONmy_majormy_minormy_microrq_majorrq_minorrq_micromy_plvlrq_plvllist_struct::nodelist_struct::nextfileasn1_array2treeASN1_ARRAY_TYPEarrayp_lastasn1_delete_elementelement_namedest_nodep_sp_dp_d_prev_asn1_type_choice_config_asn1_expand_identifierresasn1_print_structureoutmodeindentASN1_PRINT_ALLASN1_PRINT_NAMEASN1_PRINT_NAME_TYPE_VALUEasn1_number_of_elementsnumasn1_find_structure_from_oidoidValueDEFINES_HHAVE_CONFIG_Hconfigc:\program files\microsoft visual studio 8\vc\include\string.h_INC_STRING_NLSCMP_DEFINED_NLSCMPERROR_WConst_return_CRT_MEMORY_DEFINED_memccpymemchr_Buf_memicmp_memicmp_lmemcpy_smemsetmemccpymemicmp_strset_s_strsetstrcpy_sstrcat_s_Str1_Str2strnlenstrnlen_smemmove_s_strdup_stricmp_strcmpi_stricmp_lstrcoll_strcoll_l_stricoll_stricoll_l_strncoll_strncoll_l_strnicoll_strnicoll_lstrcspn_Control_strerror_s_strerror_ErrorMessagestrerror_s_ErrNum_strlwr_s_strlwr_strlwr_s_l_strlwr_lstrncat_sstrncmp_strnicmp_strnicmp_lstrncpy_s_strnset_s_strnsetstrpbrkstrrchr_strrevstrspnstrstr_SubStrstrtok_sstrtok_Delim_strupr_s_strupr_strupr_s_l_strupr_lstrxfrm_strxfrm_l_CPP_NARROW_INLINES_DEFINED_CPP_MEMCHR_DEFINED_N_Pv_Cstrdupstrcmpistricmpstrlwrstrnicmpstrnsetstrrevstrsetstrupr_WSTRING_DEFINED_wcsdupwcscat_swcscatwcschrwcscmpwcscpy_swcscpywcscspnwcslenwcsnlenwcsnlen_swcsncat_swcsncatwcsncmpwcsncpy_swcsncpywcspbrkwcsrchrwcsspnwcsstrwcstok_swcstok_wcserror_s_wcserror_Error__wcserror_s__wcserror_wcsicmp_wcsicmp_l_wcsnicmp_wcsnicmp_l_wcsnset_s_wcsnset_wcsrev_wcsset_s_wcsset_wcslwr_s_wcslwr_wcslwr_s_l_wcslwr_l_wcsupr_s_wcsupr_wcsupr_s_l_size_wcsupr_lwcsxfrm_wcsxfrm_lwcscoll_wcscoll_l_wcsicoll_wcsicoll_l_wcsncoll_wcsncoll_l_wcsnicoll_wcsnicoll_l_CPP_WIDE_INLINES_DEFINEDwcsdupwcswcswcsicmpwcsnicmpwcsnsetwcsrevwcssetwcslwrwcsuprwcsicoll_wcsupr_s_l<_Size>_wcsupr_s<_Size>_wcslwr_s_l<_Size>_wcslwr_s<_Size>__wcserror_s<_Size>_wcserror_s<_Size>wcsncpy_s<_Size>wcsncat_s<_Size>wcscpy_s<_Size>wcscat_s<_Size>_strupr_s_l<_Size>_strupr_s<_Size>strncpy_s<_Size>strncat_s<_Size>_strlwr_s_l<_Size>_strlwr_s<_Size>strerror_s<_Size>_strerror_s<_Size>strcat_s<_Size>strcpy_s<_Size>c:\program files\microsoft visual studio 8\vc\include\stdio.h_INC_STDIOBUFSIZ_NFILE_NSTREAM__IOB_ENTRIES_FILE_DEFINED_iobuf_ptr_cnt_base_flag_file_charbuf_bufsiz_tmpfname_P_tmpdir_wP_tmpdirL_tmpnamL_tmpnam_sL_ctermidL_cuseridSEEK_CURSEEK_ENDSEEK_SETFILENAME_MAXFOPEN_MAX_SYS_OPENTMP_MAX_TMP_MAX_S_STDIO_DEFINED__iob_func_FPOS_T_DEFINEDfpos_t_FPOSOFFfp_STDSTREAM_DEFINEDstdinstdout_IOREADx0001_IOWRTx0002_IOFBFx0000_IOLBFx0040_IONBFx0004_IOMYBUFx0008_IOEOFx0010_IOERRx0020_IOSTRG_IORWx0080_IOAPPENDx0200_TWO_DIGIT_EXPONENT_filbuf_File_flsbuf_fsopen_ShFlagclearerrclearerr_s_fcloseallfdopen_FileHandle_fdopenfeofferrorfflush_fgetcharfgetpos_Posfgetsfileno_fileno_tempnam_DirName_FilePrefix_flushallfopen_s_Formatfprintf_sfputc_fputcharfputsfread_ElementSizefread_sfreopen_sfreopen_OldFilefscanf_sfscanf_fscanf_s_l_fscanf_lfsetposfseek_Originftell_fseeki64_ftelli64fwritegetcgetchar_getmaxstdiogets_sgets_getw_pclose_popenprintfprintf_sputcputcharputs_putw_Word_CRT_DIRECTORY_DEFINEDremoverename_OldFilename_NewFilename_unlinkunlinkrewind_rmtmpscanf_sscanf_scanf_s_l_scanf_lsetvbufsetbuf_setmaxstdio_Max_set_output_format_get_output_format_snprintf_s_vsnprintf_ssprintf_svsprintf_s_scprintfsscanf_ssscanf_sscanf_s_l_sscanf_l_snscanf_s_snscanf_snscanf_s_l_snscanf_ltmpfile_stmpfiletmpnam_stmpnamvfprintfvfprintf_svprintfvprintf_svsnprintf_svsnprintf_snprintf_vsnprintfsprintf_vscprintf_snprintf_c_vsnprintf_c_fprintf_p_printf_p_sprintf_p_vfprintf_p_vprintf_p_vsprintf_p_scprintf_p_vscprintf_p_set_printf_count_output_get_printf_count_output_printf_l_printf_p_l_printf_s_l_vprintf_l_vprintf_p_l_vprintf_s_l_fprintf_l_fprintf_p_l_fprintf_s_l_vfprintf_l_vfprintf_p_l_vfprintf_s_l_sprintf_s_l_sprintf_l_sprintf_p_l_vsprintf_s_l_vsprintf_l_vsprintf_p_l_scprintf_l_scprintf_p_l_vscprintf_l_vscprintf_p_l_snprintf_s_l_snprintf_l_snprintf_c_l_vsnprintf_s_l_vsnprintf_l_vsnprintf_c_l_WSTDIO_DEFINEDWEOFxFFFF_wfsopenfgetwc_fgetwcharfputwc_fputwchargetwcgetwcharputwcputwcharungetwcfgetwsfputws_getws_s_getws_putwsfwprintffwprintf_swprintfwprintf_s_scwprintfvfwprintfvfwprintf_svwprintfvwprintf_sswprintf_svswprintf_s_swprintf_c_vswprintf_c_snwprintf_s_vsnwprintf_s_snwprintf_vsnwprintf_fwprintf_p_wprintf_p_vfwprintf_p_vwprintf_p_swprintf_p_vswprintf_p_scwprintf_p_vscwprintf_p_wprintf_l_wprintf_p_l_wprintf_s_l_vwprintf_l_vwprintf_p_l_vwprintf_s_l_fwprintf_l_fwprintf_p_l_fwprintf_s_l_vfwprintf_l_vfwprintf_p_l_vfwprintf_s_l_swprintf_c_l_swprintf_p_l_swprintf_s_l_vswprintf_c_l_vswprintf_p_l_vswprintf_s_l_scwprintf_l_scwprintf_p_l_vscwprintf_p_l_snwprintf_s_l_snwprintf_l_vsnwprintf_s_l_vsnwprintf_l_CRT_NON_CONFORMING_SWPRINTFS_SWPRINTFS_DEPRECATED_swprintf_swprintf_s_vswprintf__swprintf_l__vswprintf_l_Plocinfoc:\program files\microsoft visual studio 8\vc\include\swprintf.inl_INC_SWPRINTF_INL_managedoffswprintf_Arglistvswprintf_Ap_swprintf_l_vswprintf_l_wtempnam_Directory_vscwprintf_vscwprintf_lfwscanf_sfwscanf_fwscanf_s_l_fwscanf_lswscanf_sswscanf_swscanf_s_l_swscanf_l_snwscanf_s_snwscanf_snwscanf_s_l_snwscanf_lwscanf_swscanf_wscanf_s_l_wscanf_l_wfdopen_wfopen_s_wfopen_wfreopen_s_wfreopen_wpopen_wremove_wtmpnam_s_wtmpnam_fgetwc_nolock_fputwc_nolock_ungetwc_nolock_CRT_GETPUTWCHAR_NOINLINE_c_stm_putwc_nolock_getwc_nolock_CRT_DISABLE_PERFCRIT_LOCKS_stream_fgetc_nolock_fputc_nolock_getc_nolock_putc_nolock_getchar_nolock_putchar_nolock_getwchar_nolock_putwchar_nolock_lock_file_unlock_file_fclose_nolock_fflush_nolock_fread_nolock_fread_nolock_s_fseek_nolock_ftell_nolock_fseeki64_nolock_ftelli64_nolock_fwrite_nolock_ungetc_nolock_offset_origin_buf_sizP_tmpdirSYS_OPENtempnamfcloseallfgetcharflushallfputchargetwputwrmtmp_wtmpnam_s<_Size>_vsnwprintf_s<_Size>_snwprintf_s<_Size>vswprintf_s<_Size>swprintf_s<_Size>_getws_s<_Size>vsprintf_s<_Size>_vsnprintf_s<_Size>tmpnam_s<_Size>sprintf_s<_Size>_snprintf_s<_Size>gets_s<_Size>_iobuf::_ptr_iobuf::_cnt_iobuf::_base_iobuf::_flag_iobuf::_file_iobuf::_charbuf_iobuf::_bufsiz_iobuf::_tmpfnamec:\program files\microsoft visual studio 8\vc\include\ctype.h_INC_CTYPE_CRT_CTYPEDATA_DEFINED_CTYPE_DISABLE_MACROS__PCTYPE_FUNC_pctype__pctype_func_CRT_WCTYPEDATA_DEFINED_wctype__pwctype_func_pwctype_UPPER_LOWER_DIGITx4_SPACEx8_PUNCTx10_CONTROLx20_BLANKx40_HEXx80_LEADBYTEx8000_ALPHAx0100_CTYPE_DEFINED_isctype_Type_isctype_lisalpha_isalpha_lisupper_isupper_lislower_islower_l_isdigit_lisxdigit_isxdigit_lisspace_isspace_lispunct_ispunct_lisalnum_isalnum_lisprint_isprint_lisgraph_isgraph_liscntrl_iscntrl_ltouppertolower_tolower_tolower_l_toupper_toupper_l__isascii__toascii__iscsymf__iscsym_WCTYPE_DEFINEDiswalpha_iswalpha_liswupper_iswupper_liswlower_iswlower_liswdigit_iswdigit_liswxdigit_iswxdigit_liswspace_iswspace_liswpunct_iswpunct_liswalnum_iswalnum_liswprint_iswprint_liswgraph_iswgraph_liswcntrl_iswcntrl_liswasciiisleadbyte_isleadbyte_ltowupper_towupper_ltowlower_towlower_liswctype_iswctype_l__iswcsymf_iswcsymf_l__iswcsym_iswcsym_lis_wctype_chvalidator__chvalidchk_chvalidator_l_chvalidchk_l_Char_Flag_ischartype_lx7f_WCTYPE_INLINE_DEFINED_CRT_WCTYPE_NOINLINE_p_iscsymf_l_iscsym_lisasciitoasciiiscsymfiscsymHAVE_STRINGS_HstringsHAVE_SYS_TYPES_HsystypesHAVE_INTTYPES_HinttypesHAVE_STDINT_HstdintLIBTASN1_Hc:\program files\microsoft visual studio 8\vc\include\sys\types.h_INC_TYPEScrtwrn_CRT_WARNING_NO_32BIT_TIME_T_INO_T_DEFINED_ino_tino_t_DEV_T_DEFINED_dev_tdev_t_OFF_T_DEFINED_off_toff_tc:\program files\microsoft visual studio 8\vc\include\time.h_INC_TIME_CLOCK_T_DEFINEDclock_t_TM_DEFINEDtmtm_sectm_mintm_hourtm_mdaytm_montm_yeartm_wdaytm_ydaytm_isdstCLOCKS_PER_SEC_get_daylight__daylight_daylight_get_dstbias__dstbias_dstbias_get_timezone__timezone_timezone_get_tzname__tzname_tzname_Daylight_Daylight_savings_bias_Timezone_ReturnValue_Indexasctime_sasctime_Tmstruct_Time_ctime32_s_ctime32clock_difftime32_Time1_Time2_gmtime32_s_gmtime32_localtime32_s_localtime32strftime_strftime_l_Max_size_strdate_s_strdate_strtime_s_strtime_time32_mktime32_mkgmtime32tzset_tzset_difftime64_ctime64_s_ctime64_gmtime64_s_gmtime64_localtime64_s_localtime64_mktime64_mkgmtime64_time64GetLocalTime_getsystimeSetLocalTime_setsystime_MilliSec_WTIME_DEFINED_wasctime_s_wasctime_wctime32_s_wctime32wcsftime_wcsftime_l_wstrdate_s_wstrdate_wstrtime_s_wstrtime_wctime64_s_wctime64c:\program files\microsoft visual studio 8\vc\include\wtime.inl_INC_WTIME_INL_wctime_wctime_sc:\program files\microsoft visual studio 8\vc\include\time.inl_INC_TIME_INLdifftimectime_sctimegmtime_sgmtimelocaltime_slocaltimemktime_mkgmtimetimeCLK_TCKdaylighttimezonetzname_wctime64_s<_Size>_wstrtime_s<_Size>_wstrdate_s<_Size>_wctime32_s<_Size>_wasctime_s<_Size>_ctime64_s<_Size>_strtime_s<_Size>_strdate_s<_Size>_ctime32_s<_Size>asctime_s<_Size>tm::tm_sectm::tm_mintm::tm_hourtm::tm_mdaytm::tm_montm::tm_yeartm::tm_wdaytm::tm_ydaytm::tm_isdstASN1_PRINT_NAME_TYPEx00xC0x01x02x11x04x03x17x18x06x0Ax05x1Bnode_asn_structstatic_struct_asnstatic_struct_asn::namestatic_struct_asn::typestatic_struct_asn::valuenode_asn_struct::namenode_asn_struct::typenode_asn_struct::valuenode_asn_1233445566778899::@BBDFFS]]^^_dd H›ù E!;11122233344488<<<===GL\\\^^^{€‚„„…Šš§§¨ªª«ñø &)++,..ÅgEG…jü®GHLM{ŠŽš›ñòøù  î.6CEGJLXz{~€‚„…ˆŠ˜š§¨ª«ïñöø   #%&()+,./nA%ññòòòøøùùù      &'')**,--/00nhwnl^w7G123=7hrwl_@ *0lžŸ¢ó€D{€dŽ€i©Ú@jåèS©j2?¥òiÓÛ#ƒ©'-k[k_›lddo/0126<=PX^flmnopqrstuvwxyz|~ƒ„†Ž“•–œžŸ ¡¢£§©ª¬­®ÌÓÔÕÖרÚèòóôùúûü !"%'(*+-.0123456789:S]^_`abcd$hpäi¿Àdk!`ÍQ/012348<=COPPRR\^tuvwxz~„ŠŽ‘“•–š›œ¡§ª­­®®¿Ö×úûüüþþ    #%(+.1122789:^_ ­®12M /< RMMhtÍhƒÕÍi½¾jþlbVg-.g1=ÿgcfÌl`ˆQýÈ<=ÌÓÔÕÖרÙÚS]^_`abcdd›ˆg2ˆiª«¬Hjïñˆk'bÑ fyz{˜ÌQjò:gzg0z~úiÔ:k^úk5dC By|œ£"Ã>CBOPRTlx„œžŸ ¡¢£¥§ª´µ¶·¸¹º»ÕÖרÙÚèóúû!"#%(+.@ABCDEFGS_`abcƒh xž¡¶·úBCÃh‚ÃjBC¬›,hqlk"#5@/08<Blœ×Ù "#_aõgX\^Õh„…†õh‘“Þ5DIQW}‡—¤îõý þ.CEJXz~„ˆ˜§ªïö  #%(+.žFyzgži­~jû~k%&>l=>çk30!/468<CEJX\^ˆ˜­®ïö  12p9iÏëV°h|~€°k-c EGz~˜ö Y! GL{€…«ñø)/YA ##%%((ÙVl´µZ\^ho¢‚ƒ…†¨©«¬&')*,-/0â?66CCEEJJXXˆˆ˜˜ïïöö  ¢h{€‹Bzz~~ËjDET::ÅÅLLTPRüþT+HMƒ†Ž›©¬òù '*-0”i¬Ôk1”lc½ = CJL‚„…ˆŠŽ§¨ª«ïñ #%&()+,./}+HM=G123=½gBÙýh•ÖýjÆ¥†CRH†la/`3oi£¥/jßhojù/kïk4¸k./0Á 011223346<==X\^¿AhsAi Ø*gjg/<êj3 BMƒ†Žœ ©¬ÕרÙÚò!"'*-0_`abcó?GHLMŠŽš›ñòøù  sg0¿À³gBCœ {€š›ø  œg8œk*Ük2%#‹Œe9bÈäOŽ!Šš Ž(Ž› Î@ Ÿ´µ¸¹ó@ADEÎgJLk×g$Nmnopqrstuvw‘“•–ÓÔÖô3456789:]^dWhuWi¢º»FG—j  48\^àV4I$HMòùIi¡ jÖÒTNj×{ahÇÎãêNU{hx»h~»j Ä@3//00666PPRRTXXXtuvwˆ‘“•–˜œ­®Ö×üüþþ  12789:^_DkÄk/l6-#Œ¶ ö £¥¶>2oqsuw„…†–ª«¬®()*./02468:vAGHLMŠŽš›ñòøù  vi§¨vjúvk"ak///0012346688<<=BCCEJPRXX\^ltuvwz|~~€„ˆˆŠŽ‘“•–˜˜š›œœŸ§ª­®´¸¿¿Ö××Ùïöüþ      #%(+.12789:D^__€C ŠŽŽš››   _i£¥_jô_lZ¨ 2oqsuw„…†–¬®()*./02468:h4\^(iœ×hi£èi¿À(jÚq$†¬*01iž¶·±i²³±j   ñj1l:jØÚjFGZl8c£g<ãgPTchvLEahÇÎãêNUŒhyz{öéAf YØ…4 F³Q…ûguH`p®†š]!LŸvd¬I ,TΆ[ÜEÑPÙ9"w†±/Êœ(iMuÓa+Ž8bˆNbsg^¸V›.“boSdCŠ&3ª+î!ji[B„p!‹èƒý=£Bzœ‚-#¡e~'†HÒ‰ð|1i.XXpúOBéYs*B@LK¶ ü@JwM”5üö5>>Ð /-{/`"ƒŽ —T^b¤l`]·a. lIÄ?ÛYæ-$ Dÿÿ®y Dÿÿþþ“}@ÿÿ´´Ž}@ÿÿ³³‰}@ÿÿ ²²€}@ÿÿ ±±w}@ÿÿ°°Úp@ÿÿ¯¯n}@ÿÿ®®p@ÿÿ­­d}@ÿÿ¬¬\}@ÿÿ¦¦!}@ÿÿ!‹‹}@ÿÿ'ŠŠ}@ÿÿ*‰‰ð|@ÿÿ/ˆˆâ|@ÿÿ2‡‡Ô|@ÿÿ7††Ä|@ÿÿ>……¶|@ÿÿD„„§|@ÿÿGƒƒ˜|@ÿÿJ‚‚–{@ÿÿN@@‡{@ÿÿR??x{@ÿÿU>>o{@ÿÿX<<™} @[;;d{ @ÿÿ1];;d{@ÿÿa::[{@ÿÿd99S{@ÿÿh88G@ÿÿk66={@ÿÿq22I{@ÿÿv11+{@ÿÿ{005{@ÿÿ//"{@ÿÿƒ.. {@ÿÿˆ,,üz@ÿÿŒ**{@ÿÿ‘(({@ÿÿ•''âz@ÿÿœ&&Ìz@ÿÿ¢%%ðz@ÿÿ©$$Øz@ÿÿ¯##´z@ÿÿµ""¢z@ÿÿº  Áz@ÿÿÀ¬z@ÿÿÅŠz@ÿÿËxz@ÿÿЗz@ÿÿÖ‚z@ÿÿÛjz@ÿÿà^z@ÿÿäIz@ÿÿè–y@ÿÿîúú‰y@ÿÿôúú~y@ÿÿùùùhy@ÿÿþùùy@ÿÿéé&y@ÿÿ èèúx@ÿÿçç y@ÿÿææêx@ÿÿ!ääÛx@ÿÿ&ããÎx@ÿÿ+ââ¿x@ÿÿ2àà°x@ÿÿ9ßß¡x@ÿÿ@ÞÞ“x@ÿÿGÝÝ…x@ÿÿNÜÜwx@ÿÿUÛÛhx@ÿÿ[ÙÙYx@ÿÿaØØLx@ÿÿg××>x@ÿÿmÖÖ0x@ÿÿsÕÕ$x@ÿÿyÔÔx@ÿÿ~ÒÒx@ÿÿƒÑÑüw@ÿÿˆÐÐïw@ÿÿÏÏâw@ÿÿ’ÎÎ×w@ÿÿ—ÍÍÉw@ÿÿ›Ë˼w@ÿÿŸÊʯw@ÿÿ¥ÉÉ£w@ÿÿ«ÈÈ—w@ÿÿ¯ÇÇŠw@ÿÿ´ÆÆw@ÿÿ¸ÅÅsw@ÿÿ½ÄÄgw@ÿÿÃÁÁ\w@ÿÿÉÁÁ«} @`Ͼ¾Nw @ÿÿ1Ѿ¾Nw@ÿÿؽ½À} @cÞ¼¼Aw @ÿÿ1༼Aw@ÿÿç»»4w@ÿÿí¹¹(w@ÿÿó¸¸Ô} @hø¶¶w @ÿÿ1ú¶¶w@ÿÿµµç} @k´´w @ÿÿ1´´w@ÿÿ ³³w@ÿÿ±±ýv@ÿÿ°°ñv@ÿÿ¯¯çv@ÿÿ®®Üv@ÿÿ#­­Òv@ÿÿ'¬¬Êv@ÿÿ+««¿v@ÿÿ0ªª¶v@ÿÿ5©©¯v@ÿÿ8§§¨v@ÿÿ;¦¦ù} @y>¥¥Ÿv @ÿÿ1@¥¥Ÿv@ÿÿD¤¤˜v@ÿÿH££‘v@ÿÿM¢¢‰v@ÿÿQ  €v @@ÿÿTJK€v@@ÿÿWŸŸzv@ÿÿ[žžqv @@ÿÿ]HIqv@@ÿÿ_kv@ÿÿbœœ`v@ÿÿe››Yv@ÿÿiššNv@ÿÿk™™Gv@ÿÿn˜˜>v@ÿÿs••øu@ÿÿ{ˆˆv@ÿÿ‚‡‡v@ÿÿ‰††Ðu@ÿÿ‘……êu@ÿÿ˜„„Þu@ÿÿŸƒƒÁu@ÿÿ¤´u@ÿÿ©€€¦u@ÿÿ®šu@ÿÿ³~~ru@ÿÿº||Œu@ÿÿÁ{{€u@ÿÿÇzzMu@ÿÿÎyyeu@ÿÿÕxxZu@ÿÿÛww?u@ÿÿáuu1u@ÿÿçtt%u@ÿÿíssu@ÿÿórr u@ÿÿùqqu@ÿÿÿppót@ÿÿnnæt@ÿÿ mmÛt@ÿÿllÏt@ÿÿkkÃt@ÿÿjj¹t@ÿÿii t@ÿÿgg‡t@ÿÿ"ffzt@ÿÿ&eent@ÿÿ*ddbt@ÿÿ0ccWt@ÿÿ4bbKt@ÿÿ9aa@t@ÿÿ?``6t@ÿÿC__+t@ÿÿH^^t@ÿÿN\\t@ÿÿT[[t@ÿÿXZZ—c@ÿÿ]XXÿs@ÿÿbXX ~ @µgUU%s @ÿÿ1iUU%s@ÿÿoTTôs@ÿÿuRRês@ÿÿ{RR~ @ºOOs @ÿÿ1ƒOOs@ÿÿŠNNÔs@ÿÿ‘MMàs@ÿÿ—LLÊs@ÿÿ›KKÂs@ÿÿŸJJ·s@ÿÿ¤II®s@ÿÿ©HH°T@ÿÿ­GG§s@ÿÿ°FF/~ @ųEEžs @ÿÿ1µ EEžs@ÿÿ¹ CCŒs@ÿÿ¼ BB–s@ÿÿ¾ @@ts@ÿÿÅ ??`s@ÿÿË >>s@ÿÿÒ ==ks@ÿÿØ <<Js@ÿÿÞ ;;:s@ÿÿã 99Vs@ÿÿé 77Cs@ÿÿî 660s@ÿÿò 55?~ @Ó÷ 44s @ÿÿ1ù 44s@ÿÿÿ 33P~ @Ö 22s @ÿÿ1 22s@ÿÿ 11»r@ÿÿ 00ïr@ÿÿ //Ür@ÿÿ ..Êr@ÿÿ --Ãr@ÿÿ  ,,§r@ÿÿ% ++™r@ÿÿ) ))²r@ÿÿ. ''¡r@ÿÿ2 &&’r@ÿÿ4 %%‹r@ÿÿ7 $$„r@ÿÿ: !!|r@ÿÿ= [r@ÿÿA Tr@ÿÿD 1r@ÿÿH ,r@ÿÿK $r@ÿÿN r@ÿÿR r@ÿÿV r@ÿÿZ r@ÿÿ^ r@ÿÿa —F@ÿÿd úq@ÿÿg õq@ÿÿj  c~ @óm  îq @ÿÿ1o  îq@ÿÿs  áq@ÿÿu Ùq@ÿÿw Ôq@ÿÿz Íq@ÿÿ€ Ãq@ÿÿƒ ¹q@ÿÿˆ ³q@ÿÿ‹ ¥q@ÿÿ ÿÿq@ÿÿ” þþ‡q@ÿÿš ýýwq@ÿÿŸ ûû“q@ÿÿ¥ ùù€q@ÿÿª øø\q@ÿÿ° ööfq@ÿÿµ ôôTq@ÿÿ¼ óóAq@ÿÿ òò;q@ÿÿÆ ññ1q@ÿÿÉ ðð+q@ÿÿÍ ïï!q@ÿÿÒ îîŽN@ÿÿ× ííq@ÿÿÜ ëëÀU@ÿÿà ééq@ÿÿâ èèép@ÿÿæ ââáp@ÿÿé ÚÚÔp@ÿÿî ÕÕÇp@ÿÿò ÔÔ½p@ÿÿô ÓÓ¦T@ÿÿ÷ ÒÒ¶p@ÿÿú Ñѯp@ÿÿý ÐЪp@ÿÿ ÏÏ¢p@ÿÿ ÌÌ„p@ÿÿ ÇÇÆU@ÿÿ  ÆÆyp@ÿÿ  ÅÅpp@ÿÿ ÄÄ`p@ÿÿ ÁÁXp@ÿÿ ¼¼Jp@ÿÿ »»to @ÿÿ ’’Yo@ÿÿ ‚‚6 @ÿÿ DD€n @ÿÿ:Cq~@0" ;;~~@0"!<<‹~@0""==™~@0"#>>§~@0"$??µ~@0"%@@Æ~@0"&AAÖ~@0"'BBS} @ÿÿ(ŸŸJ} @ÿÿ)žž‹| @ÿÿ+~~€| @ÿÿ-}}o| @ÿÿ/ww^| @ÿÿ0vvN| @ÿÿ2uu>| @ÿÿ3tt1| @ÿÿ6ss$| @ÿÿ8rr| @ÿÿ;qq| @ÿÿ=ppJo @ÿÿ>\\#v @ÿÿ?YYÖ{ @ÿÿAQQÈ{ @ÿÿDPPzv @ÿÿGOOkv @ÿÿINNxG @ÿÿJ55Ry @ÿÿKîî3v @ÿÿL=r @ÿÿMƒF @ÿÿN6p @ÿÿOµµp @ÿÿP¯¯p @ÿÿQ®®p @ÿÿR­­øo @ÿÿS¬¬éo @ÿÿT««Üo @ÿÿU©©Ïo @ÿÿV¨¨Âo @ÿÿW§§µo @ÿÿX¥¥§o @ÿÿY¤¤‡o @ÿÿZ¡¡ëN @ÿÿ[   o @ÿÿ\ŸŸšo @ÿÿ]žždo @ÿÿ^šš{o @ÿÿ`““?o @ÿÿass7o @ÿÿbqq-o @ÿÿcpp#o @ÿÿdooo @ÿÿenn o @ÿÿfkko @ÿÿgjjûn @ÿÿhiiÜn @ÿÿi^^Ón @ÿÿj\\Èn @ÿÿkPP¾n @ÿÿlOOrn @ÿÿmEE¬T @ÿÿn66en @ÿÿo44[n @ÿÿp..Tn @ÿÿq,,Mn @ÿÿr%%Bn @ÿÿs_bgjx´¹ÄÒÕò#$%&'()**nE*¸Œµ“Á“*µ“Ò“*¸ŒgE*nE*µ“Ò“*nEaoÞ“î“”*nEÔ(”.” S*¸Œµ“Á“Á+F”%M„[µ“Z”¤+µ“Ò“*µ“” ”¬”kXµ“Ò“*µ“Æ” ”Ó”Á+ê”=ø”„[µ“ •Á+ê”ø”„[µ“J•*µ“Ò“*µ“Ò“z••µ“Œ•z••‡µ“¨•z•µ“Ò“D* ŠÚ†?E«‰$‰7%M?E³W2M:‰*[LìMaowX½•®MHÿMìM?EÒ•[L½•ß•î•ao[L½•ß•'–?EÒ•[L½•U–ao[L½•®MaoÞ“½•„–*Þ‘ÄT¬œ–*Þ‘¬Ç–*Þ‘ÄT¬œ–*Þ‘¬Ç–*ï] ]Þ‘ÄT¬ß–*ï] ]Þ‘¬)—*ï] ]Þ‘ÄT¬ß–*ï] ]Þ‘¬)—*ï]Þ‘ÄT¬`—*ï]Þ‘¬œ—*ï]Þ‘ÄT¬`—*ï]Þ‘¬œ—*µ“Þ‘ÄT¬Å—*µ“Þ‘¬ú—*µ“Þ‘ÄT¬Å—*µ“Þ‘¬ú—*Þ‘ÄT˜-˜*Þ‘˜Y˜D*r˜Œ˜®M*ZÞ‘õ‘§˜’*ZÞ‘õ‘¬L’*ZÞ‘§˜‚’*ZÞ‘¬¦’*³W= ]Þ‘ÄT˜µ˜*³W ]Þ‘ÄT˜É’*³W= ]Þ‘ÄT¬™*³W ]Þ‘ÄT¬“*Þ‘ÄT˜-˜*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*³W=Þ‘ÄT˜É’*³W ]Þ‘ÄT˜É’*³W ]Þ‘ÄT˜É’*³W=Þ‘ÄT¬“*³W ]Þ‘ÄT¬“*³W ]Þ‘ÄT¬“*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT˜Z™*µ“Þ‘ÄT¬Å—*µ“Þ‘ÄT¬Å—*µ“Þ‘ÄT¬Å—*Þ‘ÄT˜-˜*Þ‘ÄT˜-˜*Þ‘ÄT˜-˜*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*Þ‘ÄT¬œ–*Þ‘˜Y˜*Þ‘¬Ç–*³W ]Þ‘˜R“*³W ]Þ‘¬„“*Þ‘˜Y˜*µ“Þ‘˜™*Þ‘¬Ç–*µ“Þ‘¬ú—*Z„[Þ‘§˜R“*Z„[Þ‘¬„“*Y„[Þ‘§˜³™7%M*³WfY ]Þ‘˜î™*Y„[Þ‘¬.š7%M*³WfY ]Þ‘¬hš*³W2MÞ‘˜R“*³W2MÞ‘¬„“*YÞ‘§˜§š7%M*5ˆ2MÞ‘˜R“*YÞ‘¬Ôš7%M*5ˆ2MÞ‘¬„“*Þ‘˜Y˜*Þ‘˜Y˜*µ“Þ‘˜™*µ“Þ‘˜™*Þ‘¬Ç–*Þ‘¬Ç–*Þ‘¬Ç–*µ“Þ‘¬ú—*µ“Þ‘¬ú—* WìMD*‚ˆÚ†D*³ˆ$‰7%MD*̆2M:‰* Wµ“›D*5ˆ›µ“.›z••µ“Œ•z•J›U›z•J›U›z••‡µ“¨•z•nEz•nEz•µ“Ò“z••‡U›z••‡µ“¨•z•nEz•µ“Ò“ao[L½•`›l›*zH= ]î“ÄT˜•›*zH ]KoÄT˜â›*zH ]î“ÄT˜â›*zH= ]î“ÄT¬!œ*zH ]î“ÄT¬mœ*zH ]î“ÄT¬mœ*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*zH=î“ÄT˜â›*zH ]î“ÄT˜â›*zHî“Vk˜üœ*zH=î“ÄT¬mœ*zH ]î“ÄT¬mœ*zHî“ÄT¬-*µ“î“ÄT˜]*µ“î“ÄT˜]*µ“î“ÄT˜]*µ“î“ÄT¬*µ“î“ÄT¬*µ“î“ÄT¬*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT˜«œ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*î“ÄT¬Ôœ*nE*\EgE*Â*°*Í] ]Ø*Â*µ“ž*Í] ]$ž*°*µ“Ož*zH ]Ø*zH ]$ž*Â*ê\î“§˜nž*ê\Œž*êUî“§˜©ž7%M*zH%MØ*ê\„[î“§˜Ø*ê\„[$ž*êU%Mî“§˜Ðž7%M*zH= ]Ÿ*zH= ]Ÿ*zH ]Ø*Â*Â*µ“ž*µ“ž*¸Œµ“Á“Ô(?ŸAo?EMŸ¡7%M?E3aŸ´?EÒ•oŸaonE*CŒ ]î“ÄT¬|Ÿ*CŒ ]ÀŸ*CŒ ]î“ÄT¬|Ÿ*CŒ ]ÀŸ*CŒî“ÄT¬ñŸ*CŒî“¬' *CŒî“ÄT¬ñŸ*CŒî“¬' *°*êUJ 7%M*zH=$ž*êU%Mp 7%M*zH= ]¤ *µ“3¨I%MÝ *nE*¡­\*¡gEHµ“?Ÿ"¡*î“ÄT¬Ôœ*°*î“ÄT¬Ôœ*°*nEHµ“Ò“*Q`H*Q`H*6¡O¡ S*Q`H*h¡µ“Á“*m``H*¸ŒgE*¸Œµ“Á“*°*°aoX`r¡ S*µ“Ò“H(S`H*µ“Ò“Ô(?ŸAoÔ(òŽ¡7%MÔ(3aŸ´*nE*nE*µ“Ò“Á+„¡%M„[µ“Z”¤+µ“Ò“*µ“” ”¬”kXµ“Ò“*µ“Æ” ”Ó”*µ“•¡¨¡*µ“î“ÄT¬*µ“Ož*µ“î“ÄT¬*µ“Ož?EÒ•Qr¡ß•Å¡aoQr¡µ“ø¡Á+ê”=ø”„[µ“ •Á+ê”ø”„[µ“J•*m`µ“ ¢*¸ŒgE*¸Œµ“Á“*µ“Ož*µ“Ož?EÒ•Qr¡:¢aoQr¡ S*nEÔ(c¢.” S*µ“Ò“Ô(3x¢µ“†¢*µ“Ÿ¢¬¢*nE*µ“Ò“*µ“Ò“*µ“Ò“*µ“Ò“aoÞ“r¡”*nE*µ“Ò“?Eµ“Ò“Hµ“Ò“aoQr¡`›Ã¢*¸Œµ“Á“*µ“Ò“¤+aonEæ¢Ô(*Ô(****Ô(ô¢þ¢7£7£ £%£(£=£%£W£k£%££‰££›£%££ê££77#¤6¤;¤%£6¤Q¤%£6¤_¤6¤7j¤4¥77´lE¥L¥S¥Z¥a¥h¥L¥o¥v¥}¥7„¥—¥ª¥7½¥Ê¥GGkGiiÀl Cºl CÍ¥æ¥ÿ¥¦7 ¦i¦¦¦7áÇpÔGq òòóó„„……‘‘Gv˜EINTÐuƒ…¹q”¹tis12‚zkxD¸ë4»¿ÁÊÌÏÐØÚâéô!5@Zde“•œ­ÊËâãä./189‡‰­¯²´ë  E¥;k&ùë?.òó13LMNT[\wxyz{|ƒ„…†‡ˆ¸¹»½ÈÉÛÜÝÞßàæçèé:„…Š‘‘ëN ks<kvœNtoŒ’•Ôþts=?ôsR]D»»½½&3wy{¦TÒfj&p±¦u&yè¦{DpÊ­r˜#679;<=>? "#$%&ur˜v£{(˜|‚Ža-Gùý'+7;=?ijklmnpqrstuwxyz{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéú"$&(,ápÚe¯áqJo¹\Jp»gpÊr-Js7;ÊsKÊv«J}žÓPV¿÷Ó)+139;>?NTy|…³µ»½Ýàçé "%&*,Ón\Sz¦S{8S}Ÿ<Ë¿¿ÁÁÊÌééëëíîñôôööøùûý!&')+12345667799;;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrstuwxyz{|~€ƒ„…†ˆ““••š›žŸ£§©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú  ""#$%&'(*,.//001122889?­¼o¥¼wÊ?@z{‚ƒ„…†‡ˆ‰Š‹¦¬­®¯°±²³´d уdoˆšd{:;ä{Sbd}¬ÍTòòòóóóó01123<=>?LMMNNORT[\`cxy{|ƒ„……†‡ˆˆ¤³µ¸¹»»¼½½¾ÁÈÉÛÜÝÞßàæççèéé#$%&:„„„…………ŠŠŠMn%,Íq–MuwyÖo¨®Vs7Ö{QTv?os?uu¿vª¿xàúˆýˆ9HIJKLMNOTUZ\abcelmnstuz{|€†‡ˆ®¯°±µ¶¹½¾ÆÇÉËÐÑÒרÙÞßàäèérxÑ|pr‘n=qéë‘v¢w³´zgÕ 0CEúq²ztezvžOúxæçCéôøù&',67<=@Lwzƒ†æè#$'(/1Ã!O¾Ã>ñ£¤§Ãq•Ãr,Cs6ÃtjÃ{NNOOPPQQTTUUVVŽŽ’’““””••––n Dÿÿ!!ßf Dÿÿ""Ì4 Dÿÿ##„Œ Dÿÿ$$Á˜ Dÿÿ&&¨Ž @ÿÿ“ÅŽ @ÿÿI“Ž @ÿÿFFúŽ Dÿÿ@F @0AA$@0BB;@0 CCR@0 DDi@0 EE^Ž @ÿÿ ==RŽ @ÿÿ <<EŽ @ÿÿ;;1Ž @ÿÿ::!Ž @ÿÿ99 Ž @ÿÿ88ú @ÿÿ77å @ÿÿ66Î @ÿÿ55· @ÿÿ44¦ @ÿÿ33‘ @ÿÿ22‚ @ÿÿ11t @ÿÿ00g @ÿÿ//Z @ÿÿ..P @ÿÿ--G @ÿÿ,,= @ÿÿ++2 @ÿÿ**' @ÿÿ )) @ÿÿ!((     *żμۼì¼ú¼*Ô(Ü}**filor zux{~„‡õ)‰‹zG@~¸lºl C C^Ç\ñö')NT\{‡™¥¯ºÇäïÿ"(28[ns{ƒÐ*G ,±ÀÁq†ßŒg/U|¦»å#3t„ù0‡ŽE5:?DKPW\cdeinu}„œ¢P-Vu}ƒ•«Ãæû$,4?CGKOSWpwˆ.™U—˜¢Wâê—©‚12‚ŽDÝáð9CLQX]optv~ƒ…’’’“£¤âŽžáâåæéê"LS‘§¨ ³ëŽ¡ cdejTc¶4f š¼¾ÀÆÇ¿¿t0Sy¡¸â  0>BFJNRVfim1½?¢ýT ™±³·ò÷ûÿF=R+O]^_`abcdefghijklmnopqrstˆ‰š›œžŸ²³´ÂÈÉÊËÌÍÎÏÐÑÒÓÔ)*+9:@DHLPT\]^_`acd|}Ù-}ŽCÚÚÝ 9Ceiopv~…—¥ŽIÊ&3‰°ÕÖרÙÚÛÜÝ+ar‡¡­®Àæöcd>¸ÂÄÆU¿¦3v3afÆr1§¨©ª®·Á78:;ABDEFNOPRZ[\^ghijrsuw‚„† ¡¢¥¦©ª·¸hU±èX™ˆYÛñúþx_ú¨`âæê¸`Ñhc:;DEPR\^iuw„†¢¦xŽBÑ×ÛÝâæêíñöþ  "8BO[hs‚¡¨Ž”a\ px\ží~‡‘q`e³‘2o…ý>!Ž9°ÕÖרÙÚÛÜÝr‡äJ1Ž:PvŠµß -;j~ôVqŽ AÌÏ)8BO[hs‚¡ñŽ¢¤¥ª±ú^Ô¼šf Z#.QRwx‹Œ ¶·àá  ./<=AEIMQUeghkl€ï/ú7ðñòóôõö÷øùúì|ƒU—˜³Y$PQvwŠ‹°µ¶ÕÖרÙÚÛÜÝßà  -.;<gjkr~‡“ŽFI›ŒYœÛðñõöúþX_üZòøúÌ` E–u[ñå6 èEŽ;ÞàŽŽNÇUþNORSTUVWY\]^_`abcdefghijklmnopqrstuxyz{|}~€‚ƒ„‡ˆ‰ŒŽ‘’“”•–™š›œžŸ ¡£¤¥¦§¨©ª«¬¯±²³´·¸¹º»¼½¾¿ÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÞáâãäåæçìïñòóôõö÷øùúûüÿ    !"#$%()*+,/01234589:=>?@ABCDEFGHIJKLMNOPQRSTUVWX[\]^_`abcdefhilmnopqstuvwx{|}€‚ƒ„…†ˆ‰µcde^` oxÞaíÞd­®®e×~f"(ŽÌÎ5‘’“”§¨©ª¼½¾¿um^Ž =WX~€‚Ö,—TŸ–––——˜ž¤¤¤¥¨¨¨©WaÛÝ·4b!I·Ž˜ÑÔ×ÛÝâæíñöúþ "ÀU¾àV o¼¿ÉŽœ67@AMNYZfgqr€Ÿ ¸ÁÒTÚeop~’_'–±³µ¶ÑÔ×ÛÝâæêíñöúþ "5;?EKRW^nw}†œ¦2*KYz„Ž–¤¬¹Äãçü!%15Xx‚‰Ó+RŽ<¢4²Ž”Û_þ$[ôöDfVu}ƒ•«Ãæû$,4?CGKOSWpwˆÆÄŽd›ÊÌÏÑ×ÚÚÛÝÝÝáâæêíðñöþ   ")58899:?BBCCDKLOOPQWX[[\]cdeehhiinooppsstuvv}~~‚‚ƒ„……’’’“—œ¡¡¢£¤¥³U —±³ÆÑê  ¼ ]KXêëð Ž8êëì b­Ž”6š6`ÖŽœÍ·"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|Í}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÏÓÔln Dÿÿ+„ Dÿÿ""ñ„ Dÿÿ## Y@ÿÿÙÙ–\@ÿÿ Öט^@ÿÿÒÔ6Z@ÿÿÏÐ.^@ÿÿ ËÍqY@ÿÿ&ÈÉ…\@ÿÿ+ÅÆTc@ÿÿ.ÁÁhc@ÿÿ1¿¿Þd@ÿÿ4½½šf@ÿÿ8º»Þa@ÿÿ>·¸Ì`@ÿÿD´µq`@ÿÿH±²6`@ÿÿP¬¯Û_@ÿÿW§ªx_@ÿÿ]¤¥Ç\@ÿÿd ¢~f@ÿÿižž¨`@ÿÿo›œWa@ÿÿu˜™®e@ÿÿy––ú^@ÿÿ|””¸`@ÿÿ‘’f@ÿÿ‡e@ÿÿŒŒpV@ÿÿ’‰ŠhU@ÿÿ—†‡‘e @ÿÿ˜~~M‹ @ÿÿ˜x|_‹@0 ™yyw‹@0 šzz‹@0 ›{{ƒU @ÿÿœtt_ @ÿÿrr=‹ @ÿÿ jr¨‹@0&ž kk¾‹@0&Ÿ llÔ‹@0&  mmë‹@0&¡——¬T6¬nA,r¬z5#5HIJKLMNTZ\abcelmnstuz{|€†‡ˆ®¯°±µ¹½ÆÇÉËÐÑÒרÙÞßàäèéµo¥5{/îžF6žsCEt\çnbçv®gwÁp9å©pCÿ†ˆppÄðz$ð|ˆ”YA¢¢¤¤³³µµ¸¸¹¹::Yo‚žŸ ÙqkYvšFKOUYxØ¢¥¦¢pÌ­"z¢z "{.‹r$ uq‹|{~”5gipqv‡ýv°ÆUÆŽ¯o¤¯pÐd¯v§¯wÉ8v8}’’s=}‰•êsRêu„êxäjzó? 24ORUX´¶¼¾ÁùúótnswÄÜ<¿ÁÊÌéëôö0“•./0128Ün^Üo©\qôöÜr.Üv­\wÁ\}£¦%# PQSVWY¿ÀÂ÷øû¥qÿ’%s4TU%usŽ˜™š›œžŸ  >?@@HJŽ!U¶ŽNís2NOŽ}³—F—cX—n>cd—wÇ—z`p¿Á`s<>àsL`v›IF¿Áéëôö!“•/0129Éo§ÉwËIz I{1Rpc»¼ÄÅÆÏÐÑÒÔÕØÚëíîïñòóôöøùûýþÿ$,0BGHI^apqrstu˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ02>?@z{‚ƒ„…†‡ˆ‰Š‹‘‘¯²³Òv¬Ryîòùú;&X;qñ»r,0oj„o““––„pǬ„r!_ 24ORUX´¶¼¾Áùú( 13y¨ Fùý'+7;=?ijklmnpqrstuwxyz{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèé"$&(,èiJKhpÁ•¨v¦(w¸hxÙhyù1+ RX¦Áùúñnc1qð±1r³1utqvEHñv¯1|sušožEIktvp¯ÚpدZuwšu~cSYÂû½ã"4´£n@#ooão©#vŠY£wÈLEÝä ¡¨Œn<fhpq–– p­Œs@BŒu{Lx×Ìz#% {(,>#2¼þ.ÅëöBC02:¾nLO\^ž>v“•>xÖ~yù>|t‡n;gipq‡o¡qè°‡qùýtZ‡tfv†‡{?Pzù Ka‹°¾É×’šypÅÂBnÂo§ÂsJ+ C+qï«qÿ†ˆ+t^+{/0´    2244EFFOORRRUUXXq´nB´u€4w¹4yì´z":µn?eqþfqôætmÏ HJÏ.±¼ÆÇÑÒÓÔÕèíîïðñòóøùûýþÿ%&')+-./013679;<=>?GHIJKLMN[\^_`abcijklmnpqrstuwxyz{|~€ƒ„…†‡ˆ˜™š›žŸ ¢£¤§©ª«¬®¯°±¸¹»½ÄÅÆÇÈÉÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàæçèé "#$%&'(*,>?@‚ƒ„…†ˆŠ‹¬®°±³Ïo¨ÏpÔþÏtkXp¼iqØz#!qî¡r&¡xÞ!}n Dÿÿßf DÿÿÌ4 Dÿÿ„Œ Dÿÿ ¨Ž @ÿÿѼ @ÿÿxŒ³ @ÿÿ huŽ @ÿÿ .fœ @ÿÿ**Œ @ÿÿ))“Ž @ÿÿ''ð Dÿÿ"'@0 ##@0 $$5@0 %%S@0 &&¬ @ÿÿ,,  *żμۼHÀÀ7n*ÀÀ"¡ì¼XoÔ('À*Ô(*Ô(8À/·T8‡Ž%»À‡ $inory…¶¿Ç{‚‹ÀU€™U“ÉŽ–½¾ËÍÒT¼’_’¡£¥¸»Â²ŽƒU““Ž'.•³i‚¬Tm‚Tc¥|eimÄŽ •±³¶¶»¼¿¿ÀÁÆŒ)˜™šŸ¡¤œ*€¸¬ ,18>COQUW[]_¼y¶E’½?˜TkmmntýT &”¡¦¸¼¼ÁÃU“¡®¸¹Ž.±­Ž6i{>§ÐŽN…‡¦TmU26<AFGHIJKLMRSa£NU>CW[]ÆUŠ‹ÖŽ–´ÊÎ{€…‡ŠÖ|‚‡o#y„³¶¿/U1OQU_r œžŸ¤¦¾¿ÀÂÊËß}ƒ„hU¡¸èX”hcÀ¨Žú^®¹n Dÿÿßf Dÿÿ„Œ DÿÿÌ4 Dÿÿ ¨Ž @ÿÿPÓ½ @ÿÿ3I© @ÿÿ11[‘@ÿÿ++T‘@ÿÿ**A‘@ÿÿ ))*żμۼXoXo***4Ç4 ƒ„Š‹ž«¬ÍÎÏ·TÅ×U÷Z[pV¹VbƒƒŠŠ’“««ºÎΙUf©1ˆ ‘^q{‚Vc°±µ¹ÁͲŽQqsš°±¢.sëNš¢¨UÀëWXY[‘+š§°±D"&.¬W{üWfµ¶”-$‘e´4‘hµ¹¼ÉÑT‘*||’“–—ýTgµºÆ­ŽQqs§&½3›©&3bcdf4’–°>…ŒŸ­ÑÒŽNš¢¨R“—±Uh½ÑNUÄÆ8TpzÞUq{‘aqsvx¢/UßVd„„‹‹–—žž¬¬ºÏÏr l{|}ˆ›©¾ÁÆÉ%ØO’–°hUµèXghcÉØf"¨ŽQH‘qe1A‘ Dÿÿb DÿÿW @ÿÿ~€hc @ÿÿclTc @ÿÿ LVÜb @ÿÿ &:Àb @ÿÿ  #§c@0 !!Âc@0 ""6c @ÿÿ@@"c @ÿÿ<<«b @ÿÿHœ¬°KoÅØHÅØèKo*‚âlD‚älœ‚§‚6÷Ri·T6÷TALc7\-—b—cvÀb $$&= cw©U8‰cruvw:@A2],"c<AëNyU(WTq~«b'()*+,-./012345678D:<>Z4¤bTcLdcNQTehkELc ])Õb"Aíb0þsvy®=&3>NeþK>ŽNyU'NU*Æ^/^bs6c@QhNcAŽcuÏMA/U2a.ÿb5ˆrxZ=>>>ARihccQ]+c7zcp³Y3£_1“bquv~¬W!>RiÜb&>'b DÿÿW@ÿÿb @ÿÿHœ¬°7Wb“bCb DÿÿNb DÿÿXb Dÿÿ##‡b @ÿÿnn|b @ÿÿmmIT @ÿÿkk™_ @ÿÿjjë^ @ÿÿii'S @ÿÿee1S @ÿÿdd8T @ÿÿbbdS @ÿÿ ``CS @ÿÿ ^^éR @ÿÿ \\ÞR @ÿÿ [[ÅR @ÿÿ YYºR @ÿÿXXÔS @ÿÿWWâS @ÿÿVVÊS @ÿÿUUžR @ÿÿSSR @ÿÿRReR @ÿÿQQWR @ÿÿPPGR @ÿÿOOQS @ÿÿHH‘S @ÿÿGGÀS @ÿÿFFob @ÿÿEE#T @ÿÿDDS @ÿÿCC¸Q @ÿÿBBT @ÿÿAAT @ÿÿ@@/T @ÿÿ ??¡S @ÿÿ!>>ýS @ÿÿ"==÷R @ÿÿ#<<­R @ÿÿ$;;wR @ÿÿ%::oS @ÿÿ&99S @ÿÿ'88ïS @ÿÿ(77S @ÿÿ)66ÑR @ÿÿ*55°S @ÿÿ+44R @ÿÿ,33™Z @ÿÿ.00$] @ÿÿ/**,] @ÿÿ0)))] @ÿÿ1((^b @ÿÿ2%%=b @ÿÿ3µ€½€Å€Í€Õ€Ý€å€í€õ€ý€ %-5=EMU\cfilor zux{~„‡õ)‰‹zG@~¸lºl CÑ+¸lºl C—74GROWRPwR:÷R<'SeTA‡bnS6°S4ÀSFéR\ITk™Z0)](™_jâSVë^ikb0R3dS`ÔSW$]*,])|bmeRQ­R;ÅRYSCýS==bö00žRSÞR[T@^b%RRoS9ïS7/T?obE¸QB8TbÑR51SdQSHS8‘SG¡S>ºRXÊSUCS^#TD)jú^¶ƒUfßf Dÿÿb‘ @ÿÿ7j3ëib‘l‘è~ DÿÿYY¥‘@ÿÿÒÕH‘@ÿÿÎÑ¢@ÿÿÊË× @ÿÿ ¨x’@0¢¢…’@0¥¥•’@0¦¦¢’@0§§¶‘@ÿÿˆˆA‘@ÿÿ„„[‘@ÿÿT‘@ÿÿqq5’ @ÿÿ®®÷ @ÿÿ­­ë @ÿÿ¬¬’ Dÿÿcc’ @ÿÿ"^^ê‘ @ÿÿ#MM}‘ @ÿÿ$*Å*Å?ÅWÅpÅÅ*Å*Å?ÅWÅpÅÅ*Å*Å?źÅKo*N*****Ô(ºl C C7ÞÅâÅæÅjB C('d--..//× ÐÔ÷­‡‘!%IŠÍG’ÊÎÒW’ÊÏÓ0’¦‰4"qH^A‘*44„²N#¢&00Êê‘KMÎÒk`gÙë¬[‘+55c’ÐÔD"#$¬W¢T‘)33q$’^$}‘•‘!/J¥‘(22Ò½‘-.Í‘./5’®ö--..®MîY§¶‘,66ˆÞ‘/0123456þ‘X’\acËÑÕ’]^`n’ÐÔO’ÊÎÒH‘'11Î(’¥ë“@ÿÿ|€Ü“@ÿÿwz“@ÿÿquë’ @ÿÿ kÿ“@0 %%”@0 &&)”@0 ''>”@0 ((S”@0 --o”@0 55ˆ”@  TW§”  !VVÅ”  "VVÛ”  #VV÷”@0$WW•@0%[[0•@0&ddM•@0'ee¼’@ÿÿ0©“ @ÿÿ1oo®’ @ÿÿ2     *ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅÆ*Æ*ÅÆ?ÅWÅpÅoÆÆÆ•Æ***Ô(*Ô(ºl C CäÆ****ÅÆ?ÅWÅpÅoÆÆÇBÇ C ×sy~G’qw|O’qw|W’rx}“V'“V7“W_“gø’-A‘&Ù’[t“VQ“ey“h©“oB“d“q[‘%c’sy~ë’ uz€““ië“|T‘(¼’Ü“wÍ’te“gÕ“uz€¶‘'n’sy®’“5®’“5@– @ÿÿKK – @ÿÿ@@ – @ÿÿ??þ• @ÿÿ >>ó• @ÿÿ<<é• @ÿÿ::Ò• @ÿÿ88¿• @ÿÿ77Ø3 @ÿÿ 66¦• @ÿÿ"55i• @ÿÿ#ÉtdÇkÇÇŒÇkÇǔǜÇDzÇÇêÇñÇpøÇ²ÇÇêÇñÇpÈêÇñÇpkÇÇ9ÈøÇkÇÇ9ÈœÇ9È C!w•"Ø36–?? –@8–@@@–Ki•É•7<é•: –?Ê3,Ò•8â•89:;<=k)Û•89:;<=ó•<D#,´ 56799;;==>?@ÄO+´•67:<>>?@}•)M–KK® 56799;;==>?@ö-#æ3))†•*Ž•+¦•5®•556677þ•>¿3ÏK89:;<=¿•7©˜ Dÿÿn DÿÿÌ4 Dÿÿßf Dÿÿr– Dÿÿ**±– DÿÿDD¢ @ÿÿ\a†˜ Dÿÿ YYQ˜ @ YY¼’ @ÿÿ@R“ @ÿÿ`>Z— @ÿÿ é'4— @ÿÿ$˜åÍ– @ÿÿ%jj¶‘ @ÿÿ&ffA‘ @ÿÿ'``[‘ @ÿÿ([[T‘ @ÿÿ)LL¸— @ÿÿ*€€— @ÿÿ-ŒŒ – @ÿÿ.33‹– @ÿÿ0++*żWÈiȺŠC*żÈiȋȢȯȽÈÇ*żÈiȋȢȯȽÈÑÈ•ÆKożÈiȽÈÑÈáÈHÈÑÈÉ/É***Ô(<É7vÉzÉ7~ÉÌtkÇ4 !l‘ÛJ¹à'GO ©­´µ»½ÇÈÉÌÑ'Yêð""ùû'“û‡—0’¡£ïñP—²—bÏáófBJ˜cdiˆ‰ŽÓÔØBCG‡ˆŒ°±¶×ØÝ $ÙVä®êÙ’õ ùy“©¯³´µ  Ù–mmm™—bŸ íîBJÙ—ê  (y{˜cdiˆ‰ŽÓÔØBCG‡ˆŒ°±¶×ØÝ $¢]sB“ ›ãñ‹Œ“—ª­®»¼“aJ—}„……†²¶~ëN?$IWacdij†ˆ‰Ž”¾ÉÑÓÔØÙ @BCGHM…‡ˆŒ’®°±¶·¼ÕרÝÞã $%*ë’j™ëc‹–+$EIRW‚•»¾ÆÉý =M‚’ª¼Ñä+«— eg:}°ò6}¥ÌT‘LlÇ7z/[`¢É 8NN’4—™•¬] >ER_´»ÆÏöý½?nõ}dÇ‚™›œ©©¯¯³´µãããääëñññóõû    #celnnpqst||}}~€€ƒƒ‰‰ŠŠ‹‹ŒŒŽ““””•––——œžž¦¦¨ªª««¬­­®®¯±·»»¼¼ÅÇÇÎÎÏâãäîôôö%(()*17ATYqqsyzz„–™™šžž­®·¼¿ÇÇÊÊßàáéíîù-//24Q[[``ggiƒ“––—¢ÂÂÈÉÉÓåèèììöþ   /889=— œ»»½½ÀÇÈÉÑØÙÚ&3"®ólƒÏáèÿ.gŒŸ®Öð&EqŠš´Ûíö"9__f4­>¥“-óƒƒÎîôôö((qq™™žž®¼¿ÇÊßéí-/`ggi––ÂÂèèììöþ  9¦•+f–#&—„…‰Œf˜mƒƒ…r „†ŠŽ’™Ÿ¡¢ØO ÷(q™ži–ÂèìxZçóóóô÷ú%fffgiltØfø’nt¸—|€œÃA‘`eHH¡—cã­CK!˜ eŠÔCˆ²Ù A˜ jÙH·Þ%a˜dÊ3(Êfj–$š–/ê–u *—…†‰ŒZ—êr““‚©¯ #}Ó—éü 'n{s˜qƒ…ü3ÁÄÄÄÆÇÇÈÉÉÒÕÕÕרØÙÚÚ¬W óô÷GKUZfgi¬¾œg²¼’A_Ì—!èúÿ.6GKUZswš¡££¦&lqt𡬾Æïññôì— ER‚»Æý<‚ªÑõhôge“{€¥{˜ciˆŽÓØBG‡Œ°¶×Ý$ŽN $IW”¾É M’¼ã*îYsš£¦ñô.—„†×bçè%&B7“ûŽÅw—ëõcsCK÷— a†Ñ@…®Õ@O›»½ÀÆÇÇÈÉÉרÚÝ –23 ‘ìóóû0 *ffmuœîÒ3++ÒT¦’_EJQ²ŽN™ÆÇÇÈרØÙê ar||€€•¦¬ÇÎÏâãä%%AGKTTYYz„„––­·¼¿ÇÇÊÊþ >N[ƒƒ““¬¾ÉÓÓåå,8AJ]_js¡[‘N[ãäñnpq||}~€€‰Š‹Œ”–—œž¦¦¨«®±·¼ÇÎÏâãä%)1ATYyz„–­·ÇÊàî24[ƒ“—ÈÉÓå8GGMMqq ¡—‰ŒÉÚD $(/D—žÆÈ×ÙÄ—æîîîîôö27$```agi¢Téêðþ >NQSUV,/13<lstw†™­Žê airœ¦¯±·y4ÈAJ]_js  –.<DQ^²ºÅÎôü 9§ÎÍ–jGHKMNOm—êùüþ&afrrä›®êRé0AJ]_¶‘ f*sšáQ/OOö–v 6˜ gŒÖEŠ´Û"“Ž_“'.q¥{<DQ^²ºÅÎôü 9§ÎVVß—ëû0)muœ¨W ÀÄÌÑÕݨŽj(’6w¡ÆH—­®²¶è—+!=ERgl€‚Œ‘³»ÆÖÛõý:<EJ€‚Ѝª´¹ÏÑÛà"'“ÅQ“œãäñ‰Š“”–žª«­¯»Q˜WY`UW^©˜ Dÿÿ±– Dÿÿn Dÿÿë“ @ÿÿIP¥‘ @ÿÿ@GÜ“ @ÿÿ29H‘ @ÿÿ*0*żȤɸÉÓÉÑÈ*Æ*żWȤɸÉÓÉÅ*żȤɸÉÓÉÑÈ*Æ*żWȤɸÉÓÉÅ#×,4CKa—˜+.37BEJNØf¨ŽXH‘+l‰4# ‘`mta˜S²NUÊf²Ž +.37AEJNXl¦¢ê‘+A“7N[‘__¢¥¦ë’5Lë“Js˜_„†D#U¬WtT‘uv“—¼’.EÜ“3TZlnq‡ž}d58LO­Ž +.37AEJNXl¢¥¥‘A&3&'>ªÞ ,.47CEKNamtþ‘"f˜[„„†r tvw…‡‹“—ž¤¦§_“Ÿ˜,/47CFKNè~ DÿÿYY¥‘@ÿÿÒÕH‘@ÿÿÎÑ¢@ÿÿÊË× @ÿÿ ¨x’@0¢¢…’@0¥¥•’@0¦¦¢’@0§§¶‘@ÿÿˆˆA‘@ÿÿ„„[‘@ÿÿT‘@ÿÿqq5’ @ÿÿ®®÷ @ÿÿ­­ë @ÿÿ¬¬’ Dÿÿcc’ @ÿÿ"^^ê‘ @ÿÿ#MM}‘ @ÿÿ$*Å*Å?ÅWÅpÅÅ*Å*Å?ÅWÅpÅÅ*Å*Å?źÅKo*N*****Ô(ºl C C7ÞÅâÅæÅjB C('d--..//× ÐÔ÷­‡‘!%IŠÍG’ÊÎÒW’ÊÏÓ0’¦‰4"qH^A‘*44„²N#¢&00Êê‘KMÎÒk`gÙë¬[‘+55c’ÐÔD"#$¬W¢T‘)33q$’^$}‘•‘!/J¥‘(22Ò½‘-.Í‘./5’®ö--..®MîY§¶‘,66ˆÞ‘/0123456þ‘X’\acËÑÕ’]^`n’ÐÔO’ÊÎÒH‘'11Î(’¥ nnŒ@0&¢ ooŒ@0&£ pp3Œ@0&¤ qqE @ÿÿ¥ ,,™U @ÿÿ¦ vví[ @ÿÿ§ ccV[ @ÿÿ¨ bb†[ @ÿÿ© aaš[ @ÿÿª ``¾[ @ÿÿ« __­[ @ÿÿ¬ ^^\ @ÿÿ­ ]]×[ @ÿÿ® \\*\ @ÿÿ¯ [[\ @ÿÿ° ZZu[ @ÿÿ± YYd[ @ÿÿ² XX@[ @ÿÿ³ SS[ @ÿÿ´ RR$[ @ÿÿµ QQåZ @ÿÿ¶ PPüZ @ÿÿ· OODf @ÿÿ¸ JJcf @ÿÿ¹ IIôŠ @ÿÿº HHSf @ÿÿ» GG©U @ÿÿ¼ BBc @ÿÿ½ AA·T @ÿÿ¾ @@ÿb @ÿÿ¿ ??Z @ÿÿÀ >>³Y @ÿÿÁ ==/U @ÿÿ <<£_ @ÿÿà ;;íb @ÿÿÄ ::Æ^ @ÿÿÅ 99a @ÿÿÆ 887\ @ÿÿÇ 772] @ÿÿÈ 66Q] @ÿÿÉ 55NU @ÿÿÊ 44 ] @ÿÿË 33U @ÿÿÌ 22U @ÿÿÍ 11èX @ÿÿÎ ''„ @ÿÿÏ %%e @ÿÿÐ „ @ÿÿÑ !"#'()*+,-HÏy‚y•yáykX•|3x„w~Îm•|3xú|!y8}E}R}HªxÃx xÏxÜxÎm•|3xú|!y8}Ï}R}Hªx_y xÏxÜx*•|3xÜ}ì}HÅgEKoÅgEKo¯ƒ`HKoÞz‡„M²ÎmZz´u\~j~n²ÎmÞzôz{{Ÿ²ÎmÞzôzá²Îmºw„{•{{¶{Á{³Îm||„{•{ƒmI³Îmôz„{•{ƒm‡³Îmºw´uÌw„w×w·³Îmºw´u·„ï³Îm¤~´u³~„w´Îmê~´uþ~•{G´Îmì„„…M²Îm|{´ÎmÞzizôz´Hâ„ì„´u…Ä´Îm¬…ñmƒmô´Îm7mQmlmƒmšmÎmÛmñmƒm,µWµÔ(*Ü}.opµÔ(*Ü}*‡µ‡µ‡µ*™µžµ£µ¨µ­µ²µ·µ¼µÁµÆµ‚«ËµÐµ}«Õµs«x«Úµ@~¸lºl Cr zux{~„‡õ)‰‹zG@~¸lºl C Cߵߵãµ7’ÇWoÇ\ G]nV‰yU†9‹c‚V‰Âe–kÜ”ZqTcÁ4fôŠHýT‡Š¥ªWlz‹\=‹jopq&3v†[aÆ^9/U<ÏX¢ï`µa8\Z˜^Òx_¤¸`‘8fa\¯\ÆA^ÌÓe eŒ¡eŒ!‹]*\[³Y=SfGüZOE,†‰Œ‘”–˜›ž ¤§¬±´·¿ÁËÒåZP…\Åå`µ%‹^U1NU4.^Ë®e–·T@÷T¿Á×[\7\7×\’ž ¤¬²´×]‘Wa˜·f»€YÈÍ@[S „©UBI^ÍÔ ‹O)‹_2]6Ò]›·ra™œU2YÙÛ_§ûP„%Z>$[Qd[X\]DfJ€QU†‘±´º­[^í[c ]3íb: ‹R-‹`M‹x~66ZÏV[b–\Ö6`¬–fž_rt·ŸVŠYÙß\¡¤©­ÿ_¨ÿb?fhU†¨W ™œ¡¤©­Æ×ÙèX'ˆYÅÉËÐÒÖ¨`›ha˜hc¿±WpqYÈ[RQ]5Q`®q`±cAñd½‘e~Œ‹X1‹aš[`ú^”šfºƒUt†‘’”–˜›ž ¤§¬±²´´ºCZÏÔ£_;cfIãZ¬Wky˜›ž ·ŒYÅÉËÐÒÖÌ`´ìa·u[Yõ_”–§õa¸‹Y5‹bþÈÌÏÓ¾[_^`¯Þa·Þd½~fžpV‰ðS™Uv‹[¢Wm{ YÙ°¶£/O2/I../../lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/DSIZEOF_UNSIGNED_LONG_INT=4/DSIZEOF_UNSIGNED_INT=4/D_M_X86_M_X86”ž/ACWDc:\libtasn1\windows\libtasn1\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"23C:\libtasn1\windows\c:\libtasn1\windows\libtasn1\ºpô ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 “ºŸ/ACWDc:\libtasn1\windows\test-tree\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"2¼4C:\libtasn1\windows\c:\libtasn1\windows\test-tree\ؽ8÷ ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 ¾¡/ACWDc:\libtasn1\windows\test-parser\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"¬¿6C:\libtasn1\windows\c:\libtasn1\windows\test-parser\PÀØqY ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 ƒÀ¡/ACWDc:\libtasn1\windows\asn1-parser\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"$Â6C:\libtasn1\windows\c:\libtasn1\windows\asn1-parser\÷Âjb>ºU/O2/FD/EHsc/MT/Fo\\/Fd\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86X86 Ü/ACWDc:\libtasn1\windows\gnulib\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"¼Ä1C:\libtasn1\windows\c:\libtasn1\windows\gnulib\++ +eÁ+ê0 ÑDÿÿ˜™š ›_$¸»ÜÞàâæèëíïñõ÷üþþ !.4JLVfimpæ+-FHTOT\^cþèôú ,6;?JO“©ª¬r’  § ª |A”&3Cÿÿ"248@BF»®ðÌ5”&3Cÿÿ:•7$&(+246<Œ§­²´¼¾ÆÍÛÞæèîðöøþ ,.248:CEJLMOWYZ_lnvy‚†‘˜š›Ÿ¤¦¬®¼¾ÄËÎÐÖÙáèêïðòúü "(*@JMORTóGKÛÝáãçéíòûî±®”&3Cÿÿ:âæ÷ÂÍÏ•(ì”&3Cÿÿ• *,029;CEGQVbjyy……ÃE9cï ”&3CÖ("# #_&,8;=?lvŸ¡¦©Üàâèøüþ)/69;DPX[my…‡¥¯°¼6K—šž ¹ÄÅÑÕØõøüþ%(F#"q”&3Cÿÿ #NUXZh…PuDê¦Dÿÿ !iuFU ¨ =   !šøvX¨ =! !#za× ¦D ÿÿ !>z‘D   !›B~-¤úÈýC ÿÿ !mrm€ tD;ëC p}†€cD ÿÿ   ™Ÿ€5366D   ˜¬‚ 1¦îCÿÿƒ$WŸúÈýCÿÿ  6ƒ¦îCÿÿ  "k„:¶úÈýCÿÿ !"(†ÌýCÿÿI†?ÆýCÿÿ "$&(*,-/c†Å ”&3C ÿÿ$"#( " !'[]adhj’ÇÊÎÐãæêìNQUW]‘gt~ ”&3C Dþ("#) !KNadz|‹Ž”—°²¾ÀÉË×ÙÝàäæ’”ðô  DGSWbmy|˜¡¤¨ª›‘ 1ã”&3C ÿÿþ57¦{ZÞ”&3C ÿÿ %Y*Y #%-/=?»ÊÏÒØ";;VmrŸ«[ Ñü¦D ÿÿ"##" $º« ;”&3C ÿÿ" "()+.138:Aü«d“”&3C n # *04:?ACFHKMRT[bilrÇÉãæ9¬ @”&3C ÿÿ,̬ $â”&3C ÿÿ Rëµ'Ÿ²?ÿÿ f¼$!Ñ6ëC &!"#$Êÿÿÿÿ⿵6ëC"ÿÿ Z ±i"D#ÿÿ !#%'-/8AT_prz~íÄ*âýC$ÿÿÅ$nŠ"D%ÿÿY!7JL`bêÅ2;Š"D()(DgjKÇ #\Š"D(ÿÿ(*"$).?È0Gx#D(ÿÿ*'*&D!#%').0moq‹¥¹${#<?DHQV^n“²µº½ÅÈÎÝô÷üÿ 9L‘§»Îâ)VXd¨‹ÉŠ"D)ÿÿ*&"$&(S­üÉ$nŠ"D(ÿÿY()!7JL`b* ‚@(@ €    @( @€9¬?È(f¼ k„m€ †€•(Ÿ€̬íÄ$Å%Pu]‘iu‹É)›‘ÃEêÅ&ëµüÉ*F¦#z (†>z B~ I†ZÂ#c†e|¬‚»øv ûƒ6ƒKÇ'Ÿ«º«â¿"ü«!Ø‹–Æ9÷9iY<`<› )‰ºëƒN4Õ=v/—Ï IÃ…ë Y!ã"Ž!>#Ã!ø!-"b"ˆ"®"l#Û#­+$I$;&k&q$œ$ž&Î&Ä$'.'ï$%^'‹'B%j%•%½%è%&»'ä'£,(*?*9(e(>,o,Ž(s*¡*º(ã(Ò*+)8)d))¹)â)x ¾i «Œ¿"¨“A5îlSõªŠ{%ÔN<Új šÆp­]–Cnáçz˜d¥£.@UÃÅ^xG‡!I_1ÿ ƒ¼'nóï.Á¥ NõØÓ¤Þēއ ¦ cvðøÑ +<ª“ é G`Öá¹ '‘QÃÑ™;å… Ž r¨[ê‘’Ë0‡ Á bî $x ± TÜ p ¨ <Ñ ¹!E]½ Ô  Þ | S ƒ ÷ ® N  Å Æ j = p ã – =  _ . d 3 ö YoQoeé‚Ò‚ - :Ù9:ÁC–©ó  s $ ­ P M Ït K ô ( É œáŠ _ < < ¶^ 7 Ü  ¶ ‡ 2  ^tðá¢^àT+1+h+·Þ¸‰yÓ;î; % †[ù'†–yg<kk›[>—0C>CYC›C³CxC‰C€îÙ ©Qã]!Z÷Y0XiŒ"VùU\ZJX¼]š]ÙTçVVTVÕ^^§Xf=V©^÷]ìWÞWedSU_2RØQe^_·WR^yX’¤ZAUXd€RÂYJ\ª\vŒÌWÍU÷QÉQçQ"RŠ^|^pdEYœYêeãU–mY‚ÁEÜEýE®>õEFV@^@È>Õ>ìEFEHô?i?Q? :1ƒ8…@ ç«=Íi±i>l>>Ý>u çB—>N 1=rz9-9+3ˆ9C¤h€ðVgÈNÁƒFå·gBæ=5/:F,‚xGˆDd»Ó¬i¥ ¹ ¥†š†‰‡~‡%€@EÎ…È„¹„´†r‡È9ù8¤;ï…³?°ExE%Xw<Õ>3>˜|„pÈE¶E¢p§||½px{NvJp¬rnápXpq¿<do{ou+t uu|1q‡{`v¶|Ä|“q‡qÔ|¹qð|`pâ|Ãq}^E$xsw0x>x}—zŠzÖEÎEµ…¼;Ø…V3´<S;é<=ïrŠ< tï:ø…†8=P=$=ž<$|>|áqë’©“}‘Z—®’¼’“ë“Ü“ï‡úqÖ{^|¨vŸvچΆž‡’‡ÿš66Ä6·6î6å6:@+@äDÐDu6j6{&a5Bn 5gñy.…P‰m„ðˆ¬„„3R;en€nøopÂoÏoéoÜo§oppµoÕ€V€Kƒ—ƒŒƒ4€C€‡€û€…‚|€è€Â€¯€i€&‚‘e‚ó‚݂ƂÐP‚»;‚‚ü¦æ›€%@@åCÝC¤99K9€i•Wa-Q-ó†ä†·‡¨‡€|“9ÁF*F¸@«@óCëCSF1F1:&:µ:E::::Ò@•A‡AÛ@å@ñ@ü@.A+jggˆg¢‰Y‡Î‡O‡Ä‡"† Tn*g:g[nä„Õ„{FÚ8È8==N:m:^:¾nWrlv–<r¹t6tÃtÏtT9Nܾ:1|N|¦F¹F1rÈ{o|¯v±&C|:’rÃFÉFÑF×F²r§r0sšunt¦uÜvÎx¼wÛxGßF+>®;K3ÆAÑ<4;Ür‡tÐ:2HÊrˆ fHÃêstêuÞusÐukss`sts\w yAwúxØzðzÌzâzÒG GZu@teuMuVsJsJo4‡oh,h*‡‡ÿg˜hŒh ‡hh7hAhÍháhÃhÕhMhWhýhichnh(iiAi½g³g>‡3‡éAh@z@úA†@‘@ B|]€i”iviˆi¦i1Ghy(wwx0z£w…x“xRyÁz´zá;ù;-ok-ép±-G‡öÚ‡ 0 †Q…?o)2=F±‚œ‚á 6p0†k‡£6Í6÷6M@B@÷DìD}64DB;BDùC!}–{|r‹|ºX%uKt1u?uLxŠwYxhxÛtWtætótt´uztÁu^zjzÉwêxôstvvsøugw&yNwy€ubtŒuru~y4w¡xD€<"{5{+{I{={>vUGIDRDF=^=0=mG`GÈnG«<S{×wwâwïw–GŸG[{Œ:{ {¸GªGÒGÄG#vÌCCGzˆnˆ/jˆ„ˆDIzˆo{d{¦D¬D´DEEºDÂDÈD>O>'g‘Î2^ŽZ1Ž‚¦· ŽtGEŽå!ŽúRŽP=Åa>†w†ec‘e6ZÞdåZ$[[@[üZ¸`®eú^Ç\x_Û_6`Q]ÿb©U ]£_q`Ì`Ušf7\˜^–\.^…\NU YZ³Y·T~fqYpVhUDfSfôŠcffÞa¨`EU/U\d[†[Æ^¾[í[íbu[V[š[×[\*\­[ƒU™U2]aWaç©>¾>Ð> –Æ – –(-Zr;?ï>MnœÿBm5°5§5Rppyp±‰®†I…¦…CSeRITÔS8T|bRÅR1SžRÞRéRë^âSWR‡b™_dSÊSºRGR'S¼o‰g‰¹‰¿•ó•J”ÀfµÏ„Ø3^‰—?9é•$]ŠHÌo<¬TæE3îÜbbYàX4—Ö_>»8®8£ÆUd}Hpªp¯p¶p¦Tn}ÇpÔpGv‘v6;ŒœªoÚp?dw}ÀU#oq·_toŽN!q+q€};qYv˜vAqTqÇ4fq\qö€qwq¥qq³q¶v¿vÍq‚zxz”HØèÔqÙq½?Í?¢Í–H‘¥‘õqîq¦•@–‰}kvqv~‰u‰½ñ¬û³„=bî5æ5Eþ‚Í€N€¡ƒ¹ƒ±ƒÊTó€z‚t€à€º€§€a€‚ˆq‚\‚½‚ÇG‚²2‚‚óÜ’€™HuT~TÓnÜnV>z£-i.ž@&96c«bÀb"c „Tchceo)d5d16?6/-‘‰…‰6 6©-žH¨Žf4èX^b„›X»9¹5¾@~A8A AIŒ£gsg/`àV“g«gZõgœg›‰Ò•ë_=‹¸—&3í\Yë„a3½Hð8T‘A‘[‘×ü5’¶‘É_J}h¢d·d—FQ˜rr6--a·a‘ar$r£H,rŽ}zv€vK?C?¡A¬9³CTr[r÷R‹r,]“}U7+½_¡r™r€5v5ûno oŸÃr»rÍ5Ä5 L7]Y,YÿssÖACs:sM‹ëNšo oc RÎgÙVÒTòi$hRÅg{hëib‘Ê;°h‡úiØOjdëhõhdi jãgëgj1i9ij!jIiPiâAhi_ióAB(jžiªH—zw¬z¢zuHHS}+B}-Á\}Ž“Žþ•×,¨.î,¬‰»‰]…7o–sŒs§sžs©ƒ…!¨‚“‚z/TSS#TR­R¸Q‘S™ZQS°SobÑRÀS¡SoSïSýSTT÷RwRSˉe‡Š5ö5NI66¯Hk °T‰v,„r)]Ö5Ј©®s·sçvñvÂsÊsàsÔs—c%s"zwývwQjHjXj_jçkojfjvjXlYˆfl›l~jl¡j—j©j»j±jnl…jjwlÃjËjl†lÓjÚj DêjájDÄB˜B+D”l_lÔkTBKB•3vŽÊvÒv{üz®3`NOKOÇNwM]M•KºM "MEMÑK³£ßLèLQ¸NOMWMN1MŠMe»MCLÀ4÷3¤OKL¢NSN0{·4°OL¹\LcLlLRLþLòL=MàM)ÕLÚL­M NŸ3¶4¡4ÁK4§K*MÙáM MùMËÏÛ‹L›L©HŽ/vLï3– Š­÷.ì¯Uÿð£üÇ3ÿÕÏþóù=–»§µ{}ç.ÞÛêé|¯E¿bÝ~¬úËPmž?®û¸ðàgÿ1s_Xã`ü8ó!¨Fàdo.bψ&¯/¾ò?¸…ž[›SÈ.þ?š¾íœ±a(Ícð¯gýùóü¿ÿø¹_•«~žWö=M6òhíù9þý¾ÕæŸ}¶Ú¥&wUÇèð“Ltä5šUññ>çݳ_áç¢Ãß®¼ÃñšmÒ ¹°riùö*YÙ—Ÿ«k9¿ÊkÞóÆã=øLœt‹ Ïg‡‰ý¼µŸ¯˜g9¿7Ê¥ç&ñ#uðfœPÂö–ç1¿Ô8â:ã0×_\‹7|bð—Ý?3öÈÀ×".Át9ã=>g逡oÒvƒÑèÊ'Ž~Œû¸¡ã+¬û8;1ä²/>c¶'þÙ“ÀHrJ»@j8’|tRq_V)ùðÁG¦žUžôÇøàóóò*ë‹­oü'¯ÒòÜ ï”vi|õJ>ã?U±éµ#¼L WoÜeÅ|Ž ;è/ŸN‰LžŽ.ûT063šâøï‘UX˜¢ÈÀÆCŽã5 ×Ó¤ hÄf‘s<>Ü„X%U4ÞŒK¹ÕI]\ºaS-zèåð—® .ZSÂ'2ü‚.8à ˜/8¢¬È'¸Jã¡’Z0.‹ˆªì }–"¶•ɉÑ"ƒYUÒèbŒdÜG•'žÇOcƒ÷·ù†îìãᬠ7¾*Þ˜yê§|nà™ó†8z”MNÇÏ6ÇsØÑÁü`ª €€ ž@©À=[*Ž £@¸kÍ– (( ¿§@F)«@¦§ÄkÙ–(³@QZ(=V Êk¾¸@¤¤f 1+X[Y'¾@£Ôkê–(Ä@)½eW&ÜkTV0¼Î@F+oV%Ò@¢çkö–(Áxk=»Û@¡ïkT+W—(Eå@ pV#úkˆ$lSºñ@Ÿ‘#Þh+V—((Y&'?‚V#"ü@žl&—(" *—(e¹V#}+U¦! Aõm()l4— ((%.—(A&l² ŸV# =—(AŽ+{¸D—(» 1l‚ ªVH—('AÇž+>l½P—(·.Aœ¸V  ÐZ— ((– ª+­+S8Aš›ÄV Ü£¶ËVCAXl 1m—(æ«ÓV _l¼ÙV dŸ (w—(flóàV µ  ¹µYAnlGçV üÁ ‡—(wlÛ+fA—(‚8lÏ´nAå+™—(†l‚ê+vAd_eÛ1lW¡—(~A˜‚”lù+«—(çW³‡A–—&‚›líV²ñU±¤lW  ¸—((2‚•A” ,,üT°Ä—(;‚)W¡A“S¯·lÌ—(¦AG‚ R®Ó—(7WQ­Ù—(²AP‚Èl!P¬£ß—(¹AEW#O«\‚è—(ì—((NªÆA’e‚>,?,M©Ûl%WW$÷—(q‚6L¨ÖA‘ìl1ÅdW%>K§ÜAz‚ ˜(âA…‚  JJ¦éArW   ˜(m5RI¥˜(óAŽ “‚ YH¤o,>\G£úAç!˜(œ‚ m@cF¢BŒ W¨‚ ? B‹6˜(rE¡¼$mE±‚ W BzD ¢W   öA˜(CŸ ?½‚¨W  (5mM¬W  #%()*…Bž±W Æ‚Q˜(( +BŠ·WA£,GEmS”@œ2BÒ‚U!a˜()œ?›;Bˆ‰Ÿ>šÇW Ý‚Qf˜()£=™ÌW UmhDB†¬<˜KBƒé‚Ts˜()µ;—TB…ó‚P@_dÞW  hml[BÑ,†˜(Á:–þ‚ aBìW  ×,Æ9•ymyfB‚Ì8”ƒÐ7“—˜)rB„_ üW #Ø6’ƒj î,+Šm€Ÿ˜)|B X ©˜()"ƒè5‘›m„‹Bx-*1ƒi?ö4˜B€û3®mˆ%X -)Á˜ 2ŽL?ƒ£B0X  Eƒ -(¿m‹˜Kƒh  ³B/-%YƒÑm]ƒXJX  ÄB~A-¸ ÍB|}?äm¨I-6! "tƒÂ`X ;0ÛBzQ-$Ë jX ôm¬E  .  "· çB‰ƒa- #ŒƒSyX  R/n  "#()à k-;—ƒR_  % ÿByë  áƒO h.C‘X }-©ƒNo-"Cù†-›X±ƒMCvz,-¹ƒL§XC„X Àƒ™-&Cu£-Bnf’ #+0Ctσ©-׃Mne±-:)__>CsTnd ÏX [ncª*4èƒÃ-NC샳enbòƒàX Ì-»ŒYCrIèX W  "#rn`Ø-„Ë‹€n" „[blpCæ-‡nÙ"xCqY ð-„Œnico‘ná‰ö-' Y  „Z —ný-‰Cpn+„{.Y  £nõY‚¬n.›Coþ 'Y (   ´n,Y Š.¾n_—ˆ$.³CnÈn^/.EYÓn]"²Ün\SYÌC/!C.m„ ]Yçn<x„ÆÝClmÊñnV.„ÏåCjH qY  ûn[ ëChi?ØŒ„oZÝT@óCfßi.€Y ùCdeo.]ç oYˆY  „DbîŒY  oXôk %'* Da”Y .ù¬„#oWD`ýœY †.w ³„.-oVD_¹„€ ”.!D^«Y7oU›.³YJ  È„+D]Ž?oTÏ„¨.3D\!Jo7Õ„ÂY %œ(>DW¶..Yo ä„©ID[ÕYë„;doQÛYRDYZ?ñ„¶‡áYD  #%'()*Ï.9F¿]DéYtoNîY %(*{oRòY VÍ á.mD÷Y „o]Ô‡oMZI €DšoPˆDþ.8@ oO Z¡.…c~§oL!Z 8…b/¯oDVµoK-Z /7¦DU”¼oI…Y¬DT6Z  ÂoJ (/Q…a´DSÉo?CZ  ºDRÏoI]…O5/6KZ $ ÂDQ`…°ÖoÈDPg…TZA/ÜoH¹ãoÐDOn…\Z F/Á « éoGv…ÚDòo~…ÎäDN?øoF……Ó ÿoìDMØxZ (…zZ g/pE÷DL•… ppD…EKŠZ d ­Z pCEJ¦…`l”Z pq™Z/ EI&p‹/µ…J{¬¤ZEH0p6pBÃ…Nˆ(EG ¹ZÎ…_3EFJp# ÁZ Ø…I±/ (Rp@E.XpÐZ å…M4 LE`pï…^ÝZhp·ø…HGåZ? Ó/ ^EEppNyphE†LX „prE†]üZ@  xECDñ/ p †Gi €E–påŽ[= '†K@uE¢p|0†\”Eªp8†$[>  œEˆ ¯p¶p£EB†0  ½p›°EAÇp¶E?@@[<  Y†Ïp¾EÔp#®  %'*c†Úp*ÈE=´'V[1 ¹ÎE;<áp4p†K0 ÖE9Ãépw†DEd[; ÜE8òp†FäEÏÑûpJ‰†ìE7u[:  †q õE6”†â^q ýE5š†@Aë†[2 îfq}0F4¥†B÷ !q ®†>š[3 F3þw´†=+qF21qÀ†#F­[5 ;qdž*F1AqΆ;1F/0Gq¾[4 #°0Ú†<=FTq,ä†9\qIF×[7 :³ífqSF-ó†:nqF]FÁì‡8wqÿí[0 R?Ë ‡7€qä0qF] (l‡qþÖ_‡c \6 {F,Þg©“q‡56ƒFAÿÿÿÿèqývª*‡3\9 ¥qü1ö %*3‡12øë«q—Fïÿÿÿÿ†ÿêpažF³qû>‡/§*\8 ¹qú¦F+ éG‡.—¨7\P ®FÃqùO‡-)1è ¢Íqø¹F*Y‡, çªÔq÷¬¦J\ÃF)Ùqöe‡ÉF(.æáqõk‡+»¥ÑF']\r‡*L1×F&Äa\  îqóôe\>å ßF$%~‡'(õqñj\Fäo\ úqðÓ¤t\‰‡)rîìFQãz\ríôF’‡$\  rì "#()^âç…\   G"ž‡%x1rëk¨‡"rê< G –\   <$réráar,rèG!·‡#1rçª\„7r#Gć!‰à=r@£1£· 1G"¢7GÀ\›ß_dÚ‡=GÇ\ +¡TræCG⇨Þ[rå4 ×\ brï‡UGß\ Î1ºÝä\ orGû‡ç\`GNŸ|räó\ Ì܈mGø\ „rãÔÛý\aì1‹râÚÚ xG=ÿÿÿÿˆiž’rááÙˆ[ ] ] T  ™rÞëv¡ràðØGÿÿÿÿ-ˆ§rÝ–Gû×$]0 9ˆ2²rߟG)]2 ,]1 CˆÖ»rØ2]Q ªG—œÃrÜOˆÍde ÊrÛ¸GYˆ@32ª!ÌG] ×rÄGbˆQ]R ÜrÚ·›nˆÒG`]   <ïrÙR2zˆÞGËšEË„ˆ sÖ×ðGˆ Þ ™|] sº»q2]Õšˆ ‰] HsÓÔ¦ˆ mÔ÷š]  %sµ¶°ˆH20sÑÓ%H:sΰ] CsБ2H ˜¼]  —ÒJs͵2 @HVsÏEH ¨Ñ2Ò] KH`sÊ8×]  ðˆÉ2!VHks̹ÐC —ã] tsÉ`HÿˆÜ2"fH ʉsËmH[÷] ÓÏqH%*F‰uHŒsÇð2&h–^ H–sÈëžsÅÆŠH H §sÔH 3'ùΙH®sÁ‡žH?)^  ·sÀ£H.^  ªH Ê _Âs¿¯H&3Sÿÿÿÿÿÿÿÿ  #()!P‰ Éun+3Ês¾µH¤•A^  ȽHI^ Ôs¼^‰ $ÇÄH>3g‰R^ às½0ÆE3o‰K3ês¸u‰Ä<Åe^ V3ôs·C ~‰@Ï…‰a3 ÿs³TÄt±j3$‘‰l3|^  n3úH›‰t°bÃw3Š^  ¢‰{3ð”t¯pÂI†3¬‰@˜^  ±‰ZxÁ+t®3¹‰©^ 6t­#I‰‡ÀŸ3†@t¬ˉ@–¿Ò‰¿^ Kt«®3…œ¾4²3Æ^N +“Wtª ©½å‰ ¿3'Õ^ bt©Ê3'(¶¼XI#nt¨ø‰Ò3(Jë^ Ø3''N’zt§Èá3lI.Ï» Šæ3'\ú^   "#‡t¦ï3„õ3áº÷3ƒI:Šü3(_ þ3w t¥ŽI>ó¹  41Š&€‘IB'_  ¸¹t¤4‚CŠ0“0_ ·¬IXÃt£<_ *4  ¶UŠ4D_ Ït¢§¾Ic«;4( µÛt¡²gŠ?¶O_ U_ ÎIgæt À7 ´ybÅQ4yŠCÝIkÈótŸX4]4K ³užìI{ŠŠPx_   f4w#(lßm4 u•ŠQ_ ²u4Š_  J ŠR_ uœ’_  "(4ù¬ŠS™_ %u›s ±‰4%)*J‡£_L 4¸ŠT1uš Œ#J•‡ °ÊU4¡4€?u™·_ ¯‹ÏŠV½_ 8J™Mu– ®ÛŠW+5É_ ·4~Zu˜3ŠçŠXÀ4}­ ­ JJ¥Ö_ Ç4x#("eu—Û_   Ì4  "#(ôŠC YJµE4½ ¬ru“N‰Å «hJ¹ ‹€u•õ_  ‹Ô ª‹a3ÿ_ ‹Œu”xJÒ‹‹kã © ` !‹šu’%‹)‹` -‹|ˆ¦u‘1‹ 58÷ ¨ep5‹!` 9‹=‹& ´u5Ž2)` ¤Jù5/`¶  §•1"5Áu 6`   M‹  žµJúÐuŒ ¦_‹!°Q` ÞuŽ·ÌJü»,3 ¥^`  êuÂw‹"d` = ¤ÝJýøu‰q`   Õ‡a5"N £ñJÿ‹#v‹m5!æ0_ ¢v5 vŠKî /Œ` j ¡€5¨‹'ö†#v8œ` Š5K|  ¤`  .”53v?¾‹(¨`    ö˜58v'K …>vˆŽ Ÿ¸`  §5Gv‡Ô‹)› ž°5Nv†;K% -Ì`   ¹50 „Yv…¨ `v„LKÄ5± œë‹*@ ƒÍ5kv<ƒå` qv‚Á ›Ö5aK N ‚ï` zv;€Œ+à5€v~Ñ šú` æ5oK ‰v}î5a Ü ™|K ‘v|Œ,k ö5˜v{aO  u €ÿ5Ÿvyzî ˜‰K 6€ ¨vw•K3Œ-† $a 6¯vv —_pK¶vu-a ¢K6§K| –¿vt6a IŒ%6OŒ=a @a Êvs¥ ~16»K •Òvr[ŒÁK{± ;6Üvq?6iŒ¹ }Wa   ÏK'2 ”deÑKzI6çvpØKvŒÆ < “ÛKñvoha T6àKÏ |<æK„Œ" #ÿÿÿÿra ývnM ’o(Ù {ya wmj6á z÷K„a úKr6wkl^ ‘ë yu6 þK L‘a }6 whiL†6›a t _p(wfŸa 6 L¨a L–64we­a š6 !Š *L·a £6 Awcd<0L!­67LNw`a'!Åa   Ž·6CLy0!\w^5!Óa À6KLxÄ6xL*MÎ 1Mn"– ‚Àb LxK9M&"±7-"tYxJEMmå Õb Á7® OMlÜb hxIWMkú ]MjÔ7íbM wxHÆ €fMS"kMä7[" Ž …xGÿbH b"swMiÞ ô7“xFM!Ž cF ŠMh¡xE8’M1Ž ö ~"c ˆ"r°xDMg8 }¤MEŽ ¿xC6c ­Mf'8RŽ  |ÎxBºMe^Ž ®"q98Nc ÃMÛxAÉMTc   "A8. {ÏM ÒMqŽ J8êx@ØMdc = zxŽ hc    "#T8àMX}Ž ‚Ž úx>Ô"^8‡Ž "ëMÜ"zc g8S yôM y?“Ž " "ã"pùMds8‰c Ž " "y<NcŽc |8i x)¨Ž  "# "#() Nb—c² …8­Ž "#()&y=²Ž "#()"N c x wŽ8N·Ž Na§c 4y˜8#‡ vÄŽ "*NÉŽ "£8#“ u2NÂc %#®87ÖŽ "=NRy>-#?¦ t»86⎠5#JNëŽ >#oÈ84hy;ßcTN¹ sñŽ äcúŽ ry`N`Ú8òc~y:öc  ä8Ñ rrN‰y9dð85dxl#n–y8ù83…Nd   é q) $ ŠNŽN    "#(¤y9 –N9®y'd%*9)d  p; 9 ¢N_9¨N5d ˜#&9#²N%)*R ?d-91o¸N^¨#LdÂN±#'n=9ÇN]i Xd»#H9K9×NÄ#<medñy T92Ë#ÝNâNÐ#pd\9‡"Ö#ëNN #(Œ ""Û#me9zQl}d()&òNdd zp9z‡d`kœ""ŒdOz9dz’d"z¬""†9œdˆ9þvj<³""$¢d,zO0z“9û¼""!O$|2·f¤; ‘RÍ‘%*1QÀf®;í:QN|1Êf()Þ‘%*FQ¼;ìªQ^|0LQê‘%*%)**Øf#();&fRQÊ;Žßf  "#$(XQo|/Ó;ë^Qþ‘%)*ÃPiQá;€|.’%*%*ÖOt tQ‹|-î;ê’%*%*zQk&L€Qù;˜|$’%*(’%(*<ðNQ0’%(*§|gÄ5’ % *%*<™Q Q*g¶|< M©QG’%&**%<:gÃÄ|ž&eO’%&*C¸QW’%&*L2<GgÁÔ|c’%&**ÉQ  @<VgÀâ|n’%&*5KL<ØQ x’%*ð|jgºÎ&KY<éçQ  …’%*sg`¹`<èNJ}zgg<çg¸÷Q•’%*o<ˆg·} w<梒%*R  « #“g´lI€<å R § !} ®’&&œg³(R. 'dŠ<â£g²0}¼’ (&&()j–<ä«g±"R  8}ŠH³g¯ž<á?@}Í’&E}2R½g°«<ãJ},Åg­®Ù’&(´<ÞS}+.'JÎg©ª¨GGR \} ¿<à×gë’&&()%Æ<d} ÝgWR ãg¤n}Ñ<ßø’&(ëg£w}ÆFeR Ü<“&(õg¢â<€}^'cé<Ø“&(ÿg ‰}wR ' ÚEŽ}hž“}€R “&(ù<™}h'“&(R  hœ=ÝõD«}_7“&($h›=מR ‹'I,hšB“&(=ÜÀ}b­R& C7h™$=ÖQ“&(Ah˜ºR 0=ÛÔ}g_“&()&8=Õ%BMh—ÅR e“&(Wh–»'bF=ÚÑR , ç}jch•P=Ôy“&(ÞR AAnh”ù}x^=ÙéR {h“h= ~´““&(÷R% ä'Hƒh]@S Œh‘x=~¹©“&&%ƒ=p?˜h’S+ ¢h=/~ÄS ƒ>(a“ (&&()j°hŒ'S =?~Ò“=1S »h«=Õ“&Ãh‰ŠP~Õ´=Ü“)&&)¥<CS Íh‡»=Õh…†9(Fë“)&&)c~òQS È=áhƒ¼;q~#Õ=Óëh‚ÿ“&dS ~~$õh~(oS( æ=Ó:ýh}”&‹~%e(`i|S) ™~&ý=iz{)”&ï9>Ñ "#()‘S iv§~' >>Ð?(iw>”&¡S # Ž(E>ϵ~(1icu>Î 89ibt°S-Æ~)S”&Ais1>IirÀS 8>Ö~*'7Piaq>>ÊS Wiº(_o” &ÔS  _ioè~%*O>ÍS>hipV>Ì?C6âS oi[>ˈ” &vimnb>ïS* U5€ikã(DýS$ ˆiijv>|>§” &”ign4T ! †>&zžifT  >¦ie1y —>#T )^‡3±i¿Å” &/T" ©>ÊH8T  ®>ÉÛ” &¶>¥2Íi¾¾>ÈIT ^x8)CÃ>È>ÇVTáilJ÷”&äiÐ>Æ\TèiÕ>ÅtKÃ1ëi_$jfTÝ>òi^lT‚wúi]•&uT d)]j\ï>Ä~T á0 j[ù>šIjZþ>T"()¢HT jY0•&—T  !jX™T ?ÿ/(jWŸT±G)B/j»¦T"?ºv¬Ta"c#?ÁuM•&°TÂ.Èt@jV·TG "#Ï2?HjTUÒs ;?ÃÙQjRÜr ÊT> i• ''ct.-¹)\Xj QC? ãÒT  ¦  "(çq_jPK?ÁÙTw•'Q?ÀfjNOð}•'ôpojLI,û†•'ÿovjKb?€Ž•'i?¿~jJ€nâ)A÷T …jI^+ýT  "#€jHy?€m¦• ''(?¾€—jFGU  V  "#®•'%€l´•'¡jDz*?UU #©jC4€F—?¨½*[¿•''ag›?±jAB=€É•'/UK "#¦?»j?C€E–)reÒ•''(eÃj >N€D³?¸Û•'AU  Ëj =V€gCâ•'½?¼ "(Ój<­(é•''sta€BNU S "#Ä?Új ;?*@i€fAó•''] áj9Í?º»êj:Ö?Ä't€@þ•''ñj67hU  "#|€e? –''ciâ?ýj8‡€d=ë?Ø&yU–'kó?’€<? –''ƒU  $  "#k23ù?s*Z›€c;U  "ó%k4§€:  @™U /  "#8–'¯€b9&k0@¶·@–''/k/º€8@©UE $€a7%@´:k.M–'¡*=+@³Í€6Dk-5@ÀU  "cÕ€`5:@²ÆU "Pk+f–(.#__ÍU B@±à€4 j–([k,è€_3r–(M@°dk*ó€2V@¯ lk(ãU Ò*Yû€^1^@®N"vk)‹–(( –(h@­0 ~k&'ùU ]/r@š–(ˆk$ –((z@¬.k"#n!un!-V †@«œk ±–)(+<)\,‘@ª ¦k2+"V °k$ÊC:\libtasn1\windows\libtasn1\libtasn1.vcproj/O2 /I "." /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/ACWD "c:\libtasn1\windows\libtasn1\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\libtasn1\c:\libtasn1\lib\asn1.cc:\program files\microsoft visual studio 8\vc\include\stddef.hc:\program files\microsoft visual studio 8\vc\include\crtdefs.hc:\program files\microsoft visual studio 8\vc\include\sal.hexpr__inner_fallthrough__inner_data_entrypoint()category__inner_control_entrypoint()__inner_blocksOn()resource__inner_callback__inner_override__inner_typefix()ctype__inner_checkReturn__pre __null__readableTo(sentinel(0))__inner_success()__deref_opt_inout_bcount_opt()size__deref_opt_inout_ecount_opt()__deref_opt_inout_opt__deref_opt_inout_bcount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_ecount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_opt __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full_opt() __exceptthat __maybenull__deref_inout_ecount_full_opt() __exceptthat __maybenull__deref_inout_bcount_part_opt(,) __exceptthat __maybenulllength__deref_inout_ecount_part_opt(,) __exceptthat __maybenull__deref_inout_bcount_opt() __exceptthat __maybenull__deref_inout_ecount_opt() __exceptthat __maybenull__deref_inout_opt __exceptthat __maybenull__deref_opt_out_bcount_opt()__deref_opt_out_ecount_opt()__deref_opt_out_opt__deref_opt_out_bcount_opt() __post __deref __nullterminated__deref_opt_out_ecount_opt() __post __deref __nullterminated__post __deref __valid __refparam __exceptthat __maybenull __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull __post __deref __nullterminated__deref_out_bcount_full_opt() __exceptthat __maybenull__deref_out_ecount_full_opt() __exceptthat __maybenull__deref_out_bcount_part_opt(,) __exceptthat __maybenull__deref_out_ecount_part_opt(,) __exceptthat __maybenull__deref_out_bcount_opt() __exceptthat __maybenull__deref_out_ecount_opt() __exceptthat __maybenull__deref_out_opt __exceptthat __maybenull__deref_bcount_opt() __exceptthat __maybenull__deref_ecount_opt() __exceptthat __maybenull__deref_opt_inout_bcount()__deref_opt_inout_ecount()__deref_opt_inout__deref_opt_inout_bcount() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_ecount() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full() __exceptthat __maybenull__deref_inout_ecount_full() __exceptthat __maybenull__deref_inout_bcount_part(,) __exceptthat __maybenull__deref_inout_ecount_part(,) __exceptthat __maybenull__deref_inout_bcount() __exceptthat __maybenull__deref_inout_ecount() __exceptthat __maybenull__deref_inout __exceptthat __maybenull__deref_out_bcount_full() __exceptthat __maybenull__deref_out_ecount_full() __exceptthat __maybenull__deref_out_bcount_part(,) __exceptthat __maybenull__deref_out_ecount_part(,) __exceptthat __maybenull__deref_out_bcount() __exceptthat __maybenull__deref_out_ecount() __exceptthat __maybenull__deref_opt_out __post __deref __nullterminated__deref_out __exceptthat __maybenull__deref_bcount() __exceptthat __maybenull__deref_ecount() __exceptthat __maybenull__deref_inout_bcount_opt()__deref_inout_ecount_opt()__deref_inout_opt__deref_inout_bcount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_ecount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_opt __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount_full() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_bcount_part(,) __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount_part(,) __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_bcount() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_out_bcount_opt()__deref_out_ecount_opt()__deref_out_opt__deref_out_bcount_opt() __post __deref __nullterminated__deref_out_ecount_opt() __post __deref __nullterminated__post __deref __valid __refparam __execeptthat __maybenull __post __deref __nullterminated__deref_out_bcount_full() __post __deref __exceptthat __maybenull__deref_out_ecount_full() __post __deref __exceptthat __maybenull__deref_out_bcount_part(,) __post __deref __exceptthat __maybenull__deref_out_ecount_part(,) __post __deref __exceptthat __maybenull__deref_out_bcount() __post __deref __exceptthat __maybenull__deref_out_ecount() __post __deref __exceptthat __maybenull__deref_out __post __deref __exceptthat __maybenull__deref_bcount() __post __deref __exceptthat __maybenull__deref_ecount() __post __deref __exceptthat __maybenull__deref_inout_ecount()__deref_inout__deref_inout_ecount() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_part(,)__deref_inout_ecount_part(,)__deref_inout_bcount() __pre __deref __byte_readableTo() __post __deref __byte_readableTo()__deref_inout_ecount() __pre __deref __elem_readableTo() __post __deref __elem_readableTo()__deref_inout __pre __deref __byte_writableTo() __post __deref __byte_writableTo()__deref_inout __pre __deref __elem_writableTo() __post __deref __elem_writableTo()__deref_inout __pre __deref __nullterminated __post __deref __nullterminated__notnull __elem_readableTo(1) __pre __deref __valid __post __deref __valid __refparam__deref_out_ecount()__deref_out__deref_out_ecount() __post __deref __nullterminated__post __deref __valid __refparam __post __deref __nullterminated__deref_out_bcount_part(,)__deref_out_ecount_part(,)__deref_out_bcount() __post __deref __byte_readableTo()__deref_out_ecount() __post __deref __elem_readableTo()__deref_bcount() __post __deref __valid __refparam__deref_ecount() __post __deref __valid __refparam__deref_ecount(1) __post __deref __valid __refparam__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __byte_writableTo()__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __elem_writableTo()__inout_bcount_opt()__inout_ecount_opt()__inout_opt__inout_ecount_opt() __pre __nullterminated __post __nullterminated__inout_opt __pre __nullterminated __post __nullterminated__inout_bcount_full() __exceptthat __maybenull__inout_ecount_full() __exceptthat __maybenull__inout_bcount_part(,) __exceptthat __maybenull__inout_ecount_part(,) __exceptthat __maybenull__inout_bcount() __exceptthat __maybenull__inout_ecount() __exceptthat __maybenull__inout __exceptthat __maybenull__out_bcount_opt() __post __nullterminated__out_ecount_opt() __post __nullterminated__out_bcount_full_opt() __post __nullterminated__out_ecount_full_opt() __post __nullterminated__out_bcount_part_opt(,) __post __nullterminated__out_ecount_part_opt(,) __post __nullterminated__out_bcount_full() __exceptthat __maybenull__out_ecount_full() __exceptthat __maybenull__out_bcount_part(,) __exceptthat __maybenull__out_ecount_part(,) __exceptthat __maybenull__out_bcount() __exceptthat __maybenull__out_ecount() __exceptthat __maybenull__out __exceptthat __maybenull__in_bcount_opt()__in_ecount_opt()__in_opt__in_bcount_opt() __pre __nullterminated__in_ecount_opt() __pre __nullterminated__in_opt __pre __nullterminated__in_bcount() __exceptthat __maybenull__in_ecount() __exceptthat __maybenull__in __exceptthat __maybenull__bcount() __exceptthat __maybenull__ecount() __exceptthat __maybenull__inout_bcount()__inout_ecount()__inout__inout_bcount() __pre __nullterminated __post __nullterminated__inout_ecount() __pre __nullterminated __post __nullterminated__inout __pre __nullterminated __post __nullterminated__inout_bcount_part(,)__inout_ecount_part(,)__out_bcount_part(,) __pre __valid __pre __byte_readableTo()__out_ecount_part(,) __pre __valid __pre __elem_readableTo()__out_bcount() __pre __valid__out_ecount() __pre __valid__pre __valid __post __valid __refparam__bcount() __post __valid __refparam__ecount() __post __valid __refparam__post __valid __refparam __post __exceptthat __maybenull__post __valid __refparam __post__out_bcount_full() __post __nullterminated__out_ecount_full() __post __nullterminated__out_bcount_part(,) __post __nullterminated__out_ecount_part(,) __post __nullterminated__bcount() __post __valid __refparam __post __nullterminated__ecount() __post __valid __refparam __post __nullterminated__post __valid __refparam __post __nullterminated __exceptthat __maybenull__post __valid __refparam __post __nullterminated__out_bcount_part(,)__out_ecount_part(,)__out_bcount() __post __byte_readableTo()__out_ecount() __post __elem_readableTo()__ecount(1) __post __valid __refparam__in_bcount()__in_ecount()__in__in_bcount() __pre __nullterminated__in_ecount() __pre __nullterminated__in __pre __nullterminated__in __pre __byte_readableTo()__in __pre __elem_readableTo()__pre __valid __pre __deref __readonly__notnull __byte_writableTo()__notnull __elem_writableTo()extent__declspec(nothrow)c:\program files\microsoft visual studio 8\vc\include\vadefs.hchar *__w64 unsigned int(  = (va_list)0 )ap( *( *)(( += _INTSIZEOF()) - _INTSIZEOF()) )t(  = (va_list)_ADDRESSOF() + _INTSIZEOF() )v( (sizeof() + sizeof(int) - 1) & ~(sizeof(int) - 1) )n(__alignof())(sizeof())( &reinterpret_cast() )__w648struct threadlocaleinfostructintunsigned intunsigned long [6]LC_ID [6]wchar_t *int *threadlocaleinfostruct::__unnamed_0002_1 [6]lconv *unsigned short *const unsigned short *const unsigned char *__lc_time_data *struct tagLC_ID *struct tagLC_IDunsigned shortstruct localeinfo_struct *struct localeinfo_structpthreadlocinfopthreadmbcinfostruct threadmbcinfostruct *struct threadlocaleinfostruct *__time64_t__int64__w64 long__w64 intsize_t(void)x_CRT_INSECURE_DEPRECATE()  size_t __cdecl ( *,  ,   ,   );_DeclSpec_FuncName_SecureFuncName_SecureDstType_DstType_Dst_TType1_TArg1_TType2_TArg2_TType3_TArg3_CRT_INSECURE_DEPRECATE()  size_t __cdecl ( *,  ,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_ReturnType_ReturnPolicy_VFuncName_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , va_list _Args);_SecureVFuncName_CRT_INSECURE_DEPRECATE()   __cdecl ( ,   ,  * );_HType1_HArg1_HType2_HArg2_CRT_INSECURE_DEPRECATE()   __cdecl ( ,  * ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   ,  );_TType4_TArg4_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_CRT_INSECURE_DEPRECATE()   __cdecl ( *);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( * ,   ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_FunctionCall__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(, , , , _s, , , , ,  ,  ,  ,  ,  , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(, , , , _s, , , , ,  ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(, , , , _s, , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(, , , , _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(, , , , _s, , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(, , , , , _s, , , , ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(, , , , _s, , , , ,  ,  ,  ,  ,  , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(, , , , _s, , , , ,  ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(, , , , _s, , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(, , , , _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(, , , , _s, , )extern "C++" { template inline  __CRTDECL (__in const  *, __out_ecount_opt(_DriveSize)  (&_Drive)[_DriveSize], __out_ecount_opt(_DirSize)  (&_Dir)[_DirSize], __out_ecount_opt(_NameSize)  (&_Name)[_NameSize], __out_ecount_opt(_ExtSize)  (&_Ext)[_ExtSize]) { return (, _Drive, _DriveSize, _Dir, _DirSize, _Name, _NameSize, _Ext, _ExtSize); } }_Srcextern "C++" { __pragma(warning(push)); __pragma(warning(disable: 4793)); template inline  __CRTDECL ( (&)[_Size],  ,   , ...) { va_list _ArgList; _crt_va_start(_ArgList,  ); return (, _Size, ,  , _ArgList); } __pragma(warning(pop)); }extern "C++" { __pragma(warning(push)); __pragma(warning(disable: 4793)); template inline  __CRTDECL ( (&)[_Size],  , ...) { va_list _ArgList; _crt_va_start(_ArgList, ); return (, _Size, , _ArgList); } __pragma(warning(pop)); }extern "C++" { template inline  __CRTDECL ( ,  ,  (&)[_Size]) { return (, , , _Size); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ,   ,   ) { return (, , _Size, ,  ,  ); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ,   ) { return (, , _Size, ,  ); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ) { return (, , _Size, ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ,   ,   ) { return (, _Size, , ,  ,  ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ,   ) { return (, _Size, , ,  ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ) { return (, _Size, , ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ) { return (, _Size, ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size]) { return (, _Size); } }((size_t)-1)100__cdecl__declspec(restrict)__declspec(noalias)__declspec(align())const_CRT_DEPRECATE_TEXT("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: "  ". See online help for details.")_NewName10_CRT_DEPRECATE_TEXT("This function or variable has been superceded by newer library or operating system functionality. Consider using"  "instead. See online help for details.")_NewItem0xFD_CRT_INSECURE_DEPRECATE()_Replacement_CRT_DEPRECATE_TEXT("This function or variable may be unsafe. Consider using "  " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")__declspec(deprecated())_Text__STDC_SECURE_LIB__200411L_CRTIMP__declspec(dllimport)__CRT_WIDE()_StringL__CRT_STRINGIZE()_Valueerrno_tint *_Value (int *)int _Value (int) ()(size_t)&reinterpret_cast(((( *)0)->))sm(*_errno())c:\program files\microsoft visual studio 8\vc\include\stdlib.hc:\program files\microsoft visual studio 8\vc\include\limits.hSIZE_MAXUINT_MAX0xffffffffffffffffui649223372036854775807i64(-9223372036854775807i64 - 1)0xffffffffui322147483647i32(-2147483647i32 - 1)0xffffui1632767i16(-32767i16 - 1)0xffui8127i8(-127i8 - 1)0xffffffffUL2147483647L(-2147483647L - 1)0xffffffff2147483647(-2147483647 - 1)0xffff32767(-32768)5SCHAR_MAXSCHAR_MIN0xff127(-128)_onexit_t_onexit_t _Funcunsigned long _Valchar *_Dstbufint _Radix (unsigned long, char *, int)voidchar *_Buf1char *_Buf2int _SizeInBytes (char *, char *, int)const char *_EnvString (const char *)long _Valchar *_DstBuf (long, char *, int)int _Val (int, char *, int)double _Valint _NumOfDigits (double, int, char *)int _NumOfDecint *_PtDecint *_PtSign (double, int, int *, int *)unsigned long _Duration (unsigned long)unsigned int _Frequencyunsigned int _Duration (unsigned int, unsigned int)int _Modeconst wchar_t *_Pathwchar_t (&_Drive)[_DriveSize]wchar_t (&_Dir)[_DirSize]wchar_t (&_Name)[_NameSize]wchar_t (&_Ext)[_ExtSize] (const wchar_t *, wchar_t (&)[_DriveSize], wchar_t (&)[_DirSize], wchar_t (&)[_NameSize], wchar_t (&)[_ExtSize])size_t _DriveSizesize_t _DirSizesize_t _NameSizesize_t _ExtSizeconst wchar_t *_FullPathwchar_t *_Drivesize_t _DriveSizeInWordswchar_t *_Dirsize_t _DirSizeInWordswchar_t *_Filenamesize_t _FilenameSizeInWordswchar_t *_Extsize_t _ExtSizeInWords (const wchar_t *, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigned int) (const wchar_t *, wchar_t *, wchar_t *, wchar_t *, wchar_t *)const wchar_t *_Filenameconst wchar_t *_EnvVarwchar_t *_ResultPath (const wchar_t *, const wchar_t *, wchar_t *)wchar_t (&_ResultPath)[_Size] (const wchar_t *, const wchar_t *, wchar_t (&)[_Size])size_t _Sizesize_t _SizeInWords (const wchar_t *, const wchar_t *, wchar_t *, unsigned int)const wchar_t *_Nameconst wchar_t *_Value (const wchar_t *, const wchar_t *)const wchar_t *_EnvString (const wchar_t *)const wchar_t *_ErrMsgconst wchar_t *_Driveconst wchar_t *_Dirconst wchar_t *_Ext (wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *) (wchar_t (&)[_Size], const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_PathResult (wchar_t *, unsigned int, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_FullPath (wchar_t *, const wchar_t *, unsigned int)const char *_Destchar (&_Drive)[_DriveSize]char (&_Dir)[_DirSize]char (&_Name)[_NameSize]char (&_Ext)[_ExtSize] (const char *, char (&)[_DriveSize], char (&)[_DirSize], char (&)[_NameSize], char (&)[_ExtSize])const char *_FullPathchar *_Drivechar *_Dirchar *_Filenamesize_t _FilenameSizechar *_Ext (const char *, char *, unsigned int, char *, unsigned int, char *, unsigned int, char *, unsigned int) (const char *, char *, char *, char *, char *)const char *_Filenameconst char *_EnvVarchar *_ResultPath (const char *, const char *, char *)char (&_ResultPath)[_Size] (const char *, const char *, char (&)[_Size])size_t _SizeInBytes (const char *, const char *, char *, unsigned int)unsigned __int64unsigned __int64 _Valint _Shift (unsigned __int64, int)unsigned int _Val (unsigned int, int)const char *_Nameconst char *_Value (const char *, const char *)const char *_ErrMsgchar *_Pathconst char *_Driveconst char *_Dirconst char *_Ext (char *, const char *, const char *, const char *, const char *)char (&_Path)[_Size] (char (&)[_Size], const char *, const char *, const char *, const char *)char *_PathResult (char *, unsigned int, const char *, const char *, const char *, const char *)unsigned long (unsigned long, int)_CRT_FLOAT *_Resultchar *_Str_locale_t _Locale (__unnamed_0005_3 *, char *, localeinfo_struct)_LDOUBLE *_Result (__unnamed_0005_1 *, char *, localeinfo_struct)_CRT_DOUBLE *_Result (__unnamed_0005_2 *, char *, localeinfo_struct) (__unnamed_0005_3 *, char *) (__unnamed_0005_1 *, char *) (__unnamed_0005_2 *, char *)char (&_Dest)[_Size]double _Value (char (&)[_Size], double, int) (char *, unsigned int, double, int) (char (&)[_Size], double, int, int *, int *) (char *, unsigned int, double, int, int *, int *)int _NumOfDightschar *_FullPathconst char *_Path (char *, const char *, unsigned int)const wchar_t *_Strwchar_t **_EndPtr (const wchar_t *, wchar_t **, int, localeinfo_struct) (const wchar_t *, wchar_t **, int) (const wchar_t *, localeinfo_struct)wchar_t *_DstBuf (unsigned __int64, wchar_t *, int) (unsigned __int64, wchar_t *, unsigned int, int)__int64 _Val (__int64, wchar_t *, int) (__int64, wchar_t *, unsigned int, int)longdoubleconst wchar_t *_Commandwchar_t **_Buffersize_t *_BufferSizeInWordsconst wchar_t *_VarName (wchar_t **, unsigned int *, const wchar_t *)size_t *_ReturnSizewchar_t (&_Dest)[_Size] (unsigned int *, wchar_t (&)[_Size], const wchar_t *)size_t _DstSizeInWords (unsigned int *, wchar_t *, unsigned int, const wchar_t *) (const wchar_t *, wchar_t **, localeinfo_struct) (const wchar_t *, wchar_t **)unsigned long _Valuewchar_t *_Dest (unsigned long, wchar_t *, int) (unsigned long, wchar_t (&)[_Size], int) (unsigned long, wchar_t *, unsigned int, int)long _Value (long, wchar_t *, int) (long, wchar_t (&)[_Size], int) (long, wchar_t *, unsigned int, int) (int, wchar_t *, int) (int, wchar_t (&)[_Size], int) (int, wchar_t *, unsigned int, int)void *void *_Memorysize_t _Countsize_t _Alignmentsize_t _Offset (void *, unsigned int, unsigned int, unsigned int, unsigned int) (void *, unsigned int, unsigned int, unsigned int) (void *, unsigned int, unsigned int) (unsigned int, unsigned int, unsigned int) (void *)size_t _NewSize (void *, unsigned int) (unsigned int)size_t _NumOfElementssize_t _SizeOfElementschar *_Destconst wchar_t *_Sourcesize_t _MaxCount (char *, const wchar_t *, unsigned int, localeinfo_struct)size_t *_PtNumOfCharConverted (unsigned int *, char (&)[_Size], const wchar_t *, unsigned int, localeinfo_struct)char *_Dstsize_t _DstSizeInBytesconst wchar_t *_Srcsize_t _MaxCountInBytes (unsigned int *, char *, unsigned int, const wchar_t *, unsigned int, localeinfo_struct) (char *, const wchar_t *, unsigned int) (unsigned int *, char (&)[_Size], const wchar_t *, unsigned int) (unsigned int *, char *, unsigned int, const wchar_t *, unsigned int)int *_SizeConvertedchar *_MbChwchar_t _WCh (int *, char *, unsigned int, wchar_t, localeinfo_struct)rsize_t _SizeInBytes (int *, char *, unsigned int, wchar_t) (char *, wchar_t, localeinfo_struct) (char *, wchar_t) (unsigned long, char (&)[_Size], int) (unsigned long, char *, unsigned int, int)const char *_Commandconst char *_Strchar **_EndPtr (const char *, char **, int, localeinfo_struct) (const char *, char **, int) (const char *, char **, localeinfo_struct) (const char *, char **)unsigned int _Seedconst char *_Source (wchar_t *, const char *, unsigned int, localeinfo_struct) (unsigned int *, wchar_t (&)[_Size], const char *, unsigned int, localeinfo_struct)const char *_SrcBuf (unsigned int *, wchar_t *, unsigned int, const char *, unsigned int, localeinfo_struct) (wchar_t *, const char *, unsigned int) (unsigned int *, wchar_t (&)[_Size], const char *, unsigned int) (unsigned int *, wchar_t *, unsigned int, const char *, unsigned int)wchar_t *_DstChconst char *_SrcChsize_t _SrcSizeInBytes (const char *, unsigned int, localeinfo_struct) (const char *, unsigned int) (const char *, localeinfo_struct)const char *_Ch (long, char (&)[_Size], int) (long, char *, unsigned int, int)ldiv_tlong _A1long _A2 (long, long)long _Numeratorlong _Denominatorconst char *_String (unsigned __int64, char *, int) (unsigned __int64, char *, unsigned int, int) (__int64, char *, int) (__int64, char *, unsigned int, int) (int, char (&)[_Size], int) (int, char *, unsigned int, int)char **_PBuffersize_t *_PBufferSizeInBytesconst char *_VarName (char **, unsigned int *, const char *) (unsigned int *, char (&)[_Size], const char *)rsize_t _DstSize (unsigned int *, char *, unsigned int, const char *)div_tint _Numeratorint _Denominator (int, int)unsigned __int64 _Int64 (unsigned __int64)unsigned long _Longunsigned short _Short (unsigned short)void *_Baseint (*_PtFuncCompare)(const void *, const void *) (void *, unsigned int, unsigned int, int (*)(const void *, const void *))rsize_t _NumOfElementsrsize_t _SizeOfElementsint (*_PtFuncCompare)(void *, const void *, const void *)void *_Context (void *, unsigned int, unsigned int, int (*)(void *, const void *, const void *), void *)const void *_Keyconst void *_Base (const void *, const void *, unsigned int, unsigned int, int (*)(const void *, const void *)) (const void *, const void *, unsigned int, unsigned int, int (*)(void *, const void *, const void *), void *) (__int64)long _X (long)int _Xunsigned int _Flagsunsigned int _Maskint _Codechar (* )[_SizeOfArray]_CountofType (&_Array)[_SizeOfArray] (_CountofType (&)[_SizeOfArray])typename _CountofTypesize_t _SizeOfArrayunsigned int *_Value (unsigned int *)int *_PModewchar_t **_Value (wchar_t **)char **_Value (char **)wchar_t **char **unsigned long *_Value (unsigned long *)unsigned long *_invalid_parameter_handler_invalid_parameter_handler _Handler (void)void (* )(const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t)_purecall_handler_purecall_handler _Handlervoid (* )(void)_locale_t (localeinfo_struct)__unnamed_0005_5unsigned char [12]__unnamed_0005_4long double__unnamed_0005_3float__unnamed_0005_2__unnamed_0005_1unsigned char [10]struct _ldiv_tstruct _div_tint (* )(void)_environ_sys_nerr_sys_errlist(309+40)sizeof(*__countof_helper())_Array(*__sys_nerr())(__sys_errlist())(*__doserrno())0x20x132256260((() < ()) ? () : ())ab((() > ()) ? () : ())__mb_cur_max0x7fff((unsigned char *)(&()->ld))const char *inputFileNameconst char *outputFileNameconst char *vectorNamechar *errorDescription (const char *, const char *, const char *, char *)asn1_retCodeconst char *file_nameASN1_TYPE *definitions (const char *, ASN1_TYPE *, char *)int error (int, char *)const int []const char * []YYSTYPEconst char *yymsgint yytypeYYSTYPE *yyvaluep (const char *, int, YYSTYPE *)const yytype_uint8 []const yytype_int16 []yytype_int16shortsigned charunsigned charchar [MAX_NAME_SIZE+1]node_asn *char *s (char *)const char *char []FILE *295294293292291290289288287286285284283282281280279278277276275274273272271270269268267266265264263262261259258(yyvsp -= (), yyssp -= ())N10000200RuleBottomTopTitleTypeValueLocationArgsyylex ()((void) 0)FileLocdo if (YYID ()) { ().first_line = YYRHSLOC (, 1).first_line; ().first_column = YYRHSLOC (, 1).first_column; ().last_line = YYRHSLOC (, ).last_line; ().last_column = YYRHSLOC (, ).last_column; } else { ().first_line = ().last_line = YYRHSLOC (, 0).last_line; ().first_column = ().last_column = YYRHSLOC (, 0).last_column; } while (YYID (0))CurrentRhs(()[])Kdo if (yychar == YYEMPTY && yylen == 1) { yychar = (); yylval = (); yytoken = YYTRANSLATE (yychar); YYPOPSTACK (1); goto yybackup; } else { yyerror (YY_("syntax error: cannot back up")); YYERROR; } while (YYID (0))Token(!!yyerrstatus)goto yyerrlabgoto yyerrorlabgoto yyabortlabgoto yyacceptlab(-2)(yychar = YYEMPTY)(yyerrstatus = 0)-9-84((unsigned int) () <= YYMAXUTOK ? yytranslate[] : YYUNDEFTOK)YYX189984352do { YYSIZE_T yyi; for (yyi = 0; yyi < (); yyi++) ()[yyi] = ()[yyi]; } while (YYID (0))ToFromCount(() * (sizeof (yytype_int16) + sizeof (YYSTYPE)) + YYSTACK_GAP_MAXIMUM)(sizeof (union yyalloc) - 1)freemallocYYSIZE_MAXIMUMYYFREEYYMALLOC()((void) ())emsgid((YYSIZE_T) -1)_asn1_yynerrs_asn1_yydebug_asn1_yychar_asn1_yylval_asn1_yyerror_asn1_yylex_asn1_yyparse"yacc.c""2.1b"c:\libtasn1\lib\coding.cc:\libtasn1\lib\parser_aux.hASN1_TYPE node (ASN1_TYPE)node_asn *pointerconst char *name (node_asn *, const char *)node_asn *node (node_asn *)long vchar *str (long, char *)unsigned int value (node_asn *, unsigned int)node_asn *down (node_asn *, node_asn *)node_asn *rightconst unsigned char *valueunsigned int len (node_asn *, const unsigned char *, unsigned int)unsigned int typec:\libtasn1\lib\element.hchar *nameint name_size (node_asn *, char *, int)const char *valueunsigned char *value_outint value_out_sizeint *len (const char *, unsigned char *, int, int *)ASN1_TYPE elementvoid *iderchar *ErrorDescription (ASN1_TYPE, const char *, void *, int *, char *)unsigned char *derint der_len (unsigned char *, int, node_asn *)int *counterint *max_len (node_asn *, unsigned char *, int *, int *)const unsigned char *strint bit_lenint *der_len (const unsigned char *, int, unsigned char *, int *)const char []unsigned char *str (unsigned char *, unsigned char *, int *)int str_lenunsigned int tag_valueunsigned char *ansint *ans_len (int, unsigned int, unsigned char *, int *)unsigned long len (unsigned long, unsigned char *, int *) (node_asn *, char *)16c:\libtasn1\lib\decoding.cc:\libtasn1\lib\structure.hnode_asn *rootconst char *source_namenode_asn *source_nodechar *output_file_namechar *vector_name (node_asn *, char *, char *)ASN1_TYPE definitionsASN1_TYPE *elementconst char *octetNameconst char *objectName (ASN1_TYPE, ASN1_TYPE *, const char *, const char *) (ASN1_TYPE, ASN1_TYPE *)const void *iderint lenconst char *name_elementint *startint *end (ASN1_TYPE, const void *, int, const char *, int *, int *)ASN1_TYPE *structureconst char *elementName (ASN1_TYPE *, const char *, const void *, int, char *) (ASN1_TYPE *, const void *, int, char *)const unsigned char *der (const unsigned char *, int *) (const unsigned char *, node_asn *, int *)int *ret_len (node_asn *, const unsigned char *, int, int *)int str_sizeint *bit_len (const unsigned char *, int, int *, unsigned char *, int, int *) (const unsigned char *, int, int *, unsigned char *, int)int *str_lenunsigned char * (const unsigned char *, int, unsigned char *) (const unsigned char *, int, int *)4c:\libtasn1\lib\element.cint *tagValueint *classValue (node_asn *, const char *, int *, int *)ASN1_TYPE rootvoid *ivalue (ASN1_TYPE, const char *, void *, int *)ASN1_TYPE node_rootconst void *ivalue (ASN1_TYPE, const char *, const void *, int)*len = strlen() + 1; if ( < strlen()+(*len)) { return ASN1_MEM_ERROR; } else { strcat(, ); }ptrptr_sizedata*len = strlen() + 1; if ( < *len) { return ASN1_MEM_ERROR; } else { strcpy(, ); }*len = ; if ( < ) { return ASN1_MEM_ERROR; } else { memcpy( , , ); }data_sizec:\libtasn1\lib\errors.cc:\libtasn1\lib\errors.hc:\libtasn1\lib\int.h(1<<30)(1<<29)(1<<28)(1<<27)(1<<26)(1<<24)(1<<23)(1<<22)(1<<21)(1<<20)(1<<19)(1<<18)(1<<17)(1<<16)(1<<15)(1<<14)(1<<13)(1<<12)(1<<11)(1<<10)(1<<9)(1<<8)272120191817151413121110976(&0xFF)1024const char *fmt... (const char *, ...)asn1_retCode error (asn1_retCode)const libtasn1_error_entry []LIBTASN1_ERROR_LOOP( if(p->number == error) { ; break; } )const libtasn1_error_entry *p; for(p = error_algorithms; p->name != NULL; p++) {  ; }{ ,  }namec:\libtasn1\lib\gstr.cchar *destsize_t dest_tot_sizeconst char *src (char *, unsigned int, const char *)c:\libtasn1\lib\parser_aux.cc:\libtasn1\lib\gstr.h_asn1_str_cat(,MAX_ERROR_DESCRIPTION_SIZE,)y_asn1_str_cpy(,MAX_ERROR_DESCRIPTION_SIZE,)const char *req_versionconst char *sint *majorint *minorint *micro (const char *, int *, int *, int *)int *number (const char *, int *)list_type *struct list_structlist_struct *c:\libtasn1\lib\structure.cconst char *oidValue (ASN1_TYPE, const char *)int *num (ASN1_TYPE, const char *, int *)FILE *outASN1_TYPE structureint mode (FILE *, ASN1_TYPE, const char *, int) (ASN1_TYPE, const char *, ASN1_TYPE *)node_asn **node (node_asn **, node_asn *)const char *element_name (ASN1_TYPE *)const ASN1_ARRAY_TYPE *array (const ASN1_ARRAY_TYPE *, ASN1_TYPE *, char *)ASN1_TYPE pointer (ASN1_TYPE, char *, char *)c:\libtasn1\lib\windows\config.hc:\libtasn1\lib\defines.hc:\program files\microsoft visual studio 8\vc\include\string.hconst wchar_t *_Str1const wchar_t *_Str2wchar_t *_Str (wchar_t *)wchar_t _Val (wchar_t *, wchar_t) (wchar_t *, wchar_t, unsigned int) (const wchar_t *, const wchar_t *, unsigned int)const wchar_t *_SubStr (wchar_t *, const wchar_t *)wchar_t _Chconst wchar_t *_Control (const wchar_t *, const wchar_t *, unsigned int, localeinfo_struct) (const wchar_t *, const wchar_t *, localeinfo_struct)wchar_t *_Dst (wchar_t *, const wchar_t *, unsigned int, localeinfo_struct)wchar_t *_String (wchar_t *, localeinfo_struct)wchar_t (&_String)[_Size] (wchar_t (&)[_Size], localeinfo_struct) (wchar_t *, unsigned int, localeinfo_struct) (wchar_t (&)[_Size]) (wchar_t *, unsigned int) (wchar_t *, unsigned int, wchar_t) (wchar_t *, unsigned int, wchar_t, unsigned int)wchar_t (&_Buffer)[_Size]const wchar_t *_ErrorMessage (wchar_t (&)[_Size], const wchar_t *)wchar_t *_Buffer (wchar_t *, unsigned int, const wchar_t *)int _Error (wchar_t (&)[_Size], int)wchar_t *_Bufint _ErrNum (wchar_t *, unsigned int, int)const wchar_t *_Delimwchar_t **_Context (wchar_t *, const wchar_t *, wchar_t **)const wchar_t * (const wchar_t *, wchar_t) (wchar_t (&)[_Size], const wchar_t *, unsigned int)rsize_t _MaxCount (wchar_t *, unsigned int, const wchar_t *, unsigned int) (const wchar_t *, unsigned int) (char *, int) (char *, int, unsigned int)const char *_Str1 (const char *, const char *, unsigned int)const char *_Str2const char *_Srcvoid *_Pvint _Csize_t _N (void *, int, unsigned int)const char *_SubStr (char *, const char *)int _Chconst char *_Control (char *, const char *, unsigned int, localeinfo_struct)char *_String (char *, localeinfo_struct)char (&_String)[_Size] (char (&)[_Size], localeinfo_struct) (char *, unsigned int, localeinfo_struct) (char (&)[_Size]) (char *, unsigned int)const char *_Delimchar **_Context (char *, const char *, char **) (const char *, int) (char *, unsigned int, int, unsigned int) (char (&)[_Size], const char *, unsigned int) (char *, unsigned int, const char *, unsigned int) (const char *, const char *, unsigned int, localeinfo_struct)char (&_Buffer)[_Size]int _ErrorMessage (char (&)[_Size], int)char *_Buf (char *, unsigned int, int)const char *_ErrorMessage (char (&)[_Size], const char *) (const char *, const char *, localeinfo_struct)void *_Dstconst void *_Src (void *, const void *, unsigned int) (void *, unsigned int, const void *, unsigned int)size_t _DstSizeconst void *_Buf1const void *_Buf2 (const void *, const void *, unsigned int) (void *, const void *, int, unsigned int) (const void *, const void *, unsigned int, localeinfo_struct)const void *const void *_Buf (const void *, int, unsigned int)wcsstr_CONST_RETURNc:\program files\microsoft visual studio 8\vc\include\stdio.hc:\program files\microsoft visual studio 8\vc\include\swprintf.inlconst wchar_t *_Format_locale_t _Plocinfova_list _Ap (wchar_t *, const wchar_t *, localeinfo_struct, char) (wchar_t *, const wchar_t *, localeinfo_struct, ...) (wchar_t *, const wchar_t *, char) (wchar_t *, const wchar_t *, ...) (wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, char) (wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (wchar_t *, unsigned int, const wchar_t *, char) (wchar_t *, unsigned int, const wchar_t *, ...)FILE *_File (int, _iobuf *) (_iobuf *)int _FileHandleconst char *_Format (int, const char *)const char *_Directoryconst char *_FilePrefixconst void *_DstBuf (const void *, unsigned int, unsigned int, _iobuf *)__int64 _Offsetint _Origin (_iobuf *, __int64, int)long _Offset (_iobuf *, long, int)void *_DstBufsize_t _ElementSize (void *, unsigned int, unsigned int, unsigned int, _iobuf *) (void *, unsigned int, unsigned int, _iobuf *)wint_twint_t _Ch (unsigned short, _iobuf *) (wchar_t, _iobuf *)const wchar_t *_ModeFILE **_FileFILE *_OldFile (_iobuf **, const wchar_t *, const wchar_t *, _iobuf *) (const wchar_t *, const wchar_t *, _iobuf *) (_iobuf **, const wchar_t *, const wchar_t *) (int, const wchar_t *) (const wchar_t *, localeinfo_struct, ...) (const wchar_t *, ...) (const wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, unsigned int, const wchar_t *, ...) (const wchar_t *, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, const wchar_t *, ...) (_iobuf *, const wchar_t *, localeinfo_struct, ...) (_iobuf *, const wchar_t *, ...)va_list _ArgList (const wchar_t *, localeinfo_struct, char) (const wchar_t *, char)const wchar_t *_Directoryconst wchar_t *_FilePrefixva_list _Args (wchar_t *, unsigned int, unsigned int, const wchar_t *, localeinfo_struct, char) (wchar_t *, unsigned int, unsigned int, const wchar_t *, localeinfo_struct, ...) (_iobuf *, const wchar_t *, localeinfo_struct, char) (_iobuf *, const wchar_t *, char) (wchar_t (&)[_Size], unsigned int, const wchar_t *, char) (wchar_t *, unsigned int, unsigned int, const wchar_t *, char) (wchar_t (&)[_Size], unsigned int, const wchar_t *, ...) (wchar_t *, unsigned int, unsigned int, const wchar_t *, ...) (wchar_t (&)[_Size], const wchar_t *, char) (wchar_t (&)[_Size], const wchar_t *, ...) (const wchar_t *, _iobuf *)int _SizeInWords (wchar_t *, int, _iobuf *)wchar_t _C (wchar_t)int _ShFlag (const wchar_t *, const wchar_t *, int) (char *, unsigned int, unsigned int, const char *, localeinfo_struct, char) (char *, unsigned int, const char *, localeinfo_struct, char) (char *, unsigned int, unsigned int, const char *, localeinfo_struct, ...) (char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, localeinfo_struct, char) (const char *, localeinfo_struct, ...) (char *, const char *, localeinfo_struct, char) (char *, const char *, localeinfo_struct, ...) (_iobuf *, const char *, localeinfo_struct, char) (_iobuf *, const char *, localeinfo_struct, ...) (const char *, char) (char *, unsigned int, const char *, char) (_iobuf *, const char *, char) (char *, unsigned int, const char *, ...) (_iobuf *, const char *, ...) (char *, const char *, char) (char *, const char *, ...) (char (&)[_Size], const char *, char) (char (&)[_Size], unsigned int, const char *, char) (char *, unsigned int, unsigned int, const char *, char)char *_Bufferchar (&_Buf)[_Size]rsize_t _Size (_iobuf **) (const char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, unsigned int, const char *, ...) (const char *, const char *, localeinfo_struct, ...) (const char *, const char *, ...) (char (&)[_Size], const char *, ...) (char (&)[_Size], unsigned int, const char *, ...) (char *, unsigned int, unsigned int, const char *, ...) (_iobuf *, char *, int, unsigned int)unsigned int _Formatint _Max (_iobuf *, char *)const char *_OldFilenameconst char *_NewFilenameint _Wordconst char *_Modeconst void *_Strconst fpos_t *_Pos (_iobuf *, const __int64 *) (_iobuf **, const char *, const char *, _iobuf *) (const char *, const char *, _iobuf *) (const char *, _iobuf *) (_iobuf **, const char *, const char *)const char *_DirNameint _MaxCount (char *, int, _iobuf *)fpos_t *_Pos (_iobuf *, __int64 *) (const char *, const char *, int)struct _iobuf_SYS_OPEN_P_tmpdirc_putwc_nolock((),stdout)_c_getwc_nolock(stdin)_putc_nolock((),stdout)_getc_nolock(stdin)_fputc_nolock(, )_stream_fgetc_nolock()(--()->_cnt >= 0 ? 0xff & (*()->_ptr++ = (char)()) : _flsbuf((),()))(--()->_cnt >= 0 ? 0xff & *()->_ptr++ : _filbuf())_fgetwc_nolock()_stm_fputwc_nolock(,)fputwc(,)fgetwc()_CRT_DEPRECATE_TEXT("swprintf has been changed to conform with the ISO C standard, adding an extra character count parameter. To use traditional Microsoft swprintf, set _CRT_NON_CONFORMING_SWPRINTFS.")(wint_t)(0xFFFF)0x00800x00400x00200x00100x00080x00040x00000x00020x0001(&__iob_func()[2])(&__iob_func()[1])(&__iob_func()[0])((long)())fp(sizeof(_P_tmpdir) + 16)(sizeof(_P_tmpdir) + 12)L"\\""\\"(-1)512_NSTREAM_c:\program files\microsoft visual studio 8\vc\include\ctype.hwint_t _Cwctype_t _Type (unsigned short, unsigned short) (unsigned short, localeinfo_struct) (unsigned short, unsigned short, localeinfo_struct) (int, localeinfo_struct)int _Type (int, int, localeinfo_struct)const wctype_t *const unsigned short []__iscsym__iscsymf__toascii__isascii(_iswalnum_l(, ) || (() == '_'))_p(_iswalpha_l(, ) || (() == '_'))(_isalnum_l(, ) || (() == '_'))(_isalpha_l(, ) || (() == '_'))(iswalnum() || (() == '_'))(iswalpha() || (() == '_'))(isalnum() || (() == '_'))(isalpha() || (() == '_'))( () & 0x7f )_Char( (unsigned)() < 0x80 )( ()-'a'+'A' )( ()-'A'+'a' )_ischartype_l(, _CONTROL, )_Locale_ischartype_l(, _PUNCT|_ALPHA|_DIGIT, )_ischartype_l(, _BLANK|_PUNCT|_ALPHA|_DIGIT, )_ischartype_l(, _ALPHA|_DIGIT, )_ischartype_l(, _PUNCT, )_ischartype_l(, _SPACE, )_ischartype_l(, _HEX, )_ischartype_l(, _DIGIT, )_ischartype_l(, _LOWER, )_ischartype_l(, _UPPER, )_ischartype_l(, _ALPHA, )( (()!=NULL && (((_locale_t)())->locinfo->mb_cur_max) > 1) ? _isctype_l(, (), ) : _chvalidchk_l(,,))_Flag(==NULL ? __chvalidchk(, ) : ((_locale_t))->locinfo->pctype[] & ())(__PCTYPE_FUNC[()] & ())(0x0100|_UPPER|_LOWER)0x80000x800x400x200x100x80x4__pctype_func()c:\libtasn1\lib\libtasn1.hc:\program files\microsoft visual studio 8\vc\include\sys\types.hc:\program files\microsoft visual studio 8\vc\include\time.hc:\program files\microsoft visual studio 8\vc\include\wtime.inlconst time_t *_Time (wchar_t *, unsigned int, const __int64 *) (const __int64 *)c:\program files\microsoft visual studio 8\vc\include\time.inltime_ttime_t *_Time (__int64 *)tm *_Tm (tm *) (tm *, const __int64 *)tm * (char *, unsigned int, const __int64 *)time_t _Time1time_t _Time2 (__int64, __int64)char * [2]const __time64_t *_Time (wchar_t (&)[_Size], const __int64 *)const tm *_Tm (wchar_t *, unsigned int, const wchar_t *, const tm *, localeinfo_struct) (wchar_t *, unsigned int, const wchar_t *, const tm *)const __time32_t *_Time (wchar_t (&)[_Size], const long *) (wchar_t *, unsigned int, const long *) (const long *)const tm *_Time (wchar_t (&)[_Size], const tm *) (wchar_t *, unsigned int, const tm *) (const tm *)unsigned int _MilliSec (tm *, unsigned int)__time64_t *_Time (char (&)[_Size], const __int64 *)__time64_t _Time1__time64_t _Time2__time32_t__time32_t *_Time (long *)size_t _Max_size (char *, unsigned int, const char *, const tm *, localeinfo_struct) (char *, unsigned int, const char *, const tm *) (tm *, const long *)__time32_t _Time1__time32_t _Time2clock_t (char (&)[_Size], const long *) (char *, unsigned int, const long *) (char (&)[_Size], const tm *) (char *, unsigned int, const tm *)size_t *_ReturnValueint _Index (unsigned int *, char *, unsigned int, int)long *_Timezonelong *_Daylight_savings_biasint *_Daylightlong *CLOCKS_PER_SEC(__tzname())(*__timezone())(*__dstbias())(*__daylight())1000 (node_asn_struct, const char *) (node_asn_struct *, const char *, int *, int *) (node_asn_struct, node_asn_struct *, const char *, const char *) (node_asn_struct, node_asn_struct *) (node_asn_struct, const void *, int, const char *, int *, int *) (node_asn_struct *, const char *, const void *, int, char *) (node_asn_struct *, const void *, int, char *) (node_asn_struct, const char *, void *, int *, char *) (node_asn_struct, const char *, int *) (node_asn_struct, const char *, void *, int *) (node_asn_struct, const char *, const void *, int) (node_asn_struct *) (node_asn_struct, const char *, node_asn_struct *) (_iobuf *, node_asn_struct, const char *, int) (const static_struct_asn *, node_asn_struct *, char *) (const char *, node_asn_struct *, char *)struct static_struct_asnstruct node_asn_structnode_asn_struct *NULL0x1B0x050x0A0x060x180x170x030x040x110x020x010xC00x00128"0.3.0"c:\libtasn1\lib\mem.hstrduprealloccalloc_asn1_free_asn1_malloc/O2 /I "../../lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /I "../../lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /DSIZEOF_UNSIGNED_LONG_INT=4 /DSIZEOF_UNSIGNED_INT=4 /D_M_X86 (node_asn_struct) (node_asn_struct *, unsigned int) (node_asn_struct *, node_asn_struct *) (node_asn_struct *, const char *) (node_asn_struct *, const unsigned char *, unsigned int)char [128+1] (FILE *, node_asn_struct, const char *, int) (node_asn_struct **, node_asn_struct *) (node_asn_struct, char *, char *) (node_asn_struct *, char *, int) (unsigned char *, int, node_asn_struct *) (node_asn_struct *, unsigned char *, int *, int *) (node_asn_struct *, char *) (node_asn_struct *, char *, char *) (const unsigned char *, node_asn_struct *, int *) (node_asn_struct *, const unsigned char *, int, int *)FEACP aborted because NCB getEarlyExit() returned truemoccac:\libtasn1\windows\libtasn1.ncbC:\libtasn1\windows\test-tree\test-tree.vcproj/O2 /FD /EHsc /MT /Fo"\\" /Fd"\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/ACWD "c:\libtasn1\windows\test-tree\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\test-tree\c:\libtasn1\tests\test_tree.cc:\libtasn1\tests\test_tree_asn1_tab.cconst ASN1_ARRAY_TYPE []int argcchar *argv[] (int, char *[])test_type []__unnamed_0020_1/O2 /I "..\..\lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86C:\libtasn1\windows\test-parser\test-parser.vcproj/ACWD "c:\libtasn1\windows\test-parser\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\test-parser\c:\libtasn1\tests\test_parser.cint lineNumberchar *lineFILE *file__unnamed_0022_1"Test_parser_ERROR.asn"C:\libtasn1\windows\asn1-parser\asn1-parser.vcproj/ACWD "c:\libtasn1\windows\asn1-parser\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\asn1-parser\c:\libtasn1\src\asn1parser.c/O2 /I "..\..\lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /DVERSION="0.3.0" /D_M_X86C:\libtasn1\windows\gnulib\gnulib.vcproj/ACWD "c:\libtasn1\windows\gnulib\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\gnulib\c:\libtasn1\gl\strdup.hc:\libtasn1\gl\getopt_.hint ___argcchar *const *___argvconst char *__shortoptsconst option *__longoptsint *__longind (int, char *const *, const char *, const option *, int *) (int, char *const *, const char *)(0)majminc:\libtasn1\gl\getopt_int.hchar **___argv_getopt_data *__data (int, char **, const char *, const option *, int *, _getopt_data *)int __long_onlyint __posixly_correct (int, char **, const char *, const option *, int *, int, int, _getopt_data *)_getopt_data::__unnamed_0026_1 (int, char **, const char *, const option *, int *, int, int){ 1, 1 }c:\libtasn1\gl\gettext.hString((const char *) ())DomainnameCodesetDirname((const char *) ())(() == 1 ? (const char *) () : (const char *) ())Msgid1Msgid2Category(() == 1 ? (const char *) () : (const char *) ())Msgidc:\libtasn1\gl\getopt.cchar *const *argvconst char *optstringchar **argvconst option *longoptsint *longindint long_onlyint posixly_correct_getopt_data *d (int, char **, const char *, int, _getopt_data *) (char **, _getopt_data *)_getopt_data(argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')ch1ch2gettext ()c:\libtasn1\gl\getopt1.cconst char *optionsconst option *long_optionsint *opt_indexchar *__getopt_argv_constc:\libtasn1\gl\getopt.h`unused-module'\ °Zz>Ë®ÃEQ ’XÆ”iu]§‚¯³íÄlj©À&Tr0I€Výu .ÏyߌŒüQùÛ°„¼9/É~nao ÃÝrÓ"N*FMõ€c¢ÌUEU,eŒf§Ä´‰£Ò&ò'Pu ¢e!`‡1a¨µî(õFHpae’ u ?2)‡³ˆHÒ“ ½zŠ|l›5­E©k,r˜ò_îH”—j",ã‚x]ûÅ€ ÀB'Q.”xñ¨öc’-wTn)²!lf‘\E•u †%ŽÇ–ß•°@0 Qp¤teBpx©ÅSd ]¨•Þz«‰¾ #%#OPŽî&±i* •šRÁ{2i熄¡c{ÄWfWS$ó‚(£3§ý±Ð¸Ç·k¯È*°¶ ­®ÏL0j ­H‘äÆZ‹|ÑÈ­µ¹JævØÜPPÔ(W ;jý¯Œ §ê ö\¹TƒI†¬Õ€Z”BÇYjpB*ÅãJ øgÈ+ë—·!&PM²yZh¡!¨A49*]zhQ¤Á“Åuh¥¡™µï ?R°9oW®'À~¾D‚dnËµÌ Nv†G2IH²ÌeJ„Ÿ€˜¯·°É°Ø½©PÀÿU1%¼løoôopêǽ€§‚a<…ûu,µWÈLeê£D*KƒMlmTŒ•›‡«CÒM}«`°l´l3xbUÈFn‹«¡X·µ‹Éæy½]„×3÷)´Z„m`ÚJ•¡€>)\„–ÇÛ(œfq'_*o[ª¥´Ò%a+wƤ[î¹Àlc†z~òŽäoǃÜoØo˜MÐo¥NÔoàoèoìoðo…ÒtÉ’ z%+(S)GE}j{ÂCqwMŸAFùCŸ¢ô¢k„ú|4¥ø”ªwl«Ê±à¯L¥s>zO9pxίWµÌ†³~´籟²€ ¸>ºÂ8ÀÁ·Þ“ņksdG•Æc¨f?Eln Wƒ#8}kXþdzøi&u¯ƒ2s`—»©ô´«DKoµ¨.0jB«tŽ'ÀŒ@B*[JUO;ƒ¸ª)|j¦ED§1Au ­»Q£dƒ»dÌ_§JFÙ©†¢¤+‘dcû!OªoŸ¥TÈÑKÇ"tÅ’d3†Š o¤o˜oœooŠf”oˆoŒo€o„o©sÝ€Hd2- H¦Šo͈BG"‚c$²bH_s­s5z•Ò•U–mhšø¡x-)”csÊ¥o°šmÆ”Çæ X`«§øÇgÌDv¥Úfop S•|••QÕµ3pÕŒZö±‰P?x‰n_ppÅÔXÜ/ª¯'–_yp2u¶{¬”=£ÌoÈoÄoÀo¼o¸o´o°o¬o¨oáy[¦®zàƒÚ† hVp*„¥:‰tLœÇn²Èk £.o´.Z1ªÄx¢ðtGb¿2SFºH,N!s%‹ÔS¡yiGh Š*ÆÝp§¤~þ‡Y6j„§ß jz•NâªÐµ$ÂßOpµþ~ÆH›÷ÂE¥ …ñmË.S¥Z¥o¥ìM¦’L¥[­ýc=pGGæÅ·+Ü`Y˜¿SórwÄO/' Cl“ˆœ–(/Pl̬â¿ý€µ€z(UMvz$ Zµ“šk(†îwFw’[kCŒÆµTgU«wXmt<)Ñ'¶]¯‘µG±«œ”Œ•_Mœ‚Š@·`¸ú¼·³î“”Ü.ïu^Ê{t2W'pjp¹‡+‚yÕ! ‹oÆg'aÁ5JO>€K•§„…¯¬PŸ²*2¼î•Ûmz§l ¬‚›¨Z¤_R)è¹î¹þïþïÖ˜YYBISONYYBISON_VERSIONYYSKELETON_NAMEYYPUREYYLSP_NEEDEDyyparse_asn1_yyparseyylex_asn1_yylexyyerror_asn1_yyerroryylval_asn1_yylvalyychar_asn1_yycharyydebug_asn1_yydebugyynerrs_asn1_yynerrsYYTOKENTYPEyytokentypeASSIGNUMIDENTIFIEROPTIONALINTEGERSIZEOCTETSTRINGSEQUENCEBITUNIVERSALPRIVATEAPPLICATIONDEFAULTCHOICEOFOBJECTSTR_IDENTIFIERBOOLEANTRUEFALSETOKEN_NULLANYDEFINEDBYSETEXPLICITIMPLICITDEFINITIONSTAGSBEGINENDUTCTimeGeneralizedTimeGeneralStringFROMIMPORTSENUMERATEDint.herrors.hparser_aux.hstructure.hFILEfile_asn1asn1_retCoderesult_parsenode_asnp_treelineNumberlastTokenMAX_NAME_SIZE_asn1_identifierMissingfileNameYYDEBUGYYERROR_VERBOSEYYTOKEN_TABLEYYSTYPEYYSTYPE_IS_DECLAREDconstantstrnodeyystypeYYSTYPE_IS_TRIVIALYYTYPE_UINT8yytype_uint8YYTYPE_INT8yytype_int8__STDC____C99__FUNC____cplusplus_MSC_VERYYTYPE_UINT16yytype_uint16YYTYPE_INT16yytype_int16YYSIZE_T__SIZE_TYPE__size_tc:\program files\microsoft visuastruct::value_lennode_asn_struct::downnode_asn_struct::rightnode_asn_struct::leftMEM_HHAVE_ALLOCAHAVE_ALLOCA_H_asn1_calloc_asn1_reallocc:\libtasn1\lib\libtasn1.hc:\libtasn1\lib\defines.hc:\libtasn1\lib\mem.hlibtasn1definesmemc:\libtasn1\tests\test_tree_asn1_tab.cTest_tree_asn1_tabACT_NULLACT_CREATEACT_DELETEACT_WRITEACT_READACT_VISITACT_ENCODINGACT_DECODINGACT_PRINT_DERACT_EXPAND_ANYACT_DECODING_ELEMENTACT_EXPAND_OCTETACT_NUMBER_OF_ELEMENTSACT_DECODING_START_ENDACT_READ_DEFINITIONSACT_READ_TAG_CLASSACT_OID_2_STRUCTUREACT_READ_LENGTHACT_ENCODING_LENGTHACT_READ_BITACT_SET_DERACT_DELETE_ELEMENTactionpar1par2par3errorNumbertest_typetest_arraymainargcargvasn1_elementtesterrorCountertestCountervalueLenstr_ptreefile__unnamed_0020_1__unnamed_0020_1::action__unnamed_0020_1::par1__unnamed_0020_1::par2__unnamed_0020_1::par3__unnamed_0020_1::errorNumberlinefileCorrectNamefileErroredName_FILE_readLinecreateFilefileInfileOutlineReadfileInLineNumber__unnamed_0022_1__unnamed_0022_1::lineNumber__unnamed_0022_1::line__unnamed_0022_1::errorNumber__unnamed_0022_1::errorDescriptionconfig.hHAVE_UNISTD_HunistdHAVE_GETOPT_Hgetoptversion_manVERSIONhelp_manHAVE_GETOPT_LONGoptionlong_optionsno_argumentrequired_argumentoption_indexoption_resultcheckSyntaxOnlyparse_resultopterrgetopt_longoptargoptindSTRDUP_H_HAVE_DECL_STRDUP_GETOPT_H__need_getopt__GETOPT_PREFIXgetopt_long_onlyoptopt__GETOPT_CONCAT__GETOPT_XCONCAT__GETOPT_ID__getopt_argv_const__GNU_LIBRARY____THROW__GNUC_PREREQmajhas_argflagoptional_argument___argc___argv__shortopts__longopts__longindoption::nameoption::has_argoption::flagoption::val_GETOPT_INT_H_getopt_internal__long_only__posixly_correct_getopt_data__initialized__nextcharREQUIRE_ORDERPERMUTERETURN_IN_ORDER__ordering__first_nonopt__last_nonopt_LIBCUSE_NONOPTION_FLAGS__nonoption_flags_max_len__nonoption_flags_len_GETOPT_DATA_INITIALIZER_getopt_internal_r__data_getopt_long_r_getopt_long_only_r_getopt_data::optind_getopt_data::opterr_getopt_data::optopt_getopt_data::optarg_getopt_data::__initialized_getopt_data::__nextchar_getopt_data::__unnamed_0026_1_getopt_data::RETURN_IN_ORDER_getopt_data::PERMUTE_getopt_data::REQUIRE_ORDER_getopt_data::__ordering_getopt_data::__posixly_correct_getopt_data::__first_nonopt_getopt_data::__last_nonopt_LIBGETTEXT_H__sun__GNUG__cstdlib_GLIBCXX_HAVE_LIBINTL_HgettextMsgidDomainnamedcgettextCategoryngettextMsgid1Msgid2dngettextdcngettexttextdomainbindtextdomainDirnamebind_textdomain_codesetCodesetgettext_noopStringgetopt.hunistd.hVMSunixlibc:\libtasn1\gl\gettext.h_USE_IN_LIBIOwcharattribute_hiddenc:\libtasn1\gl\getopt_int.hgetopt_dataHAVE_DECL_GETENV__libc_argc__libc_argv__getopt_nonoption_flagsSWAP_FLAGSch1ch2__tmpexchangemiddletemnew_str__mempcpy_getopt_initializeoptstringposixly_correctorig_strlongoptslongindlong_onlyprint_errorsNONOPTION_Pnameendpfoundexactambigindfoundbuf__asprintf_IO_flockfileold_flags2_IO_FILE_flags2_IO_FLAGS2_NOTCANCEL__fxprintf_IO_funlockfilePOSIXLY_CORRECTTESTdigit_optindthis_option_optind__unnamed_0028_1optionsopt_indexc:\libtasn1\gl\getopt.hTest_tree_asn1_tab.cP ®m3võEÀ\pd"ße9÷PÆ‚µ9Œ:‡ XOÍ‘…’k¦k5’D_Äî 9MA^ÓjË#P)ä{Þ,h÷Q;K¹¨`;€nBPªÙe¯Pg<7\Ò]Tqx’ð8ãP*\,YßO TBáh±ƒAU…‚vLîhiÏ#v{F·d¤Rye‡×[‘°5¹‰í[Ù—Um ztV>ïSÔs†•ä\†˜®84 =Û•0†WhLdF\}Ê3ômóñ@¢”ÌLÿg^¬zk!DWa€ë]w}*L]ƒ(EÄBÓnz‚ö§cüå`€ |¾èi»ƒ`s["/k+°O p¢W[{Uëg c·Tÿ_ži ŽäŒZ—€QMœgý jp†°Eï>ÜA‡âSq2—F±iCˆWtK rn Pûn p½€<Àfˆ[¬9Æ &:þLÚ†l‘o‰û‡rÈ„²3ŠwÉ_1+ù83[þ3¶>I6ëM¤968}K9ž&`H'bÏTâ•-ˆÈ8½g°x{,!$+{‡€ž‡ÉQ‹ –øÉw4áqÝgr­6*P pÌw•d&"Á]—LÔpÓ/Û\›‰f˜MhÕ„#Ië„âAùñd˜b>ŒsCó?ojC5‹•AIŒ1l6˜/~–{qY8vÁ| }0Ä <Å”vŒç\W®>L „¹Z2?´DÔ}âwÙT†@_ð2Gv:s2?æ:yU¸NŒVÖ~|EwlGÍB°S{oRXI&y<Þup ‡—%#fÄ$U7fj™TQ?þNbMD—7Ù’ÂNéoR2>”Ãu4R!ñŽeH‘ëCŽ+¦•÷6Y‡ùUGÞaR^^:ýS-QjÔ"ë“Yòcq·1Gr 4‘0Lèhx-—N òYªd|KòL°]³@)”GksUnqA˜K3žR’÷”–fd`@Nv&9—zøo•ä'C0!¦F}•ù$mž@GRÇ\.^‰§s;zc={Á.7´zŠI^ÆAÈ=wq^‰IFIí—‹ V€Ëj#)^æ3rämÍ’i.†[샚fÛx¥è1S‹@a k0CE}æ9G‚,¢drP¦{'YìlÊsEnt»K@<?~Ø3†|€Y*g¿m†ÚP>‡x{Ú5HEŽ¢KaBEHNk-ÿB-‹¥‘Ò*÷D¡rOŒ@óA‚ÏXÐ> 7E:^@ˆD$|D_]YTr ÿª¹ ñ/{hk J8rNC?±‰ ‹æ=ÊfºM4x±já;n :Š5¼]»Y†’r¬ÑR÷TèL\qxŽ4­axz–pÔqætçeC/Tù}|e©‰†³CÎ@ÈDd[ö‡ŽéAf YØ…½‘4 F³Q…ûguHß`p®†š]!Lf–Ÿvd¬I ,TΆ[ÜEc’ÑPÙ9"w†±/Êœ(iMuÓa+¡—Ž8bˆNbsg^¸V›.“boSdCŠ&3ª+î!ji[B„p!‹èƒn’ý=£Bzœ‚-#¡e~'†HÒ‰ð|1i.XXpúOBéYs*B@LK¶ ü@JwM”5üö5>>Ð /-{/`"ƒŽ —T^b¤l`]·a. lIÄ?ÛYæ-Ö#‹~+#oýE {lgc~¬n>lâ|$CWa\wÒvå@h+&—õýd>#¢h16mHúiÐ#~yä8NÛŠŸO¼!`›l¬D¡4P:NÄL+B“üzŽ(òiª'KF;?o,gw‰y¾>Z~…cx„ý-£[r“ŽÕ^o{P>xv6`ÔŸø‰Ò‚Õœ`žÈ{=…8„o6Zv¶r64f%HypxôŠ”†§e~AÃFdÝI3EYJziQ€0Y·6%JÄŽ&P>C¿•×,€}g/Ah+nhOMC€ëhGq·WØ-Æ<E3’«²rêj¸Q¢’äcŒh“‹r«ª\®3pV® ± t\m„µ…ápÒdT+™ZHj8A¹Fr‹d{œZO³B½ XQ¦'8'1|ë?Î1ˆiÒGgeÀ}1rÏeDÚ8Q± D^i•ï…Ï„µHQ5mb‘¨ŽÇNa3ƒ=ÌJZuœEƒ{<¨ £80X=Gðz‹'|RpÎg¨#=r«qrBëlñyÊLEJ^lk¨ø…F÷—à;6a5z\Z1q”">}S"ë°ˆ:gé‚i€ÃŠËVH_i‘G’>ƒU´<’M>3íb+t»=©˜9M@ VTG‡QP\94;›?C# o1F¤y^Q‰CfàKØfŠN×NQ˜ä7‘Îxä†NUàMÃr*49ˆøuŽ :êe[>]F‡!é<ÀSÎI°ëö-WW•…_j¸ŠÒ@'Så6à5µ2Ýek&i É2g‰½%%·¢z¬ývq`t 2‚mo|&Íqêsv…ŒY3Œ{õhÌPQJ\BK“q_7Ã!@ȈYÑ ú^ EƒÏtÜt—š6mD 6êxóë ?N Ìzvå…Û@ÇW25dˆVÏK˜8¨N7WÂcn3ó\èXýh£1á3M)1¥Ñ ìFÄ@”l '¾[ìDC.d§€F:TcÅgÄ5.Df)`ŠŠhŸŒìaNw_‹\­+"Vfl}-T±-Ü“(áM•C(’€A-GO"ch@·s†l‡‘˜ÒTƒÜïkˆgÎSz…be*—0À4q½‚ÑKÄ0’«—y“ DYm:m5%ŸP8L²:U,r¹ yŠ;4¥ ^EæKŒn……©UýTÁzh=Êk€|Ù §~çk­Msw]…7“ÈEâ)Ï xC$r¯pdSd}åJ)dÃMv>TN·Ž$a¬7LNÝ‚do]D5²¼;fA¶.$e.—@O·f·8)>Öê+=Â6e^= ·)bt98yaL¬‰ ,2 Ü"6c£-Ï#zZ$Q]q$#F¿võã]÷3e“jXN5@Š2<„ˆã(I{«giŒÕ“4—Xjm—Øzg~kk¤bj®;RLù;Ãj)WyXóCk3‡< Js‘çF=©-fB1ƒù?‰}5#>CLÍ6i^ŽW‚P²N0xÁ;7hc† ÷Ÿ˜.' A×r<~jöV[ìIé•’‡Û”voK¦A´=q‚»'%€…æç€vŸTf4ŒsSF­uO&Ce2]hE{OK¡S[k޾IIDš–=V%6Ïpfq<—n·úŽÖE¦…¨a‚oï:˜^zwR1:ID“g’_= –\–6ÝN•%‰ꑊH¨‡‡o‡Ød«@ÏoÉ haÍ5–N>v#Pkè€ØzŸaÁ˜wÃqþ€ixGAÃ-[£gÛKmê–ys‡{â?pdWc¡j=Niô7 7zˆ€R¼Lýj\T– B´L7A‘ï|rÚLa-—˜ÁZ› @H(j*WRÆ~<ˆ˜hL1ÄV¿0‹Lu[€þ>=—\‚£6S e\:Î…´!Œƒ”™—€Æ +D>|Âe~T Ig‰ƒiÆ9´u7­R˜#a½pRÆU8=wt€¦DfHbP‘n/U©jë^cL¥†z= ¹t%s%‹Hø\¸÷R^8@–ªGwÔS"j  Qþ.º€š†(O=A/ÂoˆkÄ6 ŠñÔkÁvkYƒG]!˜V#TÂYP½HGî;ç»jØ!ŽN€@EuuT¸@ Š<"M’?o`<a˜¨‚M‹®"ÚDx)pg…2R&lWM4yF+Œ„1M[Œ§osŠmn…äiÓÇß\0pÆ1Þ`N…N0=â<ÿbTÍ?ØOpøÀÖ5br™_¤`.êuëŽÄGKt¬TZP±W'_»rôF:ë‹×wšˆ >©ƒTV. RP~œr¼’ˆ”M–DB#J³|b\¢×F²úK‡Aƒ 8Új¾@³?™Q©ªH=ŽIG@[9l£qeRS{UUGè~P—Y«<‰Où”.pp‡t?u—S]¢¶|w|:(¸k#GO’AqÁ7=P‚o”­[Aµ¿x$ùMGðGÜbØx_“o—>îYaOrEH‡qP·4ry›žHb?$ AiB%‹–è—a‡¼Ã{S#QúA®F£Er‡/Ó—Ñ<åZ9Ò3—cú``r@t Šótœdfì1`v^  uR,kM‰K—b3o.B“ôT6€q÷Nc 5îOnAmÙVr–Bn22—‘X$=±‚¡ƒae( - ÞŸV<µ~ØKhÍ€‘kÖoé!/j.xZl#LrºhpÅn7ÀUg8vA¶v£H –|€æhy$.V3¹)Š ¯€²ŽT8ìPene‚ÿ“zvá&krWÆ»#8†p.Lx`…ßFÜvißcÄO}ÄkÖŽXecf7GÕ>épJou‰?ƒj6ï`ï$³P‘SÓ˜|Ô‹Ê;´nÇ4O_1Ž3DŽtQòN+@¸Gì—ÁKF„éR– ±–ÞWÏ tþ•4w.Aö–P‰}‘™rû€ ]8>RŽ-o›lÒ×],]>kxECZQÎO¤Och( ·‡õašE!ÇO‡œA"R‰hüw+?*$xQ7 2B¨‹zO>±7™;˜5¹AÇp¿<'ÅaÙ< #?k‡H—§Ly?@tKHÃ>lTø!åCra‘@q=‹4ÿsë‡6a§”nˆ MYv$‘£_Ùq½?•–y\L=Fq~¾nái  ™U†6-ahm¿3qv‡ôsN_N:ŠMÃÞd¦R§rUŠ•‘or©“¹Ó;„ó‚lq8–úxIzàs0súHw“JN¤MY¨WÖEÄ|>¹›aYxÏßfü3\…‰÷ †w‹ð-¼o'!äEÉMã"Aw"51O`³g»8Í|]¾Eý\@j`XÅR?6¸—hUÎ&T9°kÄ#ŽNàX1‹b"‡nj\×\úqWiÔ7ÝCNC¶p*‡âðˆÕ€†€5Cb0zWî6ÿ&ÎÒ•Ý> Œd‚V5{ÿˆŽcx19‹¥P™HÁ EVs%<©PqFÝZ ‹«Y‡b¸`jˆ_ ¤ë’äD©>”ECS6^|+„Ô 6°TÀPjmGˆ"TYAZ§| ø’˜vÀ†¤JßÌW™~£@aK2ÛB z+3rufTˆão—?ˉ)l3TZj3¾:Jpm4‚“9K0·ljz/.H9{Pe³„°ñ!Ñm'dÂs:@¹„ËÄH‘e ‡©^Þ ²†Ž•6pe^»O–^'$0_;qs˜]áYKB[n}6¦uÜ<Ÿ3(w_¨€to’€-9šuN+qù<J%X*N¯H‰(Ðu•’¦Tw3 –¶dkùCV.[‘<_ëiáeÏ“ 3Ȭ„¤;ªZw—ä0$]\×6ŸGć™-Áud)qŽ˜PëN32–s׃ßLz9EM¶º(£ná.ñnÄ—çnâŽÈlÈ>OˆÌC?e1u?d®Š_)]ï3ó•Q]MDkÞ±#‘‰ÐDdcDØQ¢pÛt.9iåO†>óŠzÕY‰c„ŒS}jù…\I€EÕh@}²AKƒïw×g¦ˆûfM‰4€«}œk˜ìE0 ¯wK‘vo<ð!K!ÕL¢Nºâ‡EmÅ£wºDãU„r$Ú‡L<ÞG„!Ì4å+ìWþPSY~|>I¬ŠFQ5!ÈGs8*MOØR=€ ?/D¼!ù+µoœ$‹|°håÝJzhJ=ac†çB©Qûp‰‡”iÞR^`žs›C4€ÿ&‚©Í–x T‘ÛlE…Íh–<=bðÚpþ‚wxU_KZÅ N~~v5à „5/€=fÒMQ“®•euŠZî-ÖAÑ :·_L7«=‚Sd8pCé è%@ š[•ŠŽs 3 Æž+ÊTÉŽ¯vÑFiΪpµ:°0àŒ ¹q1]\Ù N«ðòo1çV:šoÃh›XŽ}¢‰Êr9üZj–IiÆ|^Ó9(áõ_õgo\K?F/6ó€Q4Ü õ @;&S”M FÜkÜrçvPiv”YEÀbÌ`¨.À6^»h–‡ã Vg’deO1>Œ`}+R*ªV:k´†Ô#¤Z¦ RQä„8futƒž<§vn}üW”H5J} ~‡Û+S&ps‚EqH§5š,zñJó†E—Ü2$h„ÊS*F³Y“‰]¹ƒƒh `‡d¹‘ažF_“d »9EWÜoÏŠ(/ »~‰S0•ÖÃ…A8‹úk|8‚'A|Cs§@ÑçQç‚O5õ3ÍUˆiôTnmITå‰QSÜ *MÀƒÏM!o‚ŒÓV®s¨v”2H!ÊvHeÓYo £,î54«bW’?QS\Z¦iÔ|%u§X•KÀ{zQ†9B†7ht0}ÿ5KOË'“ 4†_ X›€Ž!¿^ÉodÌdokvœY=Þ‘$[!wV@7oÜnÖ_á 6t¶E7rjg_llL;‚hˆYCòƒ‹/ö Ö{/Ì—#T½_›L"{ˆ9cI$îqY!kb…xþ‘l8TI…;î´{ú–JXµw ‘®e®’G;¶‘€Yˆl‡ ù>¡x(nl¡*î,Û#xj%Gg¬W::=9KL!Zr;ÏŒ¼wË-"ájN|6JJ¨†3!}]42NÖ?Š^¾‹âN“}XdXbÑ,ç}.PF$Õb®LÉ•¿CAσ;b­ŽÃt÷S>u¡A‚ŽcXl¯oob„Ï.µJÚN»>% :Q‰vX4ïrEÐ:æ5£_—wY<-e4Ÿ9 ~û³qn ]³ÌÂD Sdž$’ GàVP=!q–Gi?€u–NQ`Æ^†.w<ãgß—vinÿo p9ŒuxJMn]x±Ð˜B|B!OÈn]–Á^z=“ ÷KQ-u „õqhËHâz%7x=~fñvlòptjÎEá<a%@¥q†-ð)¹5ÉFEYu6““oiÌ-Sf.…“‚tsym1ŠÂ“T– .pÛ_`GØM yCG‚zvjedeñjöc÷]×—…j‹B„aOñ„ŒôMáz@.ð9'€DgŠ8Jje)‹ØŒçŠºRt oI-¤ ‹—ŠwÆŠz“qù“xÝ“}´|r!üwÐüz'*E!   00224CCEOOTTU¥´¶¼¾;ŠŠE}––® 24ORUX´¶¼¾Áùú®sH7oq7r·sI€D  ,F;<€n:D€qørup€uz€vŸFJ|ccddeeffgghhiijjppppqqqqrrss€|z}€}±iDéo«épßâ¦rn9Eòo«òpâruz|ryùÛ# F¦<[n,.[rÛtlÛxã[{9$$rl$xÔ¤yú$|rt F<G6T}~ ok–Ôú– ,on–pÊÌ.­r–s@xÒyèé–yú–{@V|qsÿo¬ÿsXwÅÈ !¦¬­®¯°±²³´ÈnMPÈ{PUwÑ ââ6¦¦Ñëö02Ñ,OU¶¾:s69ƒBƒFlSbõq Þ ]rêõú (8A)Þuƒ^z^|v§o¤§r'+§sF§|ƒ0Š0!`c¢³µ°TG—0p±0s50xÕ°xß0z0}’’ "Õ CEMNT`cx{|…ˆ¢¤³µ¸¹»½ÈÉÛÜÝÞßàçé:; 0‘íîøùûý&')+12345679;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrwxy{|~€ƒ„…†ˆ©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú "#$%&'(*,­q–íîøùûý&')+.12345679;<=>?HIJKLMNORTUXZ[\^_`abcdeijklmnpqrstuwxyz{|~€ƒ„…†ˆ©ª«¬­®¯°±³´µ¶¸¹»¼½¾ÁÄÅÆÇÈÉÊËÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèéùú "#$%&'(*,­™r&)b<=>?â?ó1133MMNNyy||……ˆˆÝÝààççéé…‘‘brbtcâwÎâz$&â|‡“KtaT  ššT#$%&T+F<Tn,ÔpÕTqó‘ÔqjkTrÔsLMÔ|†’½ V»¼ÄÅÆÒÔÕíîïñòóôöøùûýþÿ$,0GHI^apqrstu˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ12>?@z{‚„…†‡ˆ‰Š‹²³½pÓ®=r={12†fw±o,RÁorïr/ïwÏo{<o|wxG45øo¬cøu†ˆxzx{>QÁAqòÁuAw»¼ÁzªMPªpÏc³@“³q“3vŽœ LORU[\ƒ„†‡¥´¶¼¾Áæèw´µ¶ùe9Þ ¢en4euxνÎ&úÎ@¼ïðGš›žŸ ?@‹±³Nv™Nw¼½¾ÎxâN|u×r-Wtb×wÍ oŸFKluw p¯ tg‰v V yæ‰yú‰}²p®’r%´t[}Š–{Ýä ¡¨ûni{o“–ûpâ¦ÄýÄ@AÕÕ1<<==>>??LLMN[[\\``ccxx{{ƒƒ„„…††‡‡ˆ»½ÈÈÉÉÛÛÜÜÞÞßßææçèèé##$$%%&&Ä|…‘-#QWÀø-opŸ6sD‚»¼¿ÁÄÅÆÊÌÏÐÑÒÔÕØÚéëíîïñòóôôööøùûýþÿ$,0@BGHI^apqrstu“•˜šœž ¢£©ª®¯ÄÆÔÕÖרÙ./011228>?@z{‚ƒ„…†‡ˆ‰Š‹­¯²³¶>Eùý'+7;=?ijklmnpqrstuwxy{|~€ƒ„…†‡ˆÍÎÏÐÑÒÔÕÖרÙÛÜÝÞßàâãäæçèé"$&(,6pµ¶pÑ6t_¶v©¶|„v¼ÁÊÌÏÐÕØÚïðòòóóóþÿÿ -.001123<=>?CGLMMNNORT[\`cfxy{|ƒ„……†‡ˆˆ• ¢¤³µ¸¹»»¼½½¾ÁÈÉÛÜÝÞßàæççèéé#$%&.:@„„………††ˆˆŠŠ‹­¯±³CòòóóRR¼¾ÁÁ„„……ŠŠ‘‘rhlŸv¤¥?@ABCDEFGHIJKLMNOPQØ Dÿÿ@BXZlnRyT`ht"z0`kN Ó !.9FOR^frc ,46DL\dpxzCT`ht“xh<T`ht,'?WkÄw`¤y ;?@HJhkltvz6 z,z02HJ`btv››G‚@ÿÿAšš;‚@ÿÿE™™2‚@ÿÿH˜˜&‚@ÿÿL——‚@ÿÿO––‚@ÿÿS••‚@ÿÿV””ü@ÿÿZ““ó@ÿÿ]’’æ@ÿÿa‘‘Ü@ÿÿdÐ@ÿÿhÇ@ÿÿkŽŽ»@ÿÿo²@ÿÿrŒŒ¦@ÿÿv‹‹@ÿÿyŠŠ‘@ÿÿ}‰‰ˆ@ÿÿ€ˆˆo@ÿÿƒ~~e@ÿÿ†}}[@ÿÿ‰||Q@ÿÿŒ{{F@ÿÿzz=@ÿÿ“yy2@ÿÿ—xx)@ÿÿšww!@ÿÿvv@ÿÿ uu@ÿÿ¤tt@ÿÿ§ssû€@ÿÿ«rró€@ÿÿ®qqè€@ÿÿ²ppà€@ÿÿµooÕ€@ÿÿ¹nnÍ€@ÿÿ¼mm€@ÿÿÀllº€@ÿÿÃkk¯€@ÿÿÇjj§€@ÿÿÊii›€@ÿÿÎhh’€@ÿÿÑgg‡€@ÿÿÕffÊT@ÿÿØee|€@ÿÿÜddt€@ÿÿßcci€@ÿÿãbba€@ÿÿæaaV€@ÿÿê``N€@ÿÿí__C€@ÿÿò^^4€@ÿÿö]]±@ÿÿ÷<<¢@ÿÿù::š@ÿÿú77l@ÿÿû,,t@ÿÿý**¹ƒ @ÿÿþvv±ƒ @ÿÿÿuu©ƒ @ÿÿtt¡ƒ @ÿÿssó‚ @ÿÿddÝ‚ @ÿÿcc—ƒ @ÿÿ bbŒƒ @ÿÿ aaé‚ @ÿÿ__Ò‚ @ÿÿ^^o @ÿÿ]]e @ÿÿ\\]ƒ @ÿÿWW[ @ÿÿQ @ÿÿ= @ÿÿ) @ÿÿ @ÿÿ!û€ @ÿÿ$è€ @ÿÿ'Õ€ @ÿÿ*€ @ÿÿ-¯€ @ÿÿ0›€ @ÿÿ3‡€ @ÿÿ6|€ @ÿÿ9i€ @ÿÿ<  V€ @ÿÿ?  Kƒ @ÿÿC  1ƒ @ÿÿGƒ @ÿÿJÓÓx @ÿÿK°°%€ @ÿÿL€ @ÿÿMVV€ @ÿÿNUUÿ @ÿÿOSSô @ÿÿPRRç @ÿÿQQQÜ @ÿÿRPPÒ @ÿÿSNNÈ @ÿÿTMMÁ @ÿÿULLº @ÿÿVKK‚ @ÿÿW44^ @ÿÿX&&1 @ÿÿY& @ÿÿZ*[¦e¦t¦*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦e¦ÄT»¦*[¦e¦t¦z•[¦ÄT–¦z•[¦Šfz•[¦ÄT–¦z•[¦Šf*^ŒÄTð¦*^ŒgE*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*[¦ÄT–¦*[¦Šf*^ŒgE*^ŒgE*^ŒgE*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒgE*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^ŒÄTð¦*^ŒgE*^Œ §ÄT§*^Œ §(f3§3§nED§›*›*nE]§f§p§z§„§%£«§®§%£«§Õ§%£«§û§%£«§!¨%£A¨%£a¨%£€¨%£7Ÿ¨¯¨µ¨¯¨Ï¨¯¨à¨¯¨ñ¨¯¨©©¯¨©E©¯¨©x©¯¨©©¯¨©»©¯¨©Ù©¯¨©õ©¯¨©ª¯¨©1ª¯¨©Oª¯¨©mª¯¨âª©èª¯¨âª©8«âläl77U«l«s«x«}«‚«‡«‹«°l´l7«77žG"‡€fÇŽ&?G‚š,EÐ3LP‚›9R¹ƒqv‚34€lkÙ"{ël]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬æèêìîðòô÷úý<=>?@ABCDEFGIJKLMNOPQRSUnopqt&*.ô Rââøù+8DQ4€]ÚÛÜÝÞßàáâãäçéëíïñóõøûþt€cÜêtƒ":KŠ$=‚–*C_Ý‚ªc]ƒW&3 &¦‹1Jæ‘4M&‚—7PdÏ IJKLMNOPQRSÏM¯€jo~]qv8>Ð8v€%VÚÚááââããççõöøùûü #*+,0789<CDEIPQRx‚°A- a-.^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬É IJKLMNOPQRSÁ LVÜÜëë%2>Ka€aÛè!v¡ƒnsÊTeÝì3vó€qãúó’(A“‚¢ó‚¬d\9ÜPààââããóóøùûü)+,689BDEOQR|€dÜ'@ü“5N\‚œ-Fœ‚£%€[me}\pue‚:S…‚ Eƒ   N®Ž>ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž¢¢££¤¤¥¥¦§©ª«¬®<=>?@ABCDEFGIJKLMNOPQRSÎ@ÐN€_Úæ\tw ÷9É—ƒb€ _aceimuvwyÀ{gÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäää##$$%%&&''(())**++,,--..00112233445566778899::\\\]]]^^^___aaabbbcccdddà€oâ÷i+6;Â"i€b )wé‚«_‰ƒ00112233445566778899::aabbccdd©ƒot:ÑÑÓÓ²:LÒ Nßßññ(5AN€U’€gÞî2x²Œ%>2‚˜+DÒ‚©^{Ï»9»¾ÀÚÛÜÝÞßàáâãäçéëíïñóõøûþûR›€hû€r[|ot»2K;‚™8QdS*,7:<]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬®ÄÈÉÐnopq$. ä{#½Ø€S.GÍ€máô]¶>U^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬         IIJJKKLLMMNNOOPPQQRRSSV€` au]]^^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦¦§§©ª«¬®®ÐÐæèêìîðòô÷úý<=>?@ABCDEFGIJKLMNOPQRSnopqÿ SÞÞïï'4@M€V?ƒ&       ¨ +^`bdfhjlnprtxz‰‹‘“•—™› £¥§ª¬IJKLMNOPQRSÈnopqèi›]^_`abcdefghijklmnopqrstuvwxyz{|}~ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§©ª«¬®æççèééêëëìííîïïðññòóóôõö÷øùúûüýþÿ<<==>>??@@AABBCCDDEEFFGGIIJJKKLLMMNNOOPPQQRRSSUUnopqH 5CµÈ%MÝÝááââããííõöøùûü&*+,3789?CDELPQR€UUè€pˆˆ#<^‚”)B¨‚¤ƒÐÑ1±<>Q{ns‘‰0Ic‚•6Oq‚ž.G±‚¥1ƒ ±ƒpuš7º KVÛÛéé $1=Jº€kàòz‚ŸUãPC€^ l#½Øl$,.Œƒa•:<¦§®Õ€nbƒÑÓÚÛÜÝÞßàáâãäçéëíïñóöùüÿ^"$&ÓUþ‚®ç Qääþÿ-:FS§€ißððQÙ9¾ÄÆÙNuYƒ¢:>"ƒKƒ   Tii:ÑÑÓÓ=€]^¦§®=y½‚¦®#$%&'()*+,-<=>?@ABCDEF†.Æ9ÀÆÈsäýFzÆ‚§0123456789:IJKLMNOPQRSè~ DÿÿYY¥‘@ÿÿÒÕH‘@ÿÿÎÑ¢@ÿÿÊË× @ÿÿ ¨x’@0¢¢…’@0¥¥•’@0¦¦¢’@0§§¶‘@ÿÿˆˆA‘@ÿÿ„„[‘@ÿÿT‘@ÿÿqq5’ @ÿÿ®®÷ @ÿÿ­­ë @ÿÿ¬¬’ Dÿÿcc’ @ÿÿ"^^ê‘ @ÿÿ#MM}‘ @ÿÿ$*Å*Å?ÅWÅpÅÅ*Å*Å?ÅWÅpÅÅ*Å*Å?źÅKo*N*****Ô(ºl C C7ÞÅâÅæÅjB C('d--..//× ÐÔ÷­‡‘!%IŠÍG’ÊÎÒW’ÊÏÓ0’¦‰4"qH^A‘*44„²N#¢&00Êê‘KMÎÒk`gÙë¬[‘+55c’ÐÔD"#$¬W¢T‘)33q$’^$}‘•‘!/J¥‘(22Ò½‘-.Í‘./5’®ö--..®MîY§¶‘,66ˆÞ‘/0123456þ‘X’\acËÑÕ’]^`n’ÐÔO’ÊÎÒH‘'11Î(’¥¥¥•’@0¦¦¢’@0§§¶‘@ÿÿˆˆA‘@ÿÿ„„[‘@ÿÿT‘@ÿÿqq5’ @ÿÿ®®÷ @ÿÿ­­ë @ÿÿ¬¬’ Dÿÿcc’ @ÿÿ"^^ê‘ @ÿÿ#MM}‘ @ÿÿ$*Å*Å?ÅWÅpÅÅ*Å*Å?ÅWÅpÅÅ*Å*Å?źÅKo*N*****Ô(ºl C C7ÞÅâÅæÅjB C('d--..//× ÐÔ÷­‡‘!%IŠÍG’ÊÎÒW’ÊÏÓ0’¦‰4"qH^A‘*44„²N#¢&00Êê‘KMÎÒk`gÙë¬[‘+55c’ÐÔD"#$¬W¢T‘)33q$’^$}‘•‘!/J¥‘(22Ò½‘-.Í‘./5’®ö--ª¶£/O2/I../../lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/DSIZEOF_UNSIGNED_LONG_INT=4/DSIZEOF_UNSIGNED_INT=4/D_M_X86_M_X86”ž/ACWDc:\libtasn1\windows\libtasn1\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"23C:\libtasn1\windows\c:\libtasn1\windows\libtasn1\ºÐã ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 “ºŸ/ACWDc:\libtasn1\windows\test-tree\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"2¼4C:\libtasn1\windows\c:\libtasn1\windows\test-tree\ؽàp ½n/O2/I..\..\lib/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 ¾¡/ACWDc:\libtasn1\windows\test-parser\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"¬¿6C:\libtasn1\windows\c:\libtasn1\windows\test-parser\PÀxùjË’/O2/I..\..\lib/I./I..\gnulib/I..\..\gl/FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86prompt /D_M_X86ƒÀ¡/ACWDc:\libtasn1\windows\asn1-parser\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"$Â6C:\libtasn1\windows\c:\libtasn1\windows\asn1-parser\÷Âè.f/O2/I./FD/EHsc/MT/FoDebug\\/FdDebug\vc80.pdb/nologo/c/TP/errorReport:prompt/D_M_X86_M_X86 Ü/ACWDc:\libtasn1\windows\gnulib\-IC:\Program Files\Microsoft Visual Studio 8\VC\include-IC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include-IC:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include-IC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include-AIC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727-AIC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\libdio 8\VC\atlmfc\lib"¼Ä1C:\libtasn1\windows\c:\libtasn1\windows\gnulib\,,,eÁ+ê0 ÑDÿÿ˜™š ›_$¸»ÜÞàâæèëíïñõ÷üþþ !.4JLVfimpæ+-FHTOT\^cþèôú ,6;?JO“©ª¬r’  § ª | A”&3C!248@BF»®ðÌ5”&3Cÿÿ:•7$&(+246<Œ§­²´¼¾ÆÍÛÞæèîðöøþ ,.248:CEJLMOWYZ_lnvy‚†‘˜š›Ÿ¤¦¬®¼¾ÄËÎÐÖÙáèêïðòúü "(*@JMORTóGKÛÝáãçéíòûî±®”&3Cÿÿ:âæ÷ÂÍÏ•(ì”&3Cÿÿ• *,029;CEGQVbjyy……ÃE9cï ”&3Cÿÿ("# #_&,8;=?lvŸ¡¦©Üàâèøüþ)/69;DPX[my…‡¥¯°¼6K—šž ¹ÄÅÑÕØõøüþ%(F#"q”&3Cÿÿ #NUXZh…PuDê¦Dÿÿ !iuFU ¨ =   !šøvX¨ =! !#za× ¦D ÿÿ !>z‘D   !›B~-¤úÈýC ÿÿ !mrm€ tD;ëC ÿÿp}†€cD ÿÿ   ™Ÿ€53r6D #   ˜¬‚ 1¦îCÿÿƒ$WŸúÈýCÿÿ  6ƒ¦îCÿÿ  "k„:¶úÈýCÿÿ !"(†ÌýCÿÿI†?ÆýC ÿÿ "$&(*,-/c†Å ”&3C ÿÿ"#( " !'[]adhj’ÇÊÎÐãæêìNQUW]‘fs~ ”&3C yþ("#) !KNadw}‹Ž”—°²¾ÀÉË×ÙÝàäæ’”ðô  DGSWbmy|˜¡¤¨ª›‘ 1ã”&3C ÿÿþ57¦{ZÞ”&3C ÿÿ $Y #%-/=?»ÊÏÒØ";;VmrŸ«[ Ñü¦D ÿÿ"##" $º« ;”&3C ÿÿ" "()+.138:Aü«d“”&3C n # *04:?ACFHKMRT[bilrÇÉãæ9¬ @”&3C ÿÿ,̬ $â”&3C ÿÿ Rëµ'Ÿ²? ÿÿ# f¼$!Ñ6ëC &!"#$Êÿÿÿÿ⿵6ëC"ÿÿ Z ªÙ%D#ÿÿ +!%(#%;DlnÅ$nÏ#D#ÿÿY%!7JL`b$Ê&D#ÿÿ$()#(êÅ2;Š"D(ÿÿ)(DgjKÇ #\Š"D(ÿÿ(*"$).?È0Gx#D(ÿÿ%'*&D!#%').0moq‹¥¹${#<?DHQV^n“²µº½ÅÈÎÝô÷üÿ 9L‘§»Îâ)VXd¨‹ÉŠ"D)ÿÿ%&"$S­ÊÿÿÿÿHÊË$D#ÿÿ#!* ‚@(@ €    @( @€ 9¬?È(f¼ k„m€ †€•(Ÿ€̬Å$Pu]‘iu‹É)›‘ÃEêÅ&ëµF¦#z $Ê%(†>z B~ HÊ+I†ZÂ#c†e|¬‚»øv ûƒ6ƒKÇ'Ÿ«º«â¿"ü«!*Ù‹–Æ9÷9iY<`<› )‰ºëƒN4Õ=v/—Ï IÃ…ë Y!ã"Ž!>#Ã!ø!-"b"ˆ"®"l#Û#­+$I$;&k&q$œ$ž&Î&Ä$'.'ï$%^'‹'B%j%•%½%è%&»'ä'£,(*?*9(e(>,o,Ž(s*¡*º(ã(Ò*+)8)d))¹)â)x ¾i «Œ¿"¨“A5îlSõªŠ{%ÔN<Új šÆp­]–Cnáçz˜d¥£.@UÃÅ^xG‡!I_1ÿ ƒ¼'nóï.Á¥ NõØÓ¤Þēއ ¦ cvðøÑ +<ª“ é G`Öá¹ '‘QÃÑ™;å… Ž r¨[ê‘’Ë0‡ Á bî $x ± TÜ p ¨ <Ñ ¹!E]½ Ô  Þ | S ƒ ÷ ® N  Å Æ j = p ã – =  _ . d 3 ö YoQoeé‚Ò‚ - :Ù9:ÁC–©ó  s $ ­ P M Ït K ô ( É œáŠ _ < < ¶^ 7 Ü  ¶ ‡ 2  ^tðá¢^àT+1+h+·Þ¸‰yÓ;î; % †[ù'†–yg<kk›[>—0C>CYC›C³CxC‰C€îÙ ©Qã]!Z÷Y0XiŒ"VùU\ZJX¼]š]ÙTçVVTVÕ^^§Xf=V©^÷]ìWÞWedSU_2RØQe^_·WR^yX’¤ZAUXd€RÂYJ\ª\vŒÌWÍU÷QÉQçQ"RŠ^|^pdEYœYêeãU–mY‚ÁEÜEýE®>õEFV@^@È>Õ>ìEFEHô?i?Q? :1ƒ8…@ ç«=Íi±i>l>>Ý>u çB—>N 1=rz9-9+3ˆ9C¤h€ðVgÈNÁƒFå·gBæ=5/:F,‚xGˆDd»Ó¬i¥ ¹ ¥†š†‰‡~‡%€@EÎ…È„¹„´†r‡È9ù8¤;ï…³?°ExE%Xw<Õ>3>˜|„pÈE¶E¢p§||½px{NvJp¬rnápXpq¿<do{ou+t uu|1q‡{`v¶|Ä|“q‡qÔ|¹qð|`pâ|Ãq}^E$xsw0x>x}—zŠzÖEÎEµ…¼;Ø…V3´<S;é<=ïrŠ< tï:ø…†8=P=$=ž<$|>|áqë’©“}‘Z—®’¼’“ë“Ü“ï‡úqÖ{^|¨vŸvچΆž‡’‡ÿš66Ä6·6î6å6:@+@äDÐDu6j6{&a5Bn 5gñy.…P‰m„ðˆ¬„„3R;en€nøopÂoÏoéoÜo§oppµoÕ€V€Kƒ—ƒŒƒ4€C€‡€û€…‚|€è€Â€¯€i€&‚‘e‚ó‚݂ƂÐP‚»;‚‚ü¦æ›€%@@åCÝC¤99K9€i•Wa-Q-ó†ä†·‡¨‡€|“9ÁF*F¸@«@óCëCSF1F1:&:µ:E::::Ò@•A‡AÛ@å@ñ@ü@.A+jggˆg¢‰Y‡Î‡O‡Ä‡"† Tn*g:g[nä„Õ„{FÚ8È8==N:m:^:¾nWrlv–<r¹t6tÃtÏtT9Nܾ:1|N|¦F¹F1rÈ{o|¯v±&C|:’rÃFÉFÑF×F²r§r0sšunt¦uÜvÎx¼wÛxGßF+>®;K3ÆAÑ<4;Ür‡tÐ:2HÊrˆ fHÃêstêuÞusÐukss`sts\w yAwúxØzðzÌzâzÒG GZu@teuMuVsJsJo4‡oh,h*‡‡ÿg˜hŒh ‡hh7hAhÍháhÃhÕhMhWhýhichnh(iiAi½g³g>‡3‡éAh@z@úA†@‘@ B|]€i”iviˆi¦i1Ghy(wwx0z£w…x“xRyÁz´zá;ù;-ok-ép±-G‡öÚ‡ 0 †Q…?o)2=F±‚œ‚á 6p0†k‡£6Í6÷6M@B@÷DìD}64DB;BDùC!}–{|r‹|ºX%uKt1u?uLxŠwYxhxÛtWtætótt´uztÁu^zjzÉwêxôstvvsøugw&yNwy€ubtŒuru~y4w¡xD€<"{5{+{I{={>vUGIDRDF=^=0=mG`GÈnG«<S{×wwâwïw–GŸG[{Œ:{ {¸GªGÒGÄG#vÌCCGzˆnˆ/jˆ„ˆDIzˆo{d{¦D¬D´DEEºDÂDÈD>O>'g‘Î2^ŽZ1Ž‚¦· ŽtGEŽå!ŽúRŽP=Åa>†w†ec‘e6ZÞdåZ$[[@[üZ¸`®eú^Ç\x_Û_6`Q]ÿb©U ]£_q`Ì`Ušf7\˜^–\.^…\NU YZ³Y·T~fqYpVhUDfSfôŠcffÞa¨`EU/U\d[†[Æ^¾[í[íbu[V[š[×[\*\­[ƒU™U2]aWaç©>¾>Ð> –Æ – –(-Zr;?ï>MnœÿBm5°5§5Rppyp±‰®†I…¦…CSeRITÔS8T|bRÅR1SžRÞRéRë^âSWR‡b™_dSÊSºRGR'S¼o‰g‰¹‰¿•ó•J”ÀfµÏ„Ø3^‰—?9é•$]ŠHÌo<¬TæE3îÜbbYàX4—Ö_>»8®8£ÆUd}Hpªp¯p¶p¦Tn}ÇpÔpGv‘v6;ŒœªoÚp?dw}ÀU#oq·_toŽN!q+q€};qYv˜vAqTqÇ4fq\qö€qwq¥qq³q¶v¿vÍq‚zxz”HØèÔqÙq½?Í?¢Í–H‘¥‘õqîq¦•@–‰}kvqv~‰u‰”ƽñ¬û³„=bî5æ5Eþ‚Í€N€¡ƒ¹ƒ±ƒÊTó€z‚t€à€º€§€a€‚ˆq‚\‚½‚ÇG‚²2‚‚óÜ’€™HuT~TÓnÜnV>z£-i.ž@&96c«bÀb"c „Tchceo)d5d16?6/-‘‰…‰6 6©-žH¨Žf4èX^b„›X»9¹5¾@~A8A AIŒ£gsg/`àV“g«gZõgœg›‰Ò•ë_=‹¸—&3í\Yë„a3½Hð8T‘A‘[‘×ü5’¶‘É_J}h¢d·d—FQ˜rr6--a·a‘ar$r£H,rŽ}zv€vK?C?¡A¬9³CTr[r÷R‹r,]“}U7+½_¡r™r€5v5ûno oŸÃr»rÍ5Ä5 L7]Y,YÿssÖACs:sM‹ëNšo oc RÎgÙVÒTòi$hRÅg{hëiÊ;°h‡úiØOjdëhõhdi jãgëgj1i9ij!jIiPiâAhi_ióAB(jžiªH—zw¬z¢zuHHS}+B}-Á\}Ž“Žþ•×,¨.î,¬‰»‰]…7o–sŒs§sžs©ƒ…!¨‚“‚z/TSS#TR­R¸Q‘S™ZQS°SobÑRÀS¡SoSïSýSTT÷RwRSˉe‡Š5ö5NI66¯Hk °T‰v,„r)]Ö5Ј©®s·sçvñvÂsÊsàsÔs—c%s"zwývwQjHjXj_jçkojfjvjXlYˆfl›l~jl¡j—j©j»j±jnl…jjwlÃjËjl†lÓjÚj DêjájDÄB˜B+D”l_lÔkTBKB•3vŽÊvÒv{üz®3`NOKOÇNwM]M•KºM "MEMÑK³£ßLèLQ¸NOMWMN1MŠMe»MCLÀ4÷3¤OKL¢NSN0{·4°OL¹\LcLlLRLþLòL=MàM)ÕLÚL­M NŸ3¶4¡4ÁK4§K*MÙáM MùMËÏÛ‹L›L©HŽ/vLï3— Š­÷.ì¯Uÿð£üÇ3ÿÕÏþóù=–»§µ{}ç.ÞÛêé|¯E¿bÝ~¬úËPmž?®û¸ðàgÿ1s_Hã`ü8ó ¬Fàdo>bψ¦¯/¾ò?¸…ž[›SÈ.þ?š¾íœ±a(Ícð¯gýùóü¿ÿø¹_•«~žWö=M6òhíù9þý¾ÕæŸ}¶Ú¥&wUÇèð“Ltä5šUññ>çݳ_áç¢Ãß®¼ÃñšmÒ ¹°riùö*YÙ—Ÿ«k9¿ÊkÞóÆã=øLœt‹ Ïg‡‰ý¼µŸ¯˜g9¿7Ê¥ç&ñ#uðfœPÂö–ç1¿Ô8â:ã0×_\‹7|bð—Ý?3öÈÀ×".Át9ã=>g逡oÒvƒÑèÊ'Ž~Œû¸¡ã+¬û8;1ä²/>c¶'þÙ“ÀHrJ»@j8’|tRq_V)ùðÁG¦žUžôÇøàóóò*ë‹­oü'¯Òò?Ü*ï”öy|õJ>ã?U±éµ#¼L WoÜeÅ|Ž ;è/ŸN‰LžŽ.ûT063šâøï‘X˜¢ÈÀÆCŽã5 ×Ó¤ hÄf‘s<>Ü„X%U4ÞŒK¹ÕI]\ºaS-zèåð—® .ZSÂ'2ü‚.8à ˜/8¢¬È'¸Jã¡’Z0.‹ˆªì }–"¶•ɉÑ"ƒYUÒèbŒdÜG•'žÇOcƒ÷·ù†îìãᬠ7¾*Þ˜yê§|nà™ó†8z”MNÇÏ6ÇsØÑÁü`ª€€ @ž@©À=[*Ž £@¸kÍ– (( ¿§@F)«@¦§ÄkÙ–(³@QZ(=V Êk¾¸@¤¤f 1+X[Y'¾@£Ôkê–(Ä@)½eW&ÜkTV0¼Î@F+oV%Ò@¢çkö–(Áxk=»Û@¡ïkT+W—(Eå@ pV#úkˆ$lSºñ@Ÿ‘#Þh+V—((Y&'?‚V#"ü@žl&—(" *—(e¹V#}+U¦! Aõm()l4— ((%.—(A&l² ŸV# =—(AŽ+{¸D—(» 1l‚ ªVH—('AÇž+>l½P—(·.Aœ¸V  ÐZ— ((– ª+­+S8Aš›ÄV Ü£¶ËVCAXl 1m—(æ«ÓV _l¼ÙV dŸ (w—(flóàV µ  ¹µYAnlGçV üÁ ‡—(wlÛ+fA—(‚8lÏ´nAå+™—(†l‚ê+vAd_eÛ1lW¡—(~A˜‚”lù+«—(çW³‡A–—&‚›líV²ñU±¤lW  ¸—((2‚•A” ,,üT°Ä—(;‚)W¡A“S¯·lÌ—(¦AG‚ R®Ó—(7WQ­Ù—(²AP‚Èl!P¬£ß—(¹AEW#O«\‚è—(ì—((NªÆA’e‚>,?,M©Ûl%WW$÷—(q‚6L¨ÖA‘ìl1ÅdW%>K§ÜAz‚ ˜(âA…‚  JJ¦éArW   ˜(m5RI¥˜(óAŽ “‚ YH¤o,>\G£úAç!˜(œ‚ m@cF¢BŒ W¨‚ ? B‹6˜(rE¡¼$mE±‚ W BzD ¢W   öA˜(CŸ ?½‚¨W  (5mM¬W  #)($*…Bž±W Æ‚Q˜(( +BŠ·WA£,GEmS”@œ2BÒ‚U!a˜()œ?›;Bˆ‰Ÿ>šÇW Ý‚Qf˜()£=™ÌW UmhDB†¬<˜KBƒé‚Ts˜()µ;—TB…ó‚P@_dÞW  hml[BÑ,†˜(Á:–þ‚ aBìW  ×,Æ9•ymyfB‚Ì8”ƒÐ7“—˜)rB„_ üW #Ø6’ƒj î,+Šm€Ÿ˜)|B X "ƒè5‘›m„‹Bx-*1ƒi?ö4˜B€û3®mˆ%X -)Á˜ 2ŽL?ƒ£B0X  Eƒ -(¿m‹˜Kƒh ³Bà˜#/-%YƒÑm]ƒXJX  ÄB~A-¸ ÍB|}?äm¨I-6! "tƒÂ`X ;0ÛBzQ-$Ë jX ôm¬ ™#()E  .  "· çB‰ƒa- #ŒƒSyX  R/n  "#()à k-;—ƒR_  % ÿByë  áƒO -™%h.C‘X }-©ƒNo-"Cù†-›X±ƒMCvz,-¹ƒL§XC„X Àƒ™-&Cu£-Bne’ #+0Ctσ©-׃Mnd±-:)__>CsTnc ÏX [nbª*4èƒÃ-NC샳enaòƒàX Ì-»ŒYCrIèX W  "#rn_Ø-„Ë‹€n" „[blpCæ-‡nÙ"xCqY ð-„Œnico‘ná‰ö-' Y  „Z —ný-‰Cpn+„{.Y  £nõY‚¬n.›Coþ 'Y (   ´n,Y Š.¾n^—ˆ$.³CnÈn]/.EYÓn\"²Ün[SYÌC/!C.m„ ]Yçn<x„ÆÝClmÊñnV.„ÏåCjH qY  ûnZ ëChi?ØŒ„oYÝT@óCfßi.€Y ùCdeo.]ç oXˆY  „DbîŒY  oWôk '$* Da”Y .ù¬„#oVD`ýœY †.w ³„.-oUD_¹„€ ”.!D^«Y7oT›.³YJ  È„+D]Ž?oSÏ„¨.3D\!Jo7Õ„ÂY %œ(>DW¶..Yo ä„©ID[ÕYë„;doQÛYRDYZ?ñ„¶‡áYD  #$'()$Ï.9F¿]DéYtoNîY ($*{oRòY VÍ á.mD÷Y „o]Ô‡oMZI €DšoPˆDþ.8@ oO Z¡.…c~§oL!Z 8…b/¯oDVµoK-Z /7¦DU”¼oI…Y¬DT6Z  ÂoJ (/Q…a´DSÉo?CZ  ºDRÏoI]…O5/6KZ $ ÂDQ`…°ÖoÈDPg…TZA/ÜoH¹ãoÐDOn…\Z F/Á « éoGv…ÚDòo~…ÎäDN?øoF……Ó ÿoìDMØxZ (…zZ g/pE÷DL•… ppD…EKŠZ d ­Z pCEJ¦…`l”Z pq™Z/ EI&p‹/µ…J{¬¤ZEH0p6pBÃ…Nˆ(EG ¹ZÎ…_3EFJp# ÁZ Ø…I±/ (Rp@E.XpÐZ å…M4 LE`pï…^ÝZhp·ø…HGåZ? Ó/ ^EEppNyphE†LX „prE†]üZ@  xECDñ/ p †Gi €E–påŽ[= '†K@uE¢p|0†\”Eªp8†$[>  œEˆ ¯p¶p£EB†0  ½p›°EAÇp¶E?@@[<  Y†Ïp¾EÔp#®  '$*c†Úp*ÈE=´'V[1 ¹ÎE;<áp4p†K0 ÖE9Ãépw†DEd[; ÜE8òp†FäEÏÑûpJ‰†ìE7u[:  †q õE6”†â^q ýE5š†@Aë†[2 îfq}0F4¥†B÷ !q ®†>š[3 F3þw´†=+qF21qÀ†#F­[5 ;qdž*F1AqΆ;1F/0Gq¾[4 #°0Ú†<=FTq,ä†9\qIF×[7 :³ífqSF-ó†:nqF]FÁì‡8wqÿí[0 R?Ë ‡7€qä0qF] (l‡qþÖ_‡c \6 {F,Þg©“q‡56ƒFAÿÿÿÿèqývª*‡3\9 ¥qü1ö  $*3‡12øë«q—Fïÿÿÿÿ†ÿêpažF³qû>‡/§*\8 ¹qú¦F+ éG‡.—¨7\P ®FÃqùO‡-)1è ¢Íqø¹F*Y‡, çªÔq÷¬¦J\ÃF)Ùqöe‡ÉF(.æáqõk‡+»¥ÑF']\r‡*L1×F&Äa\  îqóôe\>å ßF$%~‡'(õqñj\Fäo\ úqðÓ¤t\‰‡)rîìFQãz\ríôF’‡$\  rì "#()^âç…\   G"ž‡%x1rëk¨‡"rê< G –\   <$réráar,rèG!·‡#1rçª\„7r#Gć!‰à=r@£1£· 1G"¢7GÀ\›ß_dÚ‡=GÇ\ +¡TræCG⇨Þ[rå4 ×\ brï‡UGß\ Î1ºÝä\ orGû‡ç\`GNŸ|räó\ Ì܈mGø\ „rãÔÛý\aì1‹râÚÚ xG=ÿÿÿÿˆiž’rááÙˆ[ ] ] T  ™rÞëv¡ràðØGÿÿÿÿ-ˆ§rÝ–Gû×$]0 9ˆ2²rߟG)]2 ,]1 CˆÖ»rØ2]Q ªG—œÃrÜOˆÍde ÊrÛ¸GYˆ@32ª!ÌG] ×rÄGbˆQ]R ÜrÚ·›nˆÒG`]   <ïrÙR2zˆÞGËšEË„ˆ sÖ×ðGˆ Þ ™|] sº»q2]Õšˆ ‰] HsÓÔ¦ˆ mÔ÷š]  %sµ¶°ˆH20sÑÓ%H:sΰ] CsБ2H ˜¼]  —ÒJs͵2 @HVsÏEH ¨Ñ2Ò] KH`sÊ8×]  ðˆÉ2!VHks̹ÐC —ã] tsÉ`HÿˆÜ2"fH ʉsËmH[÷] ÓÏqH$*F‰uHŒsÇð2&h–^ H–sÈëžsÅÆŠH H §sÔH 3'ùΙH®sÁ‡žH?)^  ·sÀ£H.^  ªH Ê _Âs¿¯H&3)ÿÿÿÿ  #()!P‰ Éun+3Ês¾µH¤•A^  ȽHI^ Ôs¼^‰ $ÇÄH>3g‰R^ às½0ÆE3o‰K3ês¸u‰Ä<Åe^ V3ôs·C ~‰@Ï…‰a3 ÿs³TÄt±j3$‘‰l3|^  n3úH›‰t°bÃw3Š^  ¢‰{3ð”t¯pÂI†3¬‰˜^  ±‰ZxÁ+t®3¹‰©^ 6t­#I‰‡ÀŸ3†@t¬ˉ@–¿Ò‰¿^ Kt«®3…œ¾4²3Æ^N +“Wtª ©½å‰ ¿3'Õ^ bt©Ê3'(¶¼XI#nt¨ø‰Ò3(Jë^ Ø3''N’zt§Èá3lI.Ï» Šæ3'\ú^   "#‡t¦ï3„õ3áº÷3ƒI:Šü3(_ þ3w t¥ŽI>ó¹  41Š&€‘IB'_  ¸¹t¤4‚CŠ0“0_ ·¬IXÃt£<_ *4  ¶UŠ4D_ Ït¢§¾Ic«;4( µÛt¡²gŠ?¶O_ U_ ÎIgæt À7 ´ybÅQ4yŠCÝIkÈótŸX4]4K ³užìI{ŠŠPx_   f4w#(lßm4 u•ŠQ_ ²u4Š_  J ŠR_ uœ’_  "(4ù¬ŠS™_ %u›s ±‰4)$*J‡£_L 4¸ŠT1uš Œ#J•‡ °ÊU4¡4€?u™·_ ¯‹ÏŠV½_ 8J™Mu– ®ÛŠW+5É_ ·4~Zu˜3ŠçŠXÀ4}­ ­ JJ¥Ö_ Ç4x#("eu—Û_   Ì4  "#(ôŠC YJµE4½ ¬ru“N‰Å «hJ¹ ‹€u•õ_  ‹Ô ª‹a3ÿ_ ‹Œu”xJÒ‹‹kã © ` !‹šu’%‹)‹` -‹|ˆ¦u‘1‹ 58÷ ¨ep5‹!` 9‹=‹& ´u5Ž2)` ¤Jù5/`¶  §•1"5Áu 6`   M‹  žµJúÐuŒ ¦_‹!°Q` ÞuŽ·ÌJü»,3 ¥^`  êuÂw‹"d` = ¤ÝJýøu‰q`   Õ‡a5"N £ñJÿ‹#v‹m5!æ0_ ¢v5 vŠKî /Œ` j ¡€5¨‹'ö†#v8œ` Š5K|  ¤`  .”53v?¾‹(¨`    ö˜58v'K …>vˆŽ Ÿ¸`  §5Gv‡Ô‹)› ž°5Nv†;K% -Ì`   ¹50 „Yv…¨ `v„LKÄ5± œë‹*@ ƒÍ5kv<ƒå` qv‚Á ›Ö5aK N ‚ï` zv;€Œ+à5€v~Ñ šú` æ5oK ‰v}î5a Ü ™|K ‘v|Œ,k ö5˜v{aO  u €ÿ5Ÿvyzî ˜‰K 6€ ¨vw•K3Œ-† $a 6¯vv —_pK¶vu-a ¢K6§K| –¿vt6a IŒ%6OŒ=a @a Êvs¥ ~16»K •Òvr[ŒÁK{± ;6Üvq?6iŒ¹ }Wa   ÏK'2 ”deÑKzI6çvpØKvŒÆ < “ÛKñvoha T6àKÏ |<æK„Œ " #ÿÿÿÿra ývnM ’o(Ù {ya wmj6á z÷K„a úKr6wkl^ ‘ë yu6 þK LŸŒ‘a }6 whiL†6›a t _p(wfŸa 6 L¹Œ¨a L–64we­a š6 !Š *L·a £6 Awcd<0L!ÏŒ­67LNw`a'!Åa ØŒ  Ž·6àŒCLy0!\w^5!Óa À6KLxÄ6xL*MÎ 1Mn"– ‚Àb LxK9M&"±7-"tYxJEMmå Õb Á7® OMlÜb hxIWMkú ]MjÔ7íbM wxHÆ €fMS"kMä7[" Ž …xGÿbH b"swMiÞ ô7“xFM!Ž cF ŠMh¡xE8’M1Ž ö ~"c ˆ"r°xDMg8 }¤MEŽ ¿xC6c ­Mf'8RŽ  |ÎxBºMe^Ž ®"q98Nc ÃMÛxAÉMTc   "A8. {ÏM ÒMqŽ J8êx@ØMdc = zxŽ hc    "#T8àMX}Ž ‚Ž úx>Ô"^8‡Ž "ëMÜ"zc g8S yôM y?“Ž " "ã"pùMds8‰c Ž " "y<NcŽc |8i x)¨Ž  "# "#() Nb—c² …8­Ž "#()&y=²Ž "#()"N c x wŽ8N·Ž Na§c 4y˜8#‡ vÄŽ "*NÉŽ "£8#“ u2NÂc %#®87ÖŽ "=NRy>-#?¦ t»86⎠5#JNëŽ >#oÈ84hy;ßcTN¹ sñŽ äcúŽ ry`N`Ú8òc~y:öc  ä8Ñ rrN‰y9dð85dxl#n–y8ù83…Nd   é q) $ ŠNŽN    "#(¤y9 –N9®y'd$*9)d  p; 9 ¢N_9¨N5d ˜#&9#²N$)$R ?d-91o¸N^¨#LdÂN±#'n=9ÇN]i Xd»#H9K9×NÄ#<medñy T92Ë#ÝNâNÐ#pd\9‡"Ö#ëNN #(Œ ""Û#me9zQl}d()&òNdd zp9z‡d`kœ""ŒdOz9dz’d"z¬""†9œdˆ9þvj<³""$¢d,zO0z“9û¼""!O$|2·f¤; ‘RÍ‘$1QÀf®;í:QN|1Êf()Þ‘$FQ¼;ìªQ^|0LQê‘$ÿÿÿÿ)$**Øf)();&fRQÊ;Žßf  "#(ÿÿÿÿXQo|/Ó;ë^Qþ‘)$*ÃPiQá;€|.’$$ÖOt tQ‹|-î;ê’$$zQk&L€Qù;˜|$’$(’($*<ðNQ0’($*§|gÄ5’ $$<™Q Q*g¶|< M©QG’&$**%<:gÃÄ|ž&eO’&$*C¸QW’&$*L2<GgÁÔ|c’&$**ÉQ  @<VgÀâ|n’&$*5KL<ØQ x’$ð|jgºÎ&KY<éçQ  …’$sg`¹`<èNJ}zgg<çg¸÷Q•’$o<ˆg·} w<梒$R  « #“g´lI€<å R § !} ®’&&œg³(R. 'dŠ<â£g²0}¼’ (&&()j–<ä«g±"R  8}ŠH³g¯ž<á?@}Í’&E}2R½g°«<ãJ},Åg­®Ù’&(´<ÞS}+.'JÎg©ª¨GGR \} ¿<à×gë’&&()%Æ<d} ÝgWR ãg¤n}Ñ<ßø’&(ëg£w}ÆFeR Ü<“&(õg¢â<€}^'cé<Ø“&(ÿg ‰}wR ' ÚEŽ}hž“}€R “&(ù<™}h'“&(R  hœ=ÝõD«}_7“&($h›=מR ‹'I,hšB“&(=ÜÀ}b­R& C7h™$=ÖQ“&(Ah˜ºR 0=ÛÔ}g_“&()&8=Õ%BMh—ÅR e“&(Wh–»'bF=ÚÑR , ç}jch•P=Ôy“&(ÞR AAnh”ù}x^=ÙéR {h“h= ~´““&(÷R% ä'Hƒh]@S Œh‘x=~¹©“&&%ƒ=p?˜h’S+ ¢h=/~ÄS ƒ>(a“ (&&()j°hŒ'S =?~Ò“=1S »h«=Õ“&Ãh‰ŠP~Õ´=Ü“)&&)¥<CS Íh‡»=Õh…†9(Fë“)&&)c~òQS È=áhƒ¼;q~#Õ=Óëh‚ÿ“&dS ~~$õh~(oS( æ=Ó:ýh}”&‹~%e(`i|S) ™~&ý=iz{)”&ï9>Ñ "#()‘S iv§~' >>Ð?(iw>”&¡S # Ž(E>ϵ~(1icu>Î 89ibt°S-Æ~)S”&Ais1>IirÀS 8>Ö~*'7Piaq>>ÊS Wiº(_o” &ÔS  _ioè~$ÿÿÿÿO>ÍS>hipV>Ì?C6âS oi[>ˈ” &vimnb>ïS* U5€ikã(DýS$ ˆiijv>|>§” &”ign4T ! †>&zžifT  >¦ie1y —>#T )^‡3±i¿Å” &/T" ©>ÊH8T  ®>ÉÛ” &¶>¥2Íi¾¾>ÈIT ^x8)CÃ>È>ÇVTáilJ÷”&äiÐ>Æ\TèiÕ>ÅtKÃ1ëi_$jfTÝ>òi^lT‚wúi]•&uT d)]j\ï>Ä~T á0 j[ù>šIjZþ>T"()¢HT jY0•&—T  !jX™T ?ÿ/(jWŸT±G)B/j»¦T"?ºv¬T`"c#?ÁuM•&°TÂ.Èt@jV·TG "#Ï2?HjTUÒs ;?ÃÙQjRÜr ÊT> i• ''ct.-¹)\Xj QC? ãÒT  ¦  "(çq_jPK?ÁÙTw•'Q?ÀfjNOð}•'ôpojLI,û†•'ÿovjKb?€Ž•'i?¿~jJ€nâ)A÷T …jI^+ýT  "#€jHy?€m¦• ''(?¾€—jFGU  V  "#®•'%€l´•'¡jDz*?UU #©jC4€F—?¨½*[¿•''ag›?±jAB=€É•'/UK "#¦?»j?C€E–)reÒ•''(eÃj >N€D³?¸Û•'AU  Ëj =V€gCâ•'½?¼ "(Ój<­(é•''sta€BNU S "#Ä?Új ;?*@i€fAó•''] áj9Í?º»êj:Ö?Ä't€@þ•''ñj67hU  "#|€e? –''ciâ?ýj8‡€d=ë?Ø&yU–'kó?’€<? –''ƒU  $  "#k23ù?s*Z›€c;U  "ó%k4§€:  @™U /  "#8–'¯€b9&k0@¶·@–''/k/º€8@©UE $€a7%@´:k.M–'¡*=+@³Í€6Dk-5@ÀU  "cÕ€`5:@²ÆU "Pk+f–(.#__ÍU B@±à€4 j–([k,è€_3r–(M@°dk*ó€2V@¯ lk(ãU Ò*Yû€^1^@®N"vk)‹–(( –(h@­0 ~k&'ùU ]/r@š–(ˆk$ –((z@¬.k"#n!un!-V †@«œk ±–)(+<)\,‘@ª ¦k2+"V °küËC:\libtasn1\windows\libtasn1\libtasn1.vcproj/O2 /I "." /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/ACWD "c:\libtasn1\windows\libtasn1\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\libtasn1\c:\libtasn1\lib\asn1.cc:\program files\microsoft visual studio 8\vc\include\stddef.hc:\program files\microsoft visual studio 8\vc\include\crtdefs.hc:\program files\microsoft visual studio 8\vc\include\sal.hexpr__inner_fallthrough__inner_data_entrypoint()category__inner_control_entrypoint()__inner_blocksOn()resource__inner_callback__inner_override__inner_typefix()ctype__inner_checkReturn__pre __null__readableTo(sentinel(0))__inner_success()__deref_opt_inout_bcount_opt()size__deref_opt_inout_ecount_opt()__deref_opt_inout_opt__deref_opt_inout_bcount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_ecount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_opt __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full_opt() __exceptthat __maybenull__deref_inout_ecount_full_opt() __exceptthat __maybenull__deref_inout_bcount_part_opt(,) __exceptthat __maybenulllength__deref_inout_ecount_part_opt(,) __exceptthat __maybenull__deref_inout_bcount_opt() __exceptthat __maybenull__deref_inout_ecount_opt() __exceptthat __maybenull__deref_inout_opt __exceptthat __maybenull__deref_opt_out_bcount_opt()__deref_opt_out_ecount_opt()__deref_opt_out_opt__deref_opt_out_bcount_opt() __post __deref __nullterminated__deref_opt_out_ecount_opt() __post __deref __nullterminated__post __deref __valid __refparam __exceptthat __maybenull __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull __post __deref __nullterminated__deref_out_bcount_full_opt() __exceptthat __maybenull__deref_out_ecount_full_opt() __exceptthat __maybenull__deref_out_bcount_part_opt(,) __exceptthat __maybenull__deref_out_ecount_part_opt(,) __exceptthat __maybenull__deref_out_bcount_opt() __exceptthat __maybenull__deref_out_ecount_opt() __exceptthat __maybenull__deref_out_opt __exceptthat __maybenull__deref_bcount_opt() __exceptthat __maybenull__deref_ecount_opt() __exceptthat __maybenull__deref_opt_inout_bcount()__deref_opt_inout_ecount()__deref_opt_inout__deref_opt_inout_bcount() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout_ecount() __pre __deref __nullterminated __post __deref __nullterminated__deref_opt_inout __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full() __exceptthat __maybenull__deref_inout_ecount_full() __exceptthat __maybenull__deref_inout_bcount_part(,) __exceptthat __maybenull__deref_inout_ecount_part(,) __exceptthat __maybenull__deref_inout_bcount() __exceptthat __maybenull__deref_inout_ecount() __exceptthat __maybenull__deref_inout __exceptthat __maybenull__deref_out_bcount_full() __exceptthat __maybenull__deref_out_ecount_full() __exceptthat __maybenull__deref_out_bcount_part(,) __exceptthat __maybenull__deref_out_ecount_part(,) __exceptthat __maybenull__deref_out_bcount() __exceptthat __maybenull__deref_out_ecount() __exceptthat __maybenull__deref_opt_out __post __deref __nullterminated__deref_out __exceptthat __maybenull__deref_bcount() __exceptthat __maybenull__deref_ecount() __exceptthat __maybenull__deref_inout_bcount_opt()__deref_inout_ecount_opt()__deref_inout_opt__deref_inout_bcount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_ecount_opt() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_opt __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_full() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount_full() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_bcount_part(,) __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount_part(,) __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_bcount() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout_ecount() __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_inout __pre __deref __exceptthat __maybenull __post __deref __exceptthat __maybenull__deref_out_bcount_opt()__deref_out_ecount_opt()__deref_out_opt__deref_out_bcount_opt() __post __deref __nullterminated__deref_out_ecount_opt() __post __deref __nullterminated__post __deref __valid __refparam __execeptthat __maybenull __post __deref __nullterminated__deref_out_bcount_full() __post __deref __exceptthat __maybenull__deref_out_ecount_full() __post __deref __exceptthat __maybenull__deref_out_bcount_part(,) __post __deref __exceptthat __maybenull__deref_out_ecount_part(,) __post __deref __exceptthat __maybenull__deref_out_bcount() __post __deref __exceptthat __maybenull__deref_out_ecount() __post __deref __exceptthat __maybenull__deref_out __post __deref __exceptthat __maybenull__deref_bcount() __post __deref __exceptthat __maybenull__deref_ecount() __post __deref __exceptthat __maybenull__deref_inout_ecount()__deref_inout__deref_inout_ecount() __pre __deref __nullterminated __post __deref __nullterminated__deref_inout_bcount_part(,)__deref_inout_ecount_part(,)__deref_inout_bcount() __pre __deref __byte_readableTo() __post __deref __byte_readableTo()__deref_inout_ecount() __pre __deref __elem_readableTo() __post __deref __elem_readableTo()__deref_inout __pre __deref __byte_writableTo() __post __deref __byte_writableTo()__deref_inout __pre __deref __elem_writableTo() __post __deref __elem_writableTo()__deref_inout __pre __deref __nullterminated __post __deref __nullterminated__notnull __elem_readableTo(1) __pre __deref __valid __post __deref __valid __refparam__deref_out_ecount()__deref_out__deref_out_ecount() __post __deref __nullterminated__post __deref __valid __refparam __post __deref __nullterminated__deref_out_bcount_part(,)__deref_out_ecount_part(,)__deref_out_bcount() __post __deref __byte_readableTo()__deref_out_ecount() __post __deref __elem_readableTo()__deref_bcount() __post __deref __valid __refparam__deref_ecount() __post __deref __valid __refparam__deref_ecount(1) __post __deref __valid __refparam__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __byte_writableTo()__ecount(1) __post __elem_readableTo(1) __post __deref __notnull __post __deref __elem_writableTo()__inout_bcount_opt()__inout_ecount_opt()__inout_opt__inout_ecount_opt() __pre __nullterminated __post __nullterminated__inout_opt __pre __nullterminated __post __nullterminated__inout_bcount_full() __exceptthat __maybenull__inout_ecount_full() __exceptthat __maybenull__inout_bcount_part(,) __exceptthat __maybenull__inout_ecount_part(,) __exceptthat __maybenull__inout_bcount() __exceptthat __maybenull__inout_ecount() __exceptthat __maybenull__inout __exceptthat __maybenull__out_bcount_opt() __post __nullterminated__out_ecount_opt() __post __nullterminated__out_bcount_full_opt() __post __nullterminated__out_ecount_full_opt() __post __nullterminated__out_bcount_part_opt(,) __post __nullterminated__out_ecount_part_opt(,) __post __nullterminated__out_bcount_full() __exceptthat __maybenull__out_ecount_full() __exceptthat __maybenull__out_bcount_part(,) __exceptthat __maybenull__out_ecount_part(,) __exceptthat __maybenull__out_bcount() __exceptthat __maybenull__out_ecount() __exceptthat __maybenull__out __exceptthat __maybenull__in_bcount_opt()__in_ecount_opt()__in_opt__in_bcount_opt() __pre __nullterminated__in_ecount_opt() __pre __nullterminated__in_opt __pre __nullterminated__in_bcount() __exceptthat __maybenull__in_ecount() __exceptthat __maybenull__in __exceptthat __maybenull__bcount() __exceptthat __maybenull__ecount() __exceptthat __maybenull__inout_bcount()__inout_ecount()__inout__inout_bcount() __pre __nullterminated __post __nullterminated__inout_ecount() __pre __nullterminated __post __nullterminated__inout __pre __nullterminated __post __nullterminated__inout_bcount_part(,)__inout_ecount_part(,)__out_bcount_part(,) __pre __valid __pre __byte_readableTo()__out_ecount_part(,) __pre __valid __pre __elem_readableTo()__out_bcount() __pre __valid__out_ecount() __pre __valid__pre __valid __post __valid __refparam__bcount() __post __valid __refparam__ecount() __post __valid __refparam__post __valid __refparam __post __exceptthat __maybenull__post __valid __refparam __post__out_bcount_full() __post __nullterminated__out_ecount_full() __post __nullterminated__out_bcount_part(,) __post __nullterminated__out_ecount_part(,) __post __nullterminated__bcount() __post __valid __refparam __post __nullterminated__ecount() __post __valid __refparam __post __nullterminated__post __valid __refparam __post __nullterminated __exceptthat __maybenull__post __valid __refparam __post __nullterminated__out_bcount_part(,)__out_ecount_part(,)__out_bcount() __post __byte_readableTo()__out_ecount() __post __elem_readableTo()__ecount(1) __post __valid __refparam__in_bcount()__in_ecount()__in__in_bcount() __pre __nullterminated__in_ecount() __pre __nullterminated__in __pre __nullterminated__in __pre __byte_readableTo()__in __pre __elem_readableTo()__pre __valid __pre __deref __readonly__notnull __byte_writableTo()__notnull __elem_writableTo()extent__declspec(nothrow)c:\program files\microsoft visual studio 8\vc\include\vadefs.hchar *__w64 unsigned int(  = (va_list)0 )ap( *( *)(( += _INTSIZEOF()) - _INTSIZEOF()) )t(  = (va_list)_ADDRESSOF() + _INTSIZEOF() )v( (sizeof() + sizeof(int) - 1) & ~(sizeof(int) - 1) )n(__alignof())(sizeof())( &reinterpret_cast() )__w648struct threadlocaleinfostructintunsigned intunsigned long [6]LC_ID [6]wchar_t *int *threadlocaleinfostruct::__unnamed_0002_1 [6]lconv *unsigned short *const unsigned short *const unsigned char *__lc_time_data *struct tagLC_ID *struct tagLC_IDunsigned shortstruct localeinfo_struct *struct localeinfo_structpthreadlocinfopthreadmbcinfostruct threadmbcinfostruct *struct threadlocaleinfostruct *__time64_t__int64__w64 long__w64 intsize_t(void)x_CRT_INSECURE_DEPRECATE()  size_t __cdecl ( *,  ,   ,   );_DeclSpec_FuncName_SecureFuncName_SecureDstType_DstType_Dst_TType1_TArg1_TType2_TArg2_TType3_TArg3_CRT_INSECURE_DEPRECATE()  size_t __cdecl ( *,  ,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_ReturnType_ReturnPolicy_VFuncName_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , ...); _CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   , va_list _Args);_SecureVFuncName_CRT_INSECURE_DEPRECATE()   __cdecl ( ,   ,  * );_HType1_HArg1_HType2_HArg2_CRT_INSECURE_DEPRECATE()   __cdecl ( ,  * ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   ,  );_TType4_TArg4_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   ,   );_CRT_INSECURE_DEPRECATE()   __cdecl ( *,   );_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_CRT_INSECURE_DEPRECATE()   __cdecl ( *);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( * ,   ,   , ...); _CRT_INSECURE_DEPRECATE()   __cdecl ( * ,   ,   , va_list _Args);_CRT_INSECURE_DEPRECATE(_s)   __cdecl ( *);_FunctionCall__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_4_EX(, , , , _s, , , , ,  ,  ,  ,  ,  , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_3_EX(, , , , _s, , , , ,  ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(, , , , _s, , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_1_EX(, , , , _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_0_EX(, , , , _s, , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_SIZE_EX(, , _s, , , , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_SIZE_EX(, , _s, , , , , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_ARGLIST_EX(, , , , , _s, , , , ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_ARGLIST_EX(, , , , _s, , _s, , , ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_2_0_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_1_1_EX(, , , , _s, , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(, , , , _s, , , , ,  ,  ,  ,  ,  , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(, , , , _s, , , , ,  ,  ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(, , , , _s, , , , , ,  ,  )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(, , , , _s, , , , )__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(, , , , _s, , )extern "C++" { template inline  __CRTDECL (__in const  *, __out_ecount_opt(_DriveSize)  (&_Drive)[_DriveSize], __out_ecount_opt(_DirSize)  (&_Dir)[_DirSize], __out_ecount_opt(_NameSize)  (&_Name)[_NameSize], __out_ecount_opt(_ExtSize)  (&_Ext)[_ExtSize]) { return (, _Drive, _DriveSize, _Dir, _DirSize, _Name, _NameSize, _Ext, _ExtSize); } }_Srcextern "C++" { __pragma(warning(push)); __pragma(warning(disable: 4793)); template inline  __CRTDECL ( (&)[_Size],  ,   , ...) { va_list _ArgList; _crt_va_start(_ArgList,  ); return (, _Size, ,  , _ArgList); } __pragma(warning(pop)); }extern "C++" { __pragma(warning(push)); __pragma(warning(disable: 4793)); template inline  __CRTDECL ( (&)[_Size],  , ...) { va_list _ArgList; _crt_va_start(_ArgList, ); return (, _Size, , _ArgList); } __pragma(warning(pop)); }extern "C++" { template inline  __CRTDECL ( ,  ,  (&)[_Size]) { return (, , , _Size); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ,   ,   ) { return (, , _Size, ,  ,  ); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ,   ) { return (, , _Size, ,  ); } }extern "C++" { template inline  __CRTDECL ( ,  (&)[_Size],  ) { return (, , _Size, ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ,   ,   ) { return (, _Size, , ,  ,  ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ,   ) { return (, _Size, , ,  ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ,  ) { return (, _Size, , ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size],  ) { return (, _Size, ); } }extern "C++" { template inline  __CRTDECL ( (&)[_Size]) { return (, _Size); } }((size_t)-1)100__cdecl__declspec(restrict)__declspec(noalias)__declspec(align())const_CRT_DEPRECATE_TEXT("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: "  ". See online help for details.")_NewName10_CRT_DEPRECATE_TEXT("This function or variable has been superceded by newer library or operating system functionality. Consider using"  "instead. See online help for details.")_NewItem0xFD_CRT_INSECURE_DEPRECATE()_Replacement_CRT_DEPRECATE_TEXT("This function or variable may be unsafe. Consider using "  " instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")__declspec(deprecated())_Text__STDC_SECURE_LIB__200411L_CRTIMP__declspec(dllimport)__CRT_WIDE()_StringL__CRT_STRINGIZE()_Valueerrno_tint *_Value (int *)int _Value (int) ()(size_t)&reinterpret_cast(((( *)0)->))sm(*_errno())c:\program files\microsoft visual studio 8\vc\include\stdlib.hc:\program files\microsoft visual studio 8\vc\include\limits.hSIZE_MAXUINT_MAX0xffffffffffffffffui649223372036854775807i64(-9223372036854775807i64 - 1)0xffffffffui322147483647i32(-2147483647i32 - 1)0xffffui1632767i16(-32767i16 - 1)0xffui8127i8(-127i8 - 1)0xffffffffUL2147483647L(-2147483647L - 1)0xffffffff2147483647(-2147483647 - 1)0xffff32767(-32768)5SCHAR_MAXSCHAR_MIN0xff127(-128)_onexit_t_onexit_t _Funcunsigned long _Valchar *_Dstbufint _Radix (unsigned long, char *, int)voidchar *_Buf1char *_Buf2int _SizeInBytes (char *, char *, int)const char *_EnvString (const char *)long _Valchar *_DstBuf (long, char *, int)int _Val (int, char *, int)double _Valint _NumOfDigits (double, int, char *)int _NumOfDecint *_PtDecint *_PtSign (double, int, int *, int *)unsigned long _Duration (unsigned long)unsigned int _Frequencyunsigned int _Duration (unsigned int, unsigned int)int _Modeconst wchar_t *_Pathwchar_t (&_Drive)[_DriveSize]wchar_t (&_Dir)[_DirSize]wchar_t (&_Name)[_NameSize]wchar_t (&_Ext)[_ExtSize] (const wchar_t *, wchar_t (&)[_DriveSize], wchar_t (&)[_DirSize], wchar_t (&)[_NameSize], wchar_t (&)[_ExtSize])size_t _DriveSizesize_t _DirSizesize_t _NameSizesize_t _ExtSizeconst wchar_t *_FullPathwchar_t *_Drivesize_t _DriveSizeInWordswchar_t *_Dirsize_t _DirSizeInWordswchar_t *_Filenamesize_t _FilenameSizeInWordswchar_t *_Extsize_t _ExtSizeInWords (const wchar_t *, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigned int, wchar_t *, unsigned int) (const wchar_t *, wchar_t *, wchar_t *, wchar_t *, wchar_t *)const wchar_t *_Filenameconst wchar_t *_EnvVarwchar_t *_ResultPath (const wchar_t *, const wchar_t *, wchar_t *)wchar_t (&_ResultPath)[_Size] (const wchar_t *, const wchar_t *, wchar_t (&)[_Size])size_t _Sizesize_t _SizeInWords (const wchar_t *, const wchar_t *, wchar_t *, unsigned int)const wchar_t *_Nameconst wchar_t *_Value (const wchar_t *, const wchar_t *)const wchar_t *_EnvString (const wchar_t *)const wchar_t *_ErrMsgconst wchar_t *_Driveconst wchar_t *_Dirconst wchar_t *_Ext (wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *) (wchar_t (&)[_Size], const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_PathResult (wchar_t *, unsigned int, const wchar_t *, const wchar_t *, const wchar_t *, const wchar_t *)wchar_t *_FullPath (wchar_t *, const wchar_t *, unsigned int)const char *_Destchar (&_Drive)[_DriveSize]char (&_Dir)[_DirSize]char (&_Name)[_NameSize]char (&_Ext)[_ExtSize] (const char *, char (&)[_DriveSize], char (&)[_DirSize], char (&)[_NameSize], char (&)[_ExtSize])const char *_FullPathchar *_Drivechar *_Dirchar *_Filenamesize_t _FilenameSizechar *_Ext (const char *, char *, unsigned int, char *, unsigned int, char *, unsigned int, char *, unsigned int) (const char *, char *, char *, char *, char *)const char *_Filenameconst char *_EnvVarchar *_ResultPath (const char *, const char *, char *)char (&_ResultPath)[_Size] (const char *, const char *, char (&)[_Size])size_t _SizeInBytes (const char *, const char *, char *, unsigned int)unsigned __int64unsigned __int64 _Valint _Shift (unsigned __int64, int)unsigned int _Val (unsigned int, int)const char *_Nameconst char *_Value (const char *, const char *)const char *_ErrMsgchar *_Pathconst char *_Driveconst char *_Dirconst char *_Ext (char *, const char *, const char *, const char *, const char *)char (&_Path)[_Size] (char (&)[_Size], const char *, const char *, const char *, const char *)char *_PathResult (char *, unsigned int, const char *, const char *, const char *, const char *)unsigned long (unsigned long, int)_CRT_FLOAT *_Resultchar *_Str_locale_t _Locale (__unnamed_0005_3 *, char *, localeinfo_struct)_LDOUBLE *_Result (__unnamed_0005_1 *, char *, localeinfo_struct)_CRT_DOUBLE *_Result (__unnamed_0005_2 *, char *, localeinfo_struct) (__unnamed_0005_3 *, char *) (__unnamed_0005_1 *, char *) (__unnamed_0005_2 *, char *)char (&_Dest)[_Size]double _Value (char (&)[_Size], double, int) (char *, unsigned int, double, int) (char (&)[_Size], double, int, int *, int *) (char *, unsigned int, double, int, int *, int *)int _NumOfDightschar *_FullPathconst char *_Path (char *, const char *, unsigned int)const wchar_t *_Strwchar_t **_EndPtr (const wchar_t *, wchar_t **, int, localeinfo_struct) (const wchar_t *, wchar_t **, int) (const wchar_t *, localeinfo_struct)wchar_t *_DstBuf (unsigned __int64, wchar_t *, int) (unsigned __int64, wchar_t *, unsigned int, int)__int64 _Val (__int64, wchar_t *, int) (__int64, wchar_t *, unsigned int, int)longdoubleconst wchar_t *_Commandwchar_t **_Buffersize_t *_BufferSizeInWordsconst wchar_t *_VarName (wchar_t **, unsigned int *, const wchar_t *)size_t *_ReturnSizewchar_t (&_Dest)[_Size] (unsigned int *, wchar_t (&)[_Size], const wchar_t *)size_t _DstSizeInWords (unsigned int *, wchar_t *, unsigned int, const wchar_t *) (const wchar_t *, wchar_t **, localeinfo_struct) (const wchar_t *, wchar_t **)unsigned long _Valuewchar_t *_Dest (unsigned long, wchar_t *, int) (unsigned long, wchar_t (&)[_Size], int) (unsigned long, wchar_t *, unsigned int, int)long _Value (long, wchar_t *, int) (long, wchar_t (&)[_Size], int) (long, wchar_t *, unsigned int, int) (int, wchar_t *, int) (int, wchar_t (&)[_Size], int) (int, wchar_t *, unsigned int, int)void *void *_Memorysize_t _Countsize_t _Alignmentsize_t _Offset (void *, unsigned int, unsigned int, unsigned int, unsigned int) (void *, unsigned int, unsigned int, unsigned int) (void *, unsigned int, unsigned int) (unsigned int, unsigned int, unsigned int) (void *)size_t _NewSize (void *, unsigned int) (unsigned int)size_t _NumOfElementssize_t _SizeOfElementschar *_Destconst wchar_t *_Sourcesize_t _MaxCount (char *, const wchar_t *, unsigned int, localeinfo_struct)size_t *_PtNumOfCharConverted (unsigned int *, char (&)[_Size], const wchar_t *, unsigned int, localeinfo_struct)char *_Dstsize_t _DstSizeInBytesconst wchar_t *_Srcsize_t _MaxCountInBytes (unsigned int *, char *, unsigned int, const wchar_t *, unsigned int, localeinfo_struct) (char *, const wchar_t *, unsigned int) (unsigned int *, char (&)[_Size], const wchar_t *, unsigned int) (unsigned int *, char *, unsigned int, const wchar_t *, unsigned int)int *_SizeConvertedchar *_MbChwchar_t _WCh (int *, char *, unsigned int, wchar_t, localeinfo_struct)rsize_t _SizeInBytes (int *, char *, unsigned int, wchar_t) (char *, wchar_t, localeinfo_struct) (char *, wchar_t) (unsigned long, char (&)[_Size], int) (unsigned long, char *, unsigned int, int)const char *_Commandconst char *_Strchar **_EndPtr (const char *, char **, int, localeinfo_struct) (const char *, char **, int) (const char *, char **, localeinfo_struct) (const char *, char **)unsigned int _Seedconst char *_Source (wchar_t *, const char *, unsigned int, localeinfo_struct) (unsigned int *, wchar_t (&)[_Size], const char *, unsigned int, localeinfo_struct)const char *_SrcBuf (unsigned int *, wchar_t *, unsigned int, const char *, unsigned int, localeinfo_struct) (wchar_t *, const char *, unsigned int) (unsigned int *, wchar_t (&)[_Size], const char *, unsigned int) (unsigned int *, wchar_t *, unsigned int, const char *, unsigned int)wchar_t *_DstChconst char *_SrcChsize_t _SrcSizeInBytes (const char *, unsigned int, localeinfo_struct) (const char *, unsigned int) (const char *, localeinfo_struct)const char *_Ch (long, char (&)[_Size], int) (long, char *, unsigned int, int)ldiv_tlong _A1long _A2 (long, long)long _Numeratorlong _Denominatorconst char *_String (unsigned __int64, char *, int) (unsigned __int64, char *, unsigned int, int) (__int64, char *, int) (__int64, char *, unsigned int, int) (int, char (&)[_Size], int) (int, char *, unsigned int, int)char **_PBuffersize_t *_PBufferSizeInBytesconst char *_VarName (char **, unsigned int *, const char *) (unsigned int *, char (&)[_Size], const char *)rsize_t _DstSize (unsigned int *, char *, unsigned int, const char *)div_tint _Numeratorint _Denominator (int, int)unsigned __int64 _Int64 (unsigned __int64)unsigned long _Longunsigned short _Short (unsigned short)void *_Baseint (*_PtFuncCompare)(const void *, const void *) (void *, unsigned int, unsigned int, int (*)(const void *, const void *))rsize_t _NumOfElementsrsize_t _SizeOfElementsint (*_PtFuncCompare)(void *, const void *, const void *)void *_Context (void *, unsigned int, unsigned int, int (*)(void *, const void *, const void *), void *)const void *_Keyconst void *_Base (const void *, const void *, unsigned int, unsigned int, int (*)(const void *, const void *)) (const void *, const void *, unsigned int, unsigned int, int (*)(void *, const void *, const void *), void *) (__int64)long _X (long)int _Xunsigned int _Flagsunsigned int _Maskint _Codechar (* )[_SizeOfArray]_CountofType (&_Array)[_SizeOfArray] (_CountofType (&)[_SizeOfArray])typename _CountofTypesize_t _SizeOfArrayunsigned int *_Value (unsigned int *)int *_PModewchar_t **_Value (wchar_t **)char **_Value (char **)wchar_t **char **unsigned long *_Value (unsigned long *)unsigned long *_invalid_parameter_handler_invalid_parameter_handler _Handler (void)void (* )(const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t)_purecall_handler_purecall_handler _Handlervoid (* )(void)_locale_t (localeinfo_struct)__unnamed_0005_5unsigned char [12]__unnamed_0005_4long double__unnamed_0005_3float__unnamed_0005_2__unnamed_0005_1unsigned char [10]struct _ldiv_tstruct _div_tint (* )(void)_environ_sys_nerr_sys_errlist(309+40)sizeof(*__countof_helper())_Array(*__sys_nerr())(__sys_errlist())(*__doserrno())0x20x132256260((() < ()) ? () : ())ab((() > ()) ? () : ())__mb_cur_max0x7fff((unsigned char *)(&()->ld))const char *inputFileNameconst char *outputFileNameconst char *vectorNamechar *errorDescription (const char *, const char *, const char *, char *)asn1_retCodeconst char *file_nameASN1_TYPE *definitions (const char *, ASN1_TYPE *, char *)int error (int, char *)const int []const char * []YYSTYPEconst char *yymsgint yytypeYYSTYPE *yyvaluep (const char *, int, YYSTYPE *)const yytype_uint8 []const yytype_int16 []yytype_int16shortsigned charunsigned charchar [MAX_NAME_SIZE+1]node_asn *char *s (char *)const char *char []FILE *295294293292291290289288287286285284283282281280279278277276275274273272271270269268267266265264263262261259258(yyvsp -= (), yyssp -= ())N10000200RuleBottomTopTitleTypeValueLocationArgsyylex ()((void) 0)FileLocdo if (YYID ()) { ().first_line = YYRHSLOC (, 1).first_line; ().first_column = YYRHSLOC (, 1).first_column; ().last_line = YYRHSLOC (, ).last_line; ().last_column = YYRHSLOC (, ).last_column; } else { ().first_line = ().last_line = YYRHSLOC (, 0).last_line; ().first_column = ().last_column = YYRHSLOC (, 0).last_column; } while (YYID (0))CurrentRhs(()[])Kdo if (yychar == YYEMPTY && yylen == 1) { yychar = (); yylval = (); yytoken = YYTRANSLATE (yychar); YYPOPSTACK (1); goto yybackup; } else { yyerror (YY_("syntax error: cannot back up")); YYERROR; } while (YYID (0))Token(!!yyerrstatus)goto yyerrlabgoto yyerrorlabgoto yyabortlabgoto yyacceptlab(-2)(yychar = YYEMPTY)(yyerrstatus = 0)-9-84((unsigned int) () <= YYMAXUTOK ? yytranslate[] : YYUNDEFTOK)YYX189984352do { YYSIZE_T yyi; for (yyi = 0; yyi < (); yyi++) ()[yyi] = ()[yyi]; } while (YYID (0))ToFromCount(() * (sizeof (yytype_int16) + sizeof (YYSTYPE)) + YYSTACK_GAP_MAXIMUM)(sizeof (union yyalloc) - 1)freemallocYYSIZE_MAXIMUMYYFREEYYMALLOC()((void) ())emsgid((YYSIZE_T) -1)_asn1_yynerrs_asn1_yydebug_asn1_yychar_asn1_yylval_asn1_yyerror_asn1_yylex_asn1_yyparse"yacc.c""2.1b"c:\libtasn1\lib\coding.cc:\libtasn1\lib\parser_aux.hASN1_TYPE node (ASN1_TYPE)node_asn *pointerconst char *name (node_asn *, const char *)node_asn *node (node_asn *)long vchar *str (long, char *)unsigned int value (node_asn *, unsigned int)node_asn *down (node_asn *, node_asn *)node_asn *rightconst unsigned char *valueunsigned int len (node_asn *, const unsigned char *, unsigned int)unsigned int typec:\libtasn1\lib\element.hchar *nameint name_size (node_asn *, char *, int)const char *valueunsigned char *value_outint value_out_sizeint *len (const char *, unsigned char *, int, int *)ASN1_TYPE elementvoid *iderchar *ErrorDescription (ASN1_TYPE, const char *, void *, int *, char *)unsigned char *derint der_len (unsigned char *, int, node_asn *)int *counterint *max_len (node_asn *, unsigned char *, int *, int *)const unsigned char *strint bit_lenint *der_len (const unsigned char *, int, unsigned char *, int *)const char []unsigned char *str (unsigned char *, unsigned char *, int *)int str_lenunsigned int tag_valueunsigned char *ansint *ans_len (int, unsigned int, unsigned char *, int *)unsigned long len (unsigned long, unsigned char *, int *) (node_asn *, char *)16c:\libtasn1\lib\decoding.cc:\libtasn1\lib\structure.hnode_asn *rootconst char *source_namenode_asn *source_nodechar *output_file_namechar *vector_name (node_asn *, char *, char *)ASN1_TYPE definitionsASN1_TYPE *elementconst char *octetNameconst char *objectName (ASN1_TYPE, ASN1_TYPE *, const char *, const char *) (ASN1_TYPE, ASN1_TYPE *)const void *iderint lenconst char *name_elementint *startint *end (ASN1_TYPE, const void *, int, const char *, int *, int *)ASN1_TYPE *structureconst char *elementName (ASN1_TYPE *, const char *, const void *, int, char *) (ASN1_TYPE *, const void *, int, char *)const unsigned char *der (const unsigned char *, int *) (const unsigned char *, node_asn *, int *)int *ret_len (node_asn *, const unsigned char *, int, int *)int str_sizeint *bit_len (const unsigned char *, int, int *, unsigned char *, int, int *) (const unsigned char *, int, int *, unsigned char *, int)int *str_lenunsigned char * (const unsigned char *, int, unsigned char *) (const unsigned char *, int, int *)4c:\libtasn1\lib\element.cint *tagValueint *classValue (node_asn *, const char *, int *, int *)ASN1_TYPE rootvoid *ivalue (ASN1_TYPE, const char *, void *, int *)ASN1_TYPE node_rootconst void *ivalue (ASN1_TYPE, const char *, const void *, int)*len = strlen() + 1; if ( < strlen()+(*len)) { return ASN1_MEM_ERROR; } else { strcat(, ); }ptrptr_sizedata*len = strlen() + 1; if ( < *len) { return ASN1_MEM_ERROR; } else { strcpy(, ); }*len = ; if ( < ) { return ASN1_MEM_ERROR; } else { memcpy( , , ); }data_sizec:\libtasn1\lib\errors.cc:\libtasn1\lib\errors.hc:\libtasn1\lib\int.h(1<<30)(1<<29)(1<<28)(1<<27)(1<<26)(1<<24)(1<<23)(1<<22)(1<<21)(1<<20)(1<<19)(1<<18)(1<<17)(1<<16)(1<<15)(1<<14)(1<<13)(1<<12)(1<<11)(1<<10)(1<<9)(1<<8)272120191817151413121110976(&0xFF)1024const char *fmt... (const char *, ...)asn1_retCode error (asn1_retCode)const libtasn1_error_entry []LIBTASN1_ERROR_LOOP( if(p->number == error) { ; break; } )const libtasn1_error_entry *p; for(p = error_algorithms; p->name != NULL; p++) {  ; }{ ,  }namec:\libtasn1\lib\gstr.cchar *destsize_t dest_tot_sizeconst char *src (char *, unsigned int, const char *)c:\libtasn1\lib\parser_aux.cc:\libtasn1\lib\gstr.h_asn1_str_cat(,MAX_ERROR_DESCRIPTION_SIZE,)y_asn1_str_cpy(,MAX_ERROR_DESCRIPTION_SIZE,)const char *req_versionconst char *sint *majorint *minorint *micro (const char *, int *, int *, int *)int *number (const char *, int *)list_type *struct list_structlist_struct *c:\libtasn1\lib\structure.cconst char *oidValue (ASN1_TYPE, const char *)int *num (ASN1_TYPE, const char *, int *)FILE *outASN1_TYPE structureint mode (FILE *, ASN1_TYPE, const char *, int) (ASN1_TYPE, const char *, ASN1_TYPE *)node_asn **node (node_asn **, node_asn *)const char *element_name (ASN1_TYPE *)const ASN1_ARRAY_TYPE *array (const ASN1_ARRAY_TYPE *, ASN1_TYPE *, char *)ASN1_TYPE pointer (ASN1_TYPE, char *, char *)c:\libtasn1\lib\windows\config.hc:\libtasn1\lib\defines.hc:\program files\microsoft visual studio 8\vc\include\string.hconst wchar_t *_Str1const wchar_t *_Str2wchar_t *_Str (wchar_t *)wchar_t _Val (wchar_t *, wchar_t) (wchar_t *, wchar_t, unsigned int) (const wchar_t *, const wchar_t *, unsigned int)const wchar_t *_SubStr (wchar_t *, const wchar_t *)wchar_t _Chconst wchar_t *_Control (const wchar_t *, const wchar_t *, unsigned int, localeinfo_struct) (const wchar_t *, const wchar_t *, localeinfo_struct)wchar_t *_Dst (wchar_t *, const wchar_t *, unsigned int, localeinfo_struct)wchar_t *_String (wchar_t *, localeinfo_struct)wchar_t (&_String)[_Size] (wchar_t (&)[_Size], localeinfo_struct) (wchar_t *, unsigned int, localeinfo_struct) (wchar_t (&)[_Size]) (wchar_t *, unsigned int) (wchar_t *, unsigned int, wchar_t) (wchar_t *, unsigned int, wchar_t, unsigned int)wchar_t (&_Buffer)[_Size]const wchar_t *_ErrorMessage (wchar_t (&)[_Size], const wchar_t *)wchar_t *_Buffer (wchar_t *, unsigned int, const wchar_t *)int _Error (wchar_t (&)[_Size], int)wchar_t *_Bufint _ErrNum (wchar_t *, unsigned int, int)const wchar_t *_Delimwchar_t **_Context (wchar_t *, const wchar_t *, wchar_t **)const wchar_t * (const wchar_t *, wchar_t) (wchar_t (&)[_Size], const wchar_t *, unsigned int)rsize_t _MaxCount (wchar_t *, unsigned int, const wchar_t *, unsigned int) (const wchar_t *, unsigned int) (char *, int) (char *, int, unsigned int)const char *_Str1 (const char *, const char *, unsigned int)const char *_Str2const char *_Srcvoid *_Pvint _Csize_t _N (void *, int, unsigned int)const char *_SubStr (char *, const char *)int _Chconst char *_Control (char *, const char *, unsigned int, localeinfo_struct)char *_String (char *, localeinfo_struct)char (&_String)[_Size] (char (&)[_Size], localeinfo_struct) (char *, unsigned int, localeinfo_struct) (char (&)[_Size]) (char *, unsigned int)const char *_Delimchar **_Context (char *, const char *, char **) (const char *, int) (char *, unsigned int, int, unsigned int) (char (&)[_Size], const char *, unsigned int) (char *, unsigned int, const char *, unsigned int) (const char *, const char *, unsigned int, localeinfo_struct)char (&_Buffer)[_Size]int _ErrorMessage (char (&)[_Size], int)char *_Buf (char *, unsigned int, int)const char *_ErrorMessage (char (&)[_Size], const char *) (const char *, const char *, localeinfo_struct)void *_Dstconst void *_Src (void *, const void *, unsigned int) (void *, unsigned int, const void *, unsigned int)size_t _DstSizeconst void *_Buf1const void *_Buf2 (const void *, const void *, unsigned int) (void *, const void *, int, unsigned int) (const void *, const void *, unsigned int, localeinfo_struct)const void *const void *_Buf (const void *, int, unsigned int)wcsstr_CONST_RETURNc:\program files\microsoft visual studio 8\vc\include\stdio.hc:\program files\microsoft visual studio 8\vc\include\swprintf.inlconst wchar_t *_Format_locale_t _Plocinfova_list _Ap (wchar_t *, const wchar_t *, localeinfo_struct, char) (wchar_t *, const wchar_t *, localeinfo_struct, ...) (wchar_t *, const wchar_t *, char) (wchar_t *, const wchar_t *, ...) (wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, char) (wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (wchar_t *, unsigned int, const wchar_t *, char) (wchar_t *, unsigned int, const wchar_t *, ...)FILE *_File (int, _iobuf *) (_iobuf *)int _FileHandleconst char *_Format (int, const char *)const char *_Directoryconst char *_FilePrefixconst void *_DstBuf (const void *, unsigned int, unsigned int, _iobuf *)__int64 _Offsetint _Origin (_iobuf *, __int64, int)long _Offset (_iobuf *, long, int)void *_DstBufsize_t _ElementSize (void *, unsigned int, unsigned int, unsigned int, _iobuf *) (void *, unsigned int, unsigned int, _iobuf *)wint_twint_t _Ch (unsigned short, _iobuf *) (wchar_t, _iobuf *)const wchar_t *_ModeFILE **_FileFILE *_OldFile (_iobuf **, const wchar_t *, const wchar_t *, _iobuf *) (const wchar_t *, const wchar_t *, _iobuf *) (_iobuf **, const wchar_t *, const wchar_t *) (int, const wchar_t *) (const wchar_t *, localeinfo_struct, ...) (const wchar_t *, ...) (const wchar_t *, unsigned int, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, unsigned int, const wchar_t *, ...) (const wchar_t *, const wchar_t *, localeinfo_struct, ...) (const wchar_t *, const wchar_t *, ...) (_iobuf *, const wchar_t *, localeinfo_struct, ...) (_iobuf *, const wchar_t *, ...)va_list _ArgList (const wchar_t *, localeinfo_struct, char) (const wchar_t *, char)const wchar_t *_Directoryconst wchar_t *_FilePrefixva_list _Args (wchar_t *, unsigned int, unsigned int, const wchar_t *, localeinfo_struct, char) (wchar_t *, unsigned int, unsigned int, const wchar_t *, localeinfo_struct, ...) (_iobuf *, const wchar_t *, localeinfo_struct, char) (_iobuf *, const wchar_t *, char) (wchar_t (&)[_Size], unsigned int, const wchar_t *, char) (wchar_t *, unsigned int, unsigned int, const wchar_t *, char) (wchar_t (&)[_Size], unsigned int, const wchar_t *, ...) (wchar_t *, unsigned int, unsigned int, const wchar_t *, ...) (wchar_t (&)[_Size], const wchar_t *, char) (wchar_t (&)[_Size], const wchar_t *, ...) (const wchar_t *, _iobuf *)int _SizeInWords (wchar_t *, int, _iobuf *)wchar_t _C (wchar_t)int _ShFlag (const wchar_t *, const wchar_t *, int) (char *, unsigned int, unsigned int, const char *, localeinfo_struct, char) (char *, unsigned int, const char *, localeinfo_struct, char) (char *, unsigned int, unsigned int, const char *, localeinfo_struct, ...) (char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, localeinfo_struct, char) (const char *, localeinfo_struct, ...) (char *, const char *, localeinfo_struct, char) (char *, const char *, localeinfo_struct, ...) (_iobuf *, const char *, localeinfo_struct, char) (_iobuf *, const char *, localeinfo_struct, ...) (const char *, char) (char *, unsigned int, const char *, char) (_iobuf *, const char *, char) (char *, unsigned int, const char *, ...) (_iobuf *, const char *, ...) (char *, const char *, char) (char *, const char *, ...) (char (&)[_Size], const char *, char) (char (&)[_Size], unsigned int, const char *, char) (char *, unsigned int, unsigned int, const char *, char)char *_Bufferchar (&_Buf)[_Size]rsize_t _Size (_iobuf **) (const char *, unsigned int, const char *, localeinfo_struct, ...) (const char *, unsigned int, const char *, ...) (const char *, const char *, localeinfo_struct, ...) (const char *, const char *, ...) (char (&)[_Size], const char *, ...) (char (&)[_Size], unsigned int, const char *, ...) (char *, unsigned int, unsigned int, const char *, ...) (_iobuf *, char *, int, unsigned int)unsigned int _Formatint _Max (_iobuf *, char *)const char *_OldFilenameconst char *_NewFilenameint _Wordconst char *_Modeconst void *_Strconst fpos_t *_Pos (_iobuf *, const __int64 *) (_iobuf **, const char *, const char *, _iobuf *) (const char *, const char *, _iobuf *) (const char *, _iobuf *) (_iobuf **, const char *, const char *)const char *_DirNameint _MaxCount (char *, int, _iobuf *)fpos_t *_Pos (_iobuf *, __int64 *) (const char *, const char *, int)struct _iobuf_SYS_OPEN_P_tmpdirc_putwc_nolock((),stdout)_c_getwc_nolock(stdin)_putc_nolock((),stdout)_getc_nolock(stdin)_fputc_nolock(, )_stream_fgetc_nolock()(--()->_cnt >= 0 ? 0xff & (*()->_ptr++ = (char)()) : _flsbuf((),()))(--()->_cnt >= 0 ? 0xff & *()->_ptr++ : _filbuf())_fgetwc_nolock()_stm_fputwc_nolock(,)fputwc(,)fgetwc()_CRT_DEPRECATE_TEXT("swprintf has been changed to conform with the ISO C standard, adding an extra character count parameter. To use traditional Microsoft swprintf, set _CRT_NON_CONFORMING_SWPRINTFS.")(wint_t)(0xFFFF)0x00800x00400x00200x00100x00080x00040x00000x00020x0001(&__iob_func()[2])(&__iob_func()[1])(&__iob_func()[0])((long)())fp(sizeof(_P_tmpdir) + 16)(sizeof(_P_tmpdir) + 12)L"\\""\\"(-1)512_NSTREAM_c:\program files\microsoft visual studio 8\vc\include\ctype.hwint_t _Cwctype_t _Type (unsigned short, unsigned short) (unsigned short, localeinfo_struct) (unsigned short, unsigned short, localeinfo_struct) (int, localeinfo_struct)int _Type (int, int, localeinfo_struct)const wctype_t *const unsigned short []__iscsym__iscsymf__toascii__isascii(_iswalnum_l(, ) || (() == '_'))_p(_iswalpha_l(, ) || (() == '_'))(_isalnum_l(, ) || (() == '_'))(_isalpha_l(, ) || (() == '_'))(iswalnum() || (() == '_'))(iswalpha() || (() == '_'))(isalnum() || (() == '_'))(isalpha() || (() == '_'))( () & 0x7f )_Char( (unsigned)() < 0x80 )( ()-'a'+'A' )( ()-'A'+'a' )_ischartype_l(, _CONTROL, )_Locale_ischartype_l(, _PUNCT|_ALPHA|_DIGIT, )_ischartype_l(, _BLANK|_PUNCT|_ALPHA|_DIGIT, )_ischartype_l(, _ALPHA|_DIGIT, )_ischartype_l(, _PUNCT, )_ischartype_l(, _SPACE, )_ischartype_l(, _HEX, )_ischartype_l(, _DIGIT, )_ischartype_l(, _LOWER, )_ischartype_l(, _UPPER, )_ischartype_l(, _ALPHA, )( (()!=NULL && (((_locale_t)())->locinfo->mb_cur_max) > 1) ? _isctype_l(, (), ) : _chvalidchk_l(,,))_Flag(==NULL ? __chvalidchk(, ) : ((_locale_t))->locinfo->pctype[] & ())(__PCTYPE_FUNC[()] & ())(0x0100|_UPPER|_LOWER)0x80000x800x400x200x100x80x4__pctype_func()c:\libtasn1\lib\libtasn1.hc:\program files\microsoft visual studio 8\vc\include\sys\types.hc:\program files\microsoft visual studio 8\vc\include\time.hc:\program files\microsoft visual studio 8\vc\include\wtime.inlconst time_t *_Time (wchar_t *, unsigned int, const __int64 *) (const __int64 *)c:\program files\microsoft visual studio 8\vc\include\time.inltime_ttime_t *_Time (__int64 *)tm *_Tm (tm *) (tm *, const __int64 *)tm * (char *, unsigned int, const __int64 *)time_t _Time1time_t _Time2 (__int64, __int64)char * [2]const __time64_t *_Time (wchar_t (&)[_Size], const __int64 *)const tm *_Tm (wchar_t *, unsigned int, const wchar_t *, const tm *, localeinfo_struct) (wchar_t *, unsigned int, const wchar_t *, const tm *)const __time32_t *_Time (wchar_t (&)[_Size], const long *) (wchar_t *, unsigned int, const long *) (const long *)const tm *_Time (wchar_t (&)[_Size], const tm *) (wchar_t *, unsigned int, const tm *) (const tm *)unsigned int _MilliSec (tm *, unsigned int)__time64_t *_Time (char (&)[_Size], const __int64 *)__time64_t _Time1__time64_t _Time2__time32_t__time32_t *_Time (long *)size_t _Max_size (char *, unsigned int, const char *, const tm *, localeinfo_struct) (char *, unsigned int, const char *, const tm *) (tm *, const long *)__time32_t _Time1__time32_t _Time2clock_t (char (&)[_Size], const long *) (char *, unsigned int, const long *) (char (&)[_Size], const tm *) (char *, unsigned int, const tm *)size_t *_ReturnValueint _Index (unsigned int *, char *, unsigned int, int)long *_Timezonelong *_Daylight_savings_biasint *_Daylightlong *CLOCKS_PER_SEC(__tzname())(*__timezone())(*__dstbias())(*__daylight())1000 (node_asn_struct, const char *) (node_asn_struct *, const char *, int *, int *) (node_asn_struct, node_asn_struct *, const char *, const char *) (node_asn_struct, node_asn_struct *) (node_asn_struct, const void *, int, const char *, int *, int *) (node_asn_struct *, const char *, const void *, int, char *) (node_asn_struct *, const void *, int, char *) (node_asn_struct, const char *, void *, int *, char *) (node_asn_struct, const char *, int *) (node_asn_struct, const char *, void *, int *) (node_asn_struct, const char *, const void *, int) (node_asn_struct *) (node_asn_struct, const char *, node_asn_struct *) (_iobuf *, node_asn_struct, const char *, int) (const static_struct_asn *, node_asn_struct *, char *) (const char *, node_asn_struct *, char *)struct static_struct_asnstruct node_asn_structnode_asn_struct *NULL0x1B0x050x0A0x060x180x170x030x040x110x020x010xC00x00128"0.3.0"c:\libtasn1\lib\mem.hstrduprealloccalloc_asn1_free_asn1_malloc/O2 /I "../../lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /I "../../lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /DSIZEOF_UNSIGNED_LONG_INT=4 /DSIZEOF_UNSIGNED_INT=4 /D_M_X86 (node_asn_struct) (node_asn_struct *, unsigned int) (node_asn_struct *, node_asn_struct *) (node_asn_struct *, const char *) (node_asn_struct *, const unsigned char *, unsigned int)char [128+1] (FILE *, node_asn_struct, const char *, int) (node_asn_struct **, node_asn_struct *) (node_asn_struct, char *, char *) (node_asn_struct *, char *, int) (unsigned char *, int, node_asn_struct *) (node_asn_struct *, unsigned char *, int *, int *) (node_asn_struct *, char *) (node_asn_struct *, char *, char *) (const unsigned char *, node_asn_struct *, int *) (node_asn_struct *, const unsigned char *, int, int *)FEACP aborted because NCB getEarlyExit() returned truemoccac:\libtasn1\windows\libtasn1.ncbC:\libtasn1\windows\test-tree\test-tree.vcproj/O2 /FD /EHsc /MT /Fo"\\" /Fd"\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/ACWD "c:\libtasn1\windows\test-tree\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\test-tree\c:\libtasn1\tests\test_tree.cc:\libtasn1\tests\test_tree_asn1_tab.cconst ASN1_ARRAY_TYPE []int argcchar *argv[] (int, char *[])test_type []__unnamed_0020_1/O2 /I "..\..\lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86C:\libtasn1\windows\test-parser\test-parser.vcproj/ACWD "c:\libtasn1\windows\test-parser\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\test-parser\c:\libtasn1\tests\test_parser.cint lineNumberchar *lineFILE *file__unnamed_0022_1"Test_parser_ERROR.asn"C:\libtasn1\windows\asn1-parser\asn1-parser.vcproj/ACWD "c:\libtasn1\windows\asn1-parser\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\asn1-parser\c:\libtasn1\src\asn1parser.c/O2 /I "..\..\lib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /DVERSION="0.3.0" /D_M_X86C:\libtasn1\windows\gnulib\gnulib.vcproj/ACWD "c:\libtasn1\windows\gnulib\" -I "C:\Program Files\Microsoft Visual Studio 8\VC\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include" -I "C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include" -I "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include" -AI "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" -AI "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"C:\libtasn1\windows\;c:\libtasn1\windows\gnulib\c:\libtasn1\gl\strdup.hc:\libtasn1\gl\getopt_.hint ___argcchar *const *___argvconst char *__shortoptsconst option *__longoptsint *__longind (int, char *const *, const char *, const option *, int *) (int, char *const *, const char *)(0)majminc:\libtasn1\gl\getopt_int.hchar **___argv_getopt_data *__data (int, char **, const char *, const option *, int *, _getopt_data *)int __long_onlyint __posixly_correct (int, char **, const char *, const option *, int *, int, int, _getopt_data *)_getopt_data::__unnamed_0026_1 (int, char **, const char *, const option *, int *, int, int){ 1, 1 }c:\libtasn1\gl\gettext.hString((const char *) ())DomainnameCodesetDirname((const char *) ())(() == 1 ? (const char *) () : (const char *) ())Msgid1Msgid2Category(() == 1 ? (const char *) () : (const char *) ())Msgidc:\libtasn1\gl\getopt.cchar *const *argvconst char *optstringchar **argvconst option *longoptsint *longindint long_onlyint posixly_correct_getopt_data *d (int, char **, const char *, int, _getopt_data *) (char **, _getopt_data *)_getopt_data(argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')ch1ch2gettext ()c:\libtasn1\gl\getopt1.cconst char *optionsconst option *long_optionsint *opt_indexchar *__getopt_argv_constc:\libtasn1\gl\getopt.h`unused-module'c:\libtasn1\windows\gnulib\getopt.hc:\libtasn1\windows\asn1-parser\config.h/O2 /I "..\..\lib" /I "." /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /I "..\..\lib" /I "." /I "..\gnulib" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86/O2 /I "..\..\lib" /I "." /I "..\gnulib" /I "..\..\gl" /FD /EHsc /MT /Fo"Debug\\" /Fd"Debug\vc80.pdb" /nologo /c /TP /errorReport:prompt /D_M_X86\ °Zz>Ë®ÃEQ ’XÆ”iu]§‚¯³íÄlj©À&Tr0I€Výu .ÏyߌŒüQùÛ°„¼9/É~nao ÃÝrÓ"N*FMõ€c¢ÌUEU,eŒf§Ä´‰£Ò&ò'Pu ¢e!`‡1a¨µjËî(õFHpae’ u ?2)‡³ˆHÒ“ ½zŠ|l›5­E©k,r˜ò_îH”—j",ã‚x]ûÅ€ ÀB'Q.”xñ¨öc’-wTn)²!lf‘\E•u †%ŽÇ–ß•°@0 Qp¤teBpx©Å$ÊSd ]¨•Þz«‰¾ #%#OPŽî&±i* •šRÁ{2i熄¡c{ÄWfWS$ó‚(£3§ý±Ð¸Ç·k¯È*°¶ ­®ÏL0j ­H‘äÆZ‹|ÑÈ­µ¹JævØÜPPÔ(W ;jý¯Œ §ê ö\¹TƒI†¬Õ€Z”BÇYjpB*ÅãJ øgÈ+ë—·!&PM²yZh¡!¨A49*]zhQ¤Á“Åuh¥¡™µï ?R°9oW®'À~¾D‚dnËµÌ Nv†G2IH²ÌeJ„Ÿ€˜¯·°É°Ø½©PÀÿU1%¼løoôopêǽ€§‚a<…ûu,µWÈLeê£D*KƒMlmTŒ•›‡«CÒM}«`°l´l3xbUÈFn‹«¡X·µ‹Éæy½]„×3÷)´Z„m`ÚJ•¡€>)\„–ÇÛ(œfq'_*o[ª¥´Ò%a+wƤ[î¹Àlc†z~òŽäoǃÜoØo˜MÐo¥NÔoàoèoìoðo…ÒtÉ’ z%+(S)GE}j{ÂCqwMŸAFùCŸ¢ô¢k„ú|4¥ø”ªwl«Ê±à¯L¥s>zO9pxίWµÌ†³~´籟²€ ¸>ºÂ8ÀÁ·Þ“ņksdG•Æc¨f?Eln Wƒ#8}kXþdzøi&u¯ƒ2s`—»©ô´«DKoµ¨.0jB«tŽ'ÀŒ@B*[JUO;ƒ¸ª)|j¦ED§1Au ­»Q£dƒ»dÌ_§JFÙ©†¢¤+‘dcû!OªoŸ¥TÈÑKÇ"tÅ’d3†Š o¤o˜oœooŠf”oˆoŒo€o„o©sÝ€Hd2- H¦Šo͈BG"‚c$²bH_s­s5z•Ò•U–mhšø¡x-)”csÊ¥o°šmÆ”Çæ X`«§øÇgÌDv¥Úfop S•|••QÕµ3pÕŒZö±‰P?x‰n_ppÅÔXÜ/ª¯'–_yp2u¶{¬”=£ÌoÈoÄoÀo¼o¸o´o°o¬o¨oáy[¦®zàƒÚ† hVp*„¥:‰tLœÇn²Èk £.o´.Z1ªÄx¢ðtGb¿2SFºH,N!s%‹ÔS¡yiGh Š*ÆÝp§¤~þ‡Y6j„§ß jz•NâªÐµ$ÂßOpµþ~ÆH›÷ÂE¥ …ñmË.S¥Z¥o¥ìM¦’L¥[­ýc=pGGæÅ·+Ü`Y˜¿SórwÄO/' Cl“ˆœ–(/Pl̬â¿ý€µ€z(UMvz$ Zµ“šk(†îwFw’[kCŒÆµTgU«wXmt<)Ñ'¶]¯‘µG±«œ”Œ•_Mœ‚Š@·`¸ú¼·³î“”Ü.ïu^Ê{t2W'pjp¹‡+‚yÕ! ‹oÆg'aÁ5JO>€K•§„…¯¬PŸ²*2¼î•Ûmz§l ¬‚›¨Z¤_W)è¹î¹þïþïF™YYBISONYYBISON_VERSIONYYSKELETON_NAMEYYPUREYYLSP_NEEDEDyyparse_asn1_yyparseyylex_asn1_yylexyyerror_asn1_yyerroryylval_asn1_yylvalyychar_asn1_yycharyydebug_asn1_yydebugyynerrs_asn1_yynerrsYYTOKENTYPEyytokentypeASSIGNUMIDENTIFIEROPTIONALINTEGERSIZEOCTETSTRINGSEQUENCEBITUNIVERSALPRIVATEAPPLICATIONDEFAULTCHOICEOFOBJECTSTR_IDENTIFIERBOOLEANTRUEFALSETOKEN_NULLANYDEFINEDBYSETEXPLICITIMPLICITDEFINITIONSTAGSBEGINENDUTCTimeGeneralizedTimeGeneralStringFROMIMPORTSENUMERATEDint.herrors.hparser_aux.hstructure.hFILEfile_asn1asn1_retCoderesult_parsenode_asnp_treelineNumberlastTokenMAX_NAME_SIZE_asn1_identifierMissingfileNameYYDEBUGYYERROR_VERBOSEYYTOKEN_TABLEYYSTYPEYYSTYPE_IS_DECLAREDconstantstrnodeyystypeYYSTYPE_IS_TRIVIALYYTYPE_UINT8yytype_uint8YYTYPE_INT8yytype_int8__STDC____C99__FUNC____cplusplus_MSC_VERYYTYPE_UINT16yytype_uint16YYTYPE_INT16yytype_int16YYSIZE_T__SIZE_TYPE__size_tc:\program files\microsoft visuatf_IO_flockfileold_flags2_IO_FILE_flags2_IO_FLAGS2_NOTCANCEL__fxprintf_IO_funlockfilePOSIXLY_CORRECTTESTdigit_optindthis_option_optind__unnamed_0028_1optionsopt_indexc:\libtasn1\gl\getopt.hTest_tree_asn1_tab.cgetopt_.hc:\libtasn1\windows\asn1-parser\config.hc:\libtasn1\windows\gnulib\getopt.hc:\libtasn1\gl\getopt_.hP ®m3võEÀ\pd"ße9÷PÆ‚µ9Œ:‡ XOÍ‘…’k¦k5’D_Äî 9MA^ÓjË#P)ä{Þ,h÷Q;K¹¨`;€nBPªÙe¯Pg<7\Ò]Tqx’ð8ãP*\,YßO TBáh±ƒAU…‚vLîhiÏ#v{F·d¤Rye‡×[‘°5¹‰í[Ù—Um ztV>ïSÔs†•ä\†˜®84 =Û•0†WhLdF\}Ê3ômóñ@¢”ÌLÿg^¬zk!DWa€ë]w}*L]ƒ(EÄBÓnz‚ö§cüå`€ |¾èi»ƒ`s["/k+°O p¢W[{Uëg c·Tÿ_ži ŽäŒZ—€QMœgý jp†°Eï>ÜA-™‡âSq2—F±iCˆWtK rn Pûn p½€<Àfˆ[¬9Æ &:þLÚ†l‘o‰û‡rÈ„²3ŠwÉ_1+ù83[þ3¶>I6ëM¤968}K9ž&`H'bÏTâ•-ˆÈ8½g°x{,!$+{‡€ž‡ÉQ‹ –øÉw4áqÝgr­6*P pÌw•d&"Á]—LÔpÓ/Û\›‰f˜MhÕ„#Ië„âAùñd˜b>ŒsCó?ojC5‹•AIŒ1l6˜/~–{qY8vÁ| }0Ä <Å”vŒç\W®>L „¹Z2?´DÔ}âwÙT†@_ð2Gv:s2?æ:yU¸NŒVÖ~|EwlGÍB°S{oRXI&y<Þup ‡—%#fÄ$U7fj™TQ?þNbMD—7Ù’ÂNéoR2>”Ãu4R!ñŽeH‘ëCŽ+¦•÷6Y‡ùUGÞaR^^:ýS-QjÔ"ë“Yòcq·1Gr 4‘0Lèhx-—N òYªd|KòL°]³@)”GksUnqA˜K3žR’÷”–fd`@Nv&9—zøo•ä'C ™0!¦F}•ù$mž@GRÇ\.^‰§s;zc={Á.7´zŠI^ÆAÈ=wq^‰IFIí—‹ V€Ëj#)^æ3rämÍ’i.†[샚fÛx¥è1S‹@a k0CE}æ9G‚,¢drP¦{'YìlÊsEnt»K@<?~Ø3†|€Y*g¿m†ÚP>‡x{Ú5HEŽ¢KaBEHNk-ÿB-‹¥‘Ò*÷D¡rOŒ@óA‚ÏXÐ> 7E:^@ˆD$|D_]YTr ÿª¹ ñ/{hk J8rNC?±‰ ‹æ=ÊfºM4x±já;n :Š5¼]»Y†’r¬ÑR÷TèL\qxŽ4­axz–pÔqætçeC/Tù}|e©‰†³CÎ@ÈDd[ö‡ŽéAf YØ…½‘4 F³Q…ûguHß`p®†š]!Lf–Ÿvd¬I ,TΆ[ÜEc’ÑPÙ9"w†±/Êœ(iMuÓa+¡—Ž8bˆNbsg^¸V›.“boSdCŠ&3ª+î!ji[B„p!‹èƒn’ý=£Bzœ‚-#¡e~'†HÒ‰ð|1i.XXpúOBéYs*B@LK¶ ü@JwM”5üö5>>Ð /-{/`"ƒŽ —T^b¤l`]·a. lIÄ?ÛYæ-Ö#‹~+#oýE {lgc~¬n>lâ|$CWa\wÒvå@h+&—õýd>#¢h16mHúiÐ#~yä8NÛŠŸO¼!`›l¬D¡4P:NÄL+B“üzŽ(òiª'KF;?o,gw‰y¾>Z~…cx„ý-£[r“ŽÕ^o{P>xv6`ÔŸø‰Ò‚Õœ`žÈ{=…8„o6Zv¶r64f%HypxôŠ”†§e~AÃFdÝI3EYJziQ€0Y·6%JÄŽ&P>C¿•×,€}g/Ah+nhOMC€ëhGq·WØ-Æ<E3’«²rêj¸Q¢’äcŒh“‹r«ª\®3pV® ± t\m„µ…ápÒdT+™ZHj8A¹Fr‹d{œZO³B½ XQ¦'8'1|ë?Î1ˆiÒGgeÀ}1rÏeDÚ8Q± D^i•ï…Ï„µHQ5mb‘¨ŽÇNa3ƒ=ÌJZuœEƒ{<¨ £80X=Gðz‹'|RpÎg¨#=r«qrBëlñyÊLEJ^lk¨ø…F÷—à;6a5z\Z1q”">}S"ë°ˆ:gé‚i€ÃŠËVH_i‘G’>ƒU´<’M>3íb+t»=©˜9M@ VTG‡QP\94;›?C# o1F¤y^Q‰CfàKØfŠN×NQ˜ä7‘Îxä†NUàMÃr*49ˆøuŽ :êe[>]F‡!é<ÀSÎI°ëö-WW•…_j¸ŠÒ@'Så6à5µ2Ýek&i É2g‰½%%·¢z¬ývq`t 2‚mo|&Íqêsv…ŒY3Œ{õhÌPQJ\BK“q_7Ã!@ȈYÑ ú^ EƒÏtÜt—š6mD 6êxóë ?N Ìzvå…Û@ÇW25dˆVÏK˜8¨N7WÂcn3ó\èXýh£1á3M)1¥Ñ ìFÄ@”l '¾[ìDC.d§€F:TcÅgÄ5.Df)`ŠŠhŸŒìaNw_‹\­+"Vfl}-T±-Ü“(áM•C(’€A-GO"ch@·s†l‡‘˜ÒTƒÜïkˆgÎSz…be*—0À4q½‚ÑKÄ0’«—y“ DYm:m5%ŸP8L²:U,r¹ yŠ;4¥ ^EæKŒn……©UýTÁzh=Êk€|Ù §~çk­Msw]…7“ÈEâ)Ï xC$r¯pdSd}åJ)dÃMv>TN·Ž$a¬7LNÝ‚do]D5²¼;fA¶.$e.—@O·f·8)>Öê+=Â6e^= ·)bt98yaL¬‰ ,2 Ü"6c£-Ï#zZ$Q]q$#F¿võã]÷3e“jXN5@Š2<„ˆã(I{«giŒÕ“4—Xjm—Øzg~kk¤bj®;RLù;Ãj)WyXóCk3‡< Js‘çF=©-fB1ƒù?‰}5#>CLÍ6i^ŽW‚P²N0xÁ;7hc† ÷Ÿ˜.' A×r<~jöV[ìIé•’‡Û”voK¦A´=q‚»'%€…æç€vŸTf4ŒsSF­uO&Ce2]hE{OK¡S[k޾IIDš–=V%6Ïpfq<—n·úŽÖE¦…¨a‚oï:˜^zwR1:ID“g’_= –\–6ÝN•%‰ꑊH¨‡‡o‡Ød«@ÏoÉ haÍ5–N>v#Pkè€ØzŸaÁ˜wÃqþ€ixGAÃ-[£gÛKmê–ys‡{â?pdWc¡j=Niô7 7zˆ€R¼Lýj\T– B´L7A‘ï|rÚLa-—˜ÁZ› @H(j*WRÆ~<ˆ˜hL1ÄV¿0‹Lu[€þ>=—\‚£6S e\:Î…´!Œƒ”™—€Æ +D>|Âe~T Ig‰ƒiÆ9´u7­R˜#a½pRÆU8=wt€¦DfHbP‘n/U©jë^cL¥†z= ¹t%s%‹Hø\¸÷R^8@–ªGwÔS"j  Qþ.º€š†(O=A/ÂoˆkÄ6 ŠñÔkÁvkYƒG]!˜V#TÂYP½HGî;ç»jØ!ŽN€@EuuT¸@ Š<"M’?o`<a˜¨‚M‹®"ÚDx)pg…2R&lWM4yF+Œ„1M[Œ§osŠmn…äiÓÇß\0pÆ1Þ`N…N0=â<ÿbTÍ?ØOpøÀÖ5br™_¤`.êuëŽÄGKt¬TZP±W'_»rôF:ë‹×wšˆ >©ƒTV. RP~œr¼’ˆ”M–DB#J³|b\¢×F²úK‡Aƒ 8Új¾@³?™Q©ªH=ŽIG@[9l£qeRS{UUGè~P—Y«<‰Où”.pp‡t?u—S]¢¶|w|:(¸k#GO’AqÁ7=P‚o”­[Aµ¿x$ùMGðGÜbØx_“o—>îYaOrEH‡qP·4ry›žHb?$ AiB%‹–è—a‡¼Ã{S#QúA®F£Er‡/Ó—Ñ<åZ9Ò3—cú``r@t Šótœdfì1`v^  uR,kM‰K—b3o.B“ôT6€q÷Nc 5îOnAmÙVr–Bn22—‘X$=±‚¡ƒae( - ÞŸV<µ~ØKhÍ€‘kÖoé!/j.xZl#LrºhpÅn7ÀUg8vA¶v£H –|€æhy$.V3¹)Š ¯€²ŽT8ìPene‚ÿ“zvá&krWÆ»#8†p.Lx`…ßFÜvißcÄO}ÄkÖŽXecf7GÕ>épJou‰?ƒj6ï`ï$³P‘SÓ˜|Ô‹Ê;´nÇ4O_1Ž3DŽtQòN+@¸Gì—ÁKF„éR– ±–ÞWÏ tþ•4w.Aö–P‰}‘™rû€ ]8>RŽ-o›lÒ×],]>kxECZQÎO¤Och( ·‡õašE!ÇO‡œA"R‰hüw+?*$xQ7 2B¨‹zO>±7™;˜5¹AÇp¿<'ÅaÙ< #?k‡H—§Ly?@tKHÃ>lTø!åCra‘@q=‹à˜4ÿsë‡6a§”nˆ MYv$‘£_Ùq½?•–y\L=Fq~¾nái  ™U†6-ahm¿3qv‡ôsN_N:ŠMÃÞd¦R§rUŠ•‘or©“¹Ó;„ó‚lq8–úxIzàs0súHw“JN¤MY¨WÖEÄ|>¹›aYxÏßfü3\…‰÷ †w‹ð-¼o'!äEÉMã"Aw"51O`³g»8Í|]¾Eý\@j`XÅR?6¸—hUÎ&T9°kÄ#ŽNàX1‹b"‡nj\×\úqWiÔ7ÝCNC¶p*‡âðˆÕ€†€5Cb0zWî6ÿ&ÎÒ•Ý> Œd‚V5{ÿˆŽcx19‹¥P™HÁ EVs%<©PqFÝZ ‹«Y‡b¸`jˆ_ ¤ë’äD©>”ECS6^|+„Ô 6°TÀPjmGˆ"TYAZ§| ø’˜vÀ†¤JßÌW™~£@aK2ÛB z+3rufTˆão—?ˉ)l3TZj3¾:Jpm4‚“9K0·ljz/.H9{Pe³„°ñ!Ñm'dÂs:@¹„ËÄH‘e ‡©^Þ ²†Ž•6pe^»O–^'$0_;qs˜]áYKB[n}6¦uÜ<Ÿ3(w_¨€to’€-9šuN+qù<J%X*N¯H‰(Ðu•’¦Tw3 –¶dkùCV.[‘<_ëiáeÏ“ 3Ȭ„¤;ªZw—ä0$]\×6ŸGć™-Áud)qŽ˜PëN32–s׃ßLz9EM¶º(£ná.ñnÄ—çnâŽÈlÈ>OˆÌC?e1u?d®Š_)]ï3ó•Q]MDkÞ±#‘‰ÐDdcDØQ¢pÛt.9iåO†>óŠzÕY‰c„ŒS}jù…\I€EÕh@}²AKƒïw×g¦ˆûfM‰4€«}œk˜ìE0 ¯wK‘vo<ð!K!ÕL¢Nºâ‡EmÅ£wºDãU„r$Ú‡L<ÞG„!Ì4å+ìWþPSY~|>I¬ŠFQ5!ÈGs8*MOØR=€ ?/D¼!ù+µoœ$‹|°håÝJzhJ=ac†çB©Qûp‰‡”iÞR^`žs›C4€ÿ&‚©Í–x T‘ÛlE…Íh–<=bðÚpþ‚wxU_KZÅ N~~v5à „5/€=fÒMQ“®•euŠZî-ÖAÑ :·_L7«=‚Sd8pCé è%@ š[•ŠŽs 3 Æž+ÊTÉŽ¯vÑFiΪpµ:°0àŒ ¹q1]\Ù N«ðòo1çV:šoÃh›XŽ}¢‰Êr9üZj–IiÆ|^Ó9(áõ_õgo\K?F/6Ö˜ó€Q4Ü õ @;&S”M FÜkÜrçvPiv”YEÀbÌ`¨.À6^»h–‡ã Vg’deO1>Œ`}+R*ªV:k´†Ô#¤Z¦ RQä„8futƒž<§vn}üW”H5J} ~‡Û+S&ps‚EqH§5š,zñJó†E—Ü2$h„ÊS*F³Y“‰]¹ƒƒh `‡d¹‘ažF_“d »9EWÜoÏŠ(/ »~‰S0•ÖÃ…A8‹úk|8‚'A|Cs§@ÑçQç‚O5õ3ÍUˆiôTnmITå‰QSÜ *MÀƒÏM!o‚ŒÓV®s¨v”2H!ÊvHeÓYo £,î54«bW’?QS\Z¦iÔ|%u§X•KÀ{zQ†9B†7ht0}ÿ5KOË'“ 4†_ X›€Ž!¿^ÉodÌdokvœY=Þ‘$[!wV@7oÜnÖ_á 6t¶E7rjg_llL;‚hˆYCòƒ‹/ö Ö{/Ì—#T½_›L"{ˆ9cI$îqY!kb…xþ‘l8TI…;î´{ú–JXµw ‘®e®’G;¶‘€Yˆl‡ ù>¡x(nl¡*î,Û#xj%Gg¬W::=9KL!Zr;ÏŒ¼wË-"ájN|6JJ¨†3!}]42NÖ?Š^¾‹âN“}XdXbÑ,ç}.PF$Õb®LÉ•¿CAσ;b­ŽÃt÷S>u¡A‚ŽcXl¯oob„Ï.µJÚN»>% :Q‰vX4ïrEÐ:æ5£_—wY<-e4Ÿ9 ~û³qn ]³ÌÂD Sdž$’ GàVP=!q–Gi?€u–NQ`Æ^†.w<ãgß—vinÿo p9ŒuxJMn]x±Ð˜B|B!OÈn]–Á^z=“ ÷KQ-u „õqhËHâz%7x=~fñvlòptjÎEá<a%@¥q†-ð)¹5ÉFEYu6““oiÌ-Sf.…“‚tsym1ŠÂ“T– .pÛ_`GØM yCG‚zvjedeñjöc÷]×—…j‹B„aOñ„ŒôMáz@.ð9'€DgŠ8Jje)‹ØŒçŠºRt oI-¨ ”.1šD¶aé/@•œHðeWf¼ /names/ncb/targetinfo/ncb/moduleinfo/ncb/modulecommandlines/ncb/iinstdefs/ncb/auxnamemap/ncb/directorywatch/ncb/module/c:\libtasn1\lib\asn1.c/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stddef.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\crtdefs.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\sal.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\vadefs.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stdlib.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\limits.h/ncb/module/c:\libtasn1\lib\coding.c/ncb/module/c:\libtasn1\lib\parser_aux.h/ncb/module/c:\libtasn1\lib\element.h/ncb/module/c:\libtasn1\lib\decoding.c/ncb/module/c:\libtasn1\lib\structure.h/ncb/module/c:\libtasn1\lib\element.c/ncb/module/c:\libtasn1\lib\errors.c/ncb/module/c:\libtasn1\lib\errors.h/ncb/module/c:\libtasn1\lib\int.h/ncb/module/c:\libtasn1\lib\gstr.c/ncb/module/c:\libtasn1\lib\parser_aux.c/ncb/module/c:\libtasn1\lib\gstr.h/ncb/module/c:\libtasn1\lib\structure.c/ncb/module/c:\libtasn1\lib\windows\config.h/ncb/module/c:\libtasn1\lib\defines.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\string.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\stdio.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\swprintf.inl/ncb/module/c:\program files\microsoft visual studio 8\vc\include\ctype.h/ncb/module/c:\libtasn1\lib\libtasn1.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\sys\types.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\time.h/ncb/module/c:\program files\microsoft visual studio 8\vc\include\wtime.inl/ncb/module/c:\program files\microsoft visual studio 8\vc\include\time.inl/ncb/module/c:\libtasn1\lib\mem.h/ncb/targetmap/ncb/filenameimodmap/ncb/moduleinfofreelist/ncb/versioninfo/ncb/module/c:\libtasn1\tests\test_tree.c/ncb/module/c:\libtasn1\tests\test_tree_asn1_tab.c/ncb/module/c:\libtasn1\tests\test_parser.c/ncb/module/c:\libtasn1\src\asn1parser.c/ncb/module/c:\libtasn1\gl\strdup.h/ncb/module/c:\libtasn1\gl\getopt_.h/ncb/module/c:\libtasn1\gl\getopt_int.h/ncb/module/c:\libtasn1\gl\gettext.h/ncb/module/c:\libtasn1\gl\getopt.c/ncb/module/c:\libtasn1\gl\getopt1.c/ncb/module/c:\libtasn1\gl\getopt.h/ncb/module/c:\libtasn1\windows\gnulib\getopt.h/ncb/module/c:\libtasn1\windows\asn1-parser\config.h/ncb/module/`unused-module'9^‘&ýÿ¡®álïÿH,Í£Aà *°0cé&N x$Uò8]- 9ö'k ;n Î7É\4ð”!t83ˆ7'€(z2ã1u.Â%; :¿5r >ß"ª†/^ ©6• )# ?,  <Ì)9+=(Ä žík ¨$xñÐ7м’l0<úTV`î*v% €l>Æ,PÔ4´_Ö !€²*¨¤hÌ Žâà rX¾VB*xyzklmTnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽz{|UVWXYZ[\]^_`abcdefghij¤¥¦§©ª«¬¯±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR°|¼½¾¿ÀÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:@;<=ABCDEFGHIJKL‰>efghijklm‘’“”•–—˜™š›œžŸ ¡¢£¤¥¬­®“”•–—˜™š›œžŸ ¡RSTUVÁÂÃÄÅÆÇÈÉÊË?¨­®SMNOPQXYZ¢£ab`W\]^_cd[noplibtasn1-3.4/windows/asn1-parser/0000775000000000000000000000000012244722064013677 500000000000000libtasn1-3.4/windows/asn1-parser/asn1-parser.vcproj0000775000000000000000000000643712244720630017212 00000000000000 libtasn1-3.4/windows/asn1-parser/config.h0000775000000000000000000000003012244720630015226 00000000000000#define HAVE_GETOPT_H 1 libtasn1-3.4/windows/libtasn1.sln0000775000000000000000000000634412244720630013725 00000000000000 Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtasn1", "libtasn1\libtasn1.vcproj", "{4DE20933-A72B-4261-9B63-0DE9AF31DAB2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-tree", "test-tree\test-tree.vcproj", "{53CDE0B4-BA0D-4911-8730-41B03CDC310A}" ProjectSection(ProjectDependencies) = postProject {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} = {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test-parser", "test-parser\test-parser.vcproj", "{CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}" ProjectSection(ProjectDependencies) = postProject {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} = {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asn1-parser", "asn1-parser\asn1-parser.vcproj", "{3E96D323-99DD-497F-991A-9316C9FFA99A}" ProjectSection(ProjectDependencies) = postProject {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} = {4DE20933-A72B-4261-9B63-0DE9AF31DAB2} {0C4318E2-FFD7-40DC-945C-40016B10665C} = {0C4318E2-FFD7-40DC-945C-40016B10665C} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gnulib", "gnulib\gnulib.vcproj", "{0C4318E2-FFD7-40DC-945C-40016B10665C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Debug|Win32.ActiveCfg = Debug|Win32 {4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Debug|Win32.Build.0 = Debug|Win32 {4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Release|Win32.ActiveCfg = Release|Win32 {4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Release|Win32.Build.0 = Release|Win32 {53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Debug|Win32.ActiveCfg = Debug|Win32 {53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Debug|Win32.Build.0 = Debug|Win32 {53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Release|Win32.ActiveCfg = Release|Win32 {53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Release|Win32.Build.0 = Release|Win32 {CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Debug|Win32.ActiveCfg = Debug|Win32 {CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Debug|Win32.Build.0 = Debug|Win32 {CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Release|Win32.ActiveCfg = Release|Win32 {CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Release|Win32.Build.0 = Release|Win32 {3E96D323-99DD-497F-991A-9316C9FFA99A}.Debug|Win32.ActiveCfg = Debug|Win32 {3E96D323-99DD-497F-991A-9316C9FFA99A}.Debug|Win32.Build.0 = Debug|Win32 {3E96D323-99DD-497F-991A-9316C9FFA99A}.Release|Win32.ActiveCfg = Release|Win32 {3E96D323-99DD-497F-991A-9316C9FFA99A}.Release|Win32.Build.0 = Release|Win32 {0C4318E2-FFD7-40DC-945C-40016B10665C}.Debug|Win32.ActiveCfg = Debug|Win32 {0C4318E2-FFD7-40DC-945C-40016B10665C}.Debug|Win32.Build.0 = Debug|Win32 {0C4318E2-FFD7-40DC-945C-40016B10665C}.Release|Win32.ActiveCfg = Release|Win32 {0C4318E2-FFD7-40DC-945C-40016B10665C}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal libtasn1-3.4/windows/libtasn1/0000775000000000000000000000000012244722064013260 500000000000000libtasn1-3.4/windows/libtasn1/libtasn1.vcproj0000775000000000000000000001032212244720630016140 00000000000000 libtasn1-3.4/windows/libtasn14win.mk0000664000000000000000000000343312244720630014333 00000000000000# Copyright (C) 2011-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . # Written by Simon Josefsson October 2011. PACKAGE = libtasn1 distdir = $(PACKAGE)-$(VERSION) TGZ = $(distdir).tar.gz URL = ftp://ftp.gnu.org/gnu/$(PACKAGE)/$(TGZ) all: @echo 'Usage examples:' @echo ' make -f libtasn14win.mk libtasn14win VERSION=2.10' @echo ' make -f libtasn14win.mk libtasn14win32 VERSION=2.10 CHECK=check' libtasn14win: libtasn14win32 libtasn14win64 libtasn14win32: $(MAKE) -f libtasn14win.mk doit ARCH=32 HOST=i686-w64-mingw32 CHECK=check libtasn14win64: $(MAKE) -f libtasn14win.mk doit ARCH=64 HOST=x86_64-w64-mingw32 doit: rm -rf tmp && mkdir tmp && cd tmp && \ cp ../../$(TGZ) . || wget $(URL) && \ tar xfa $(TGZ) && \ cd $(distdir) && \ ./configure --host=$(HOST) --build=x86_64-unknown-linux-gnu --prefix=$(PWD)/tmp/root && \ make $(CHECK) install && \ cd .. && \ cd root && \ zip -r ../../$(distdir)-win$(ARCH).zip * upload: ../build-aux/gnupload --to ftp.gnu.org:$(PACKAGE) $(distdir)-win32.zip $(distdir)-win64.zip cp $(distdir)-win32.zip $(distdir)-win32.zip.sig $(distdir)-win64.zip $(distdir)-win64.zip.sig ../../releases/$(PACKAGE)/ libtasn1-3.4/windows/test-tree/0000775000000000000000000000000012244722064013457 500000000000000libtasn1-3.4/windows/test-tree/test-tree.vcproj0000775000000000000000000000640012244720630016540 00000000000000 libtasn1-3.4/windows/libtasn1.suo0000775000000000000000000004700012244720630013731 00000000000000ÐÏࡱá>þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿ þÿÿÿ #!"$þÿÿÿ%þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ ñd€Z<Æ@2ProjInfoExÿÿÿÿÿÿÿÿÿÿÿÿTaskListUserTasks$ÿÿÿÿÿÿÿÿVsToolboxService"ÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿ þÿÿÿþÿÿÿHf*þÿÿÿ!"#'pþÿÿÿþÿÿÿ0)þÿÿÿ+,-./312945678=:;<D>?@ABChEFGnIJKLMNOPQRSTUVWXYZ[\]^_`abcde°gþÿÿÿijklmþÿÿÿovqrstuwþÿÿÿ¶yz{|}þÿÿÿ€°ˆÅEQóG¤¹N­›„¥ðC *C:\libtasn1\windows\nC:\Program Files\Microsoft Visual Studio 8\VC\crt\src\|DebuggerWatches ÿÿÿÿÿÿÿÿDebuggerBreakpoints( ÿÿÿÿ6DebuggerExceptions&ÿÿÿÿDebuggerFindSource&ÿÿÿÿÿÿÿÿC:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc\|C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\atl\|C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\DebuggerFindSymbol&ÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿDebuggerMemoryWindows,ÿÿÿÿ ÿÿÿÿTExternalFilesProjectContents: ÿÿÿÿÿÿÿÿþÿÿÿDocumentWindowPositions0 ÿÿÿÿÿÿÿÿ' d‰ ÿÿ\X°[XÈ\XÃÊIÍ«4ïþîÿ.Í«4ïþîÿMultiStartupProj=;4{4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.dwStartupOpt=;StartupProject=&{4DE20933-A72B-4261-9B63-0DE9AF31DAB2};?{4DE20933-A72B-DocumentWindowUserData.ÿÿÿÿÿÿÿÿ¬SolutionConfiguration,ÿÿÿÿÿÿÿÿÿÿÿÿ’ObjMgrContentsV8"ÿÿÿÿ‚ClassViewContents$ÿÿÿÿÿÿÿÿþÿÿÿ4261-9B63-0DE9AF31DAB2}.Release|Win32.fBatchBld=;={4DE20933-A72B-4261-9B63-0DE9AF31DAB2}.Debug|Win32.fBatchBld=;4{53CDE0B4-BA0D-4911-8730-41B03CDC310AS$ ýA+ÁH±ÚªÏ¥WLÉlü #Oÿ‡øÏ¤ELç%Ò¯##G¶åá}'bm4S8fÂþÂL¤d®—ï9LÉlü #Oÿ‡øÏ¤ELç%Ò¯##G¶åá}'bm4ProjExplorerState$ÿÿÿÿ  UnloadedProjects"ÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿHiddenSlnFolders"ÿÿÿÿÿÿÿÿþÿÿÿOutliningStateDir$ÿÿÿÿÿÿÿÿÿÿÿÿ$ŒQ fC:\libtasn1\windows\asn1-parser\asn1-parser.vcprojfC:\libtasn1\windows\asn1-parser\asn1-parser.vcprojHeader FilesS Rc:\libtasn1\windows\asn1-$Bookmarks V001.01XÏ ource FilesRC:\libtasn1\windBookmarkStateÿÿÿÿ%(TaskListShortcuts$ÿÿÿÿÿÿÿÿÿÿÿÿ&XmlPackageOptions$ÿÿÿÿÿÿÿÿ(ROutliningState2 ÿÿÿÿÿÿÿÿx^C:\libtasn1\windows\LIBCMT.lib LIBCMT.lib}.dwStartupOpt=;?{53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Release|Win32.fBatchBld=;={53CDE0B4-BA0D-4911-8730-41B03CDC310A}.Debug|Win32.fBatchBld=;4{CE8F8E2E-E5E9-43F6-A567-CB813B1ows\gnulib\gnulib.vcprojHeader FilesSource FilesZC:\libtasn1\windows\libtasn1\libtas8C58A}.dwStartupOpt=;?{CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Release|Win32.fBatchBld=;={CE8F8E2E-E5E9-43F6-A567-CB813B18C58A}.Debug|Win32.fBatchBld=;4{3E96D323-99DD-497F-991A-93n1.vcprojZC:\libtasn1\windows\libtasn1\libtasn1.vcprojHeader FilesSource FilesfC:\libtasn1\windows\test-parser\te16C9FFA99A}.dwStartupOpt=;?{3E96D323-99DD-497F-991A-9316C9FFA99A}.Release|Win32.fBatchBld=;={3E96D323-99DD-497F-991A-9316C9FFA99A}.Debug|Win32.fBatchBld=;4{0C4318E2-FFD7-40DC-945C-40016B10665C}.dwStartupOpt=st-parser.vcprojfC:\libtasn1\windows\test-parser\test-parser.vcprojSource Files^C:\libtasn1\windows\test-tree\test-trú{0C4318E2-FFD7-40DC-945C-40016B10665C}|gnulib\gnulib.vcproj|c:\libtasn1\gl\getopt_.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}1234‰ ÿÿ\X°[XÈ\X{53CDE0B4-BA0D-4911-8730-41B03CDC310A}|test-tree\test-tree.vcproj|c:\libtasn1\tests\Test_tree.c||{8B382828-6202-11D1-8870-0000F87579D2}123456‰ ÿÿ\X°[XÈ\Xú{0C4318E2-FFD7-40DC-945C-40016B10665C}|gnulib\gnulib.vcproj|c:\libtasn1\gl\getopt1.c||{8B382828-6202-11D1-8870-0000F87579D2}1234‰ ÿÿ\X°[XÈ\Xø{0C4318E2-FFD7-40DC-945C-40016B10665C}|gnulib\gnulib.vcproj|c:\libtasn1\gl\getopt.c||{8B382828-6202-11D1-8870-0000F87579D2}123456‰ ÿÿ\X°[XÈ\X.{3E96D323-99DD-497F-991A-9316C9FFA99A}|asn1-parser\asn1-parser.vcproj|c:\libtasn1\windows\asn1-parser\config.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}‰ ÿÿ\X°[XÈ\X{3E96D323-99DD-497F-991A-9316C9FFA99A}|asn1-parser\asn1-parser.vcproj|c:\libtasn1\src\asn1Parser.c||{8B382828-6202-11D1-8870-0000FÍ«4ïþîÿ`Í«4ïþîÿÍ«4ïþîÿ-2Í«4ïþîÿÍ«4ïþîÿ;?{0C4318E2-FFD7-40DC-945C-40016B10665C}.Release|Win32.fBatchBld=;={0C4318E2-FFD7-40DC-945C-40016B10665C}.Debug|Win32.fBatchBld=; ActiveCfg= Debug|Win32;ee.vcproj^C:\libtasn1\windows\test-tree\test-tree.vcprojSparser\config.h 0c:\libtasn1\gl\getopt.c6c:\libtasn1\lib\libtasn1.h8c:\libtasn1\gl\getopt_int.h0c:\libtasn1\gl\getopt.hHc:\libtasn1\windows\gnulib\getopt.h :c:\libtasn1\src\asnource Files.vcprojSourc1Parser.c2c:\libtasn1\gl\geto6c:\libtasn1\lib\libtasn1.hÔOc"%1&''J)/-0D'FL+NU+Wf8ijrx}‚'„ÜÝ Ýßÿÿÿÿ:c:\libtasn1\src\asn1Parser.cBÙ]"#$'(OutliningState1 ÿÿÿÿÿÿÿÿÿÿÿÿ~OutliningState3  ÿÿÿÿƒ€OutliningState4 ÿÿÿÿÿÿÿÿÿÿÿÿ2OutliningState6 ÿÿÿÿÿÿÿÿÿÿÿÿ¢8‚þÿÿÿ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œþÿÿÿžŸ ¡þÿÿÿ£¤¥¦þÿÿÿ¨©ª«¬­®¯þÿÿÿ±²³´µþÿÿÿ·¸þÿÿÿº»þÿÿÿ½þÿÿÿ¿þÿÿÿÁÂÃÄÅÆÇÈþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2?:;.CNXjMkl-mtwKÎÿÿÿÿQÔÿÿÿÿ0c:\libtasn1\gl\getopt.c9i)ì  #$ '()!+)./231mn qŠ‹Œ C£0¥¸.™æçèí+ï0!#2ë')_w4z0{4~N€…Gˆ7‘™Aš¡2¤´Aµ¹EºÀGÁË#ÌÒ?ßñò)"##%4$5)<>)DGHK)QUVZ)^m)’“(–©/¬)² ´)º¼½¿)Å2ÇÈ2Ê)ÎÜ)ô ö)üþÿ@)@ ) 041)9KLNYCZ]^de)‘“Ÿ& )§º»¾)Îáâ#å 1) (),6@7Ac?'CSTU VWXY;]b d§ÿÿÿÿ2c:\libtasn1\gl\getopt1.c=$‰  "# &'8,15:;?6CHLQ S¬ÿÿÿÿ8c:\libtasn1\gl\getopt_int.hÂz„–"$*<,//47DRTWYZ^Db0gi lm;nÿÿÿÿ0c:\libtasn1\gl\getopt.hyе4OutliningState7 ÿÿÿÿ§ OutliningState11"ÿÿÿÿ¹œOutliningState10"ÿÿÿÿÿÿÿÿÿÿÿÿ¼bOutliningState9 ÿÿÿÿÿÿÿÿÿÿÿÿ¾l5!$6J)KL#MINXY]%^/`abc\dk5os0} ‚‹/ž£C¤  ©Š®²ÈÍÖÙÚ hÚßÿÿÿÿ87579D2}‰ ÿÿ\X°[XÈ\X{0C4318E2-FFD7-40DC-945C-40016B10665C}|gnulib\gnulib.vcproj|c:\libtasn1\windows\gnulib\getopt.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}123456pt1.c2c:\libtasn1\gl\getopt_.h<c:\libtasn1\tests\Test_tree.c <c:\libtasn1\tests\Test_tree.cØJc?@FF’”ÏÿÿÿÿRc:\libtasn1\windows\asn1-parser\config.huà·ÑÿÿÿÿHc:\libtasn1\windows\gnulib\getopt.hýø“uÿÿÿÿOutliningState5 ÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2c:\libtasn1\gl\getopt_.hyе45!$6J)KL#MINXY]%^/`abc\dk5os0} ‚‹/ž£C¤  ©Š®²ÈÍÖÙÚ hÚßÿÿÿÿlibtasn1-3.4/windows/test-parser/0000775000000000000000000000000012244722064014014 500000000000000libtasn1-3.4/windows/test-parser/test-parser.vcproj0000775000000000000000000000620312244720630017433 00000000000000 libtasn1-3.4/AUTHORS0000664000000000000000000000071012244720630011034 00000000000000Original authors: Fabio Fiorina Nikos Mavrogiannopoulos Current maintainer: Simon Josefsson ---------------------------------------------------------------------- Copyright (C) 2002-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. libtasn1-3.4/configure0000775000000000000000000240135512244721747011721 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for GNU Libtasn1 3.4. # # Report bugs to . # # # 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 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || 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 and $0: help-libtasn1@gnu.org about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: 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'" SHELL=${CONFIG_SHELL-/bin/sh} 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='GNU Libtasn1' PACKAGE_TARNAME='libtasn1' PACKAGE_VERSION='3.4' PACKAGE_STRING='GNU Libtasn1 3.4' PACKAGE_BUGREPORT='help-libtasn1@gnu.org' PACKAGE_URL='http://www.gnu.org/software/libtasn1/' # 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_func_list= ac_header_list= gl_getopt_required=POSIX gl_getopt_required=POSIX ac_subst_vars='lgltests_LTLIBOBJS lgltests_LIBOBJS lgl_LTLIBOBJS lgl_LIBOBJS gltests_LTLIBOBJS gltests_LIBOBJS gl_LTLIBOBJS gl_LIBOBJS CONFIG_INCLUDE am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS WARN_CFLAGS WERROR_CFLAGS lgltests_WITNESS NEXT_AS_FIRST_DIRECTIVE_STRING_H NEXT_STRING_H UNDEFINE_STRTOK_R REPLACE_STRTOK_R REPLACE_STRSIGNAL REPLACE_STRNLEN REPLACE_STRNDUP REPLACE_STRNCAT REPLACE_STRERROR_R REPLACE_STRERROR REPLACE_STRCHRNUL REPLACE_STRCASESTR REPLACE_STRSTR REPLACE_STRDUP REPLACE_STPNCPY REPLACE_MEMMEM REPLACE_MEMCHR HAVE_STRVERSCMP HAVE_DECL_STRSIGNAL HAVE_DECL_STRERROR_R HAVE_DECL_STRTOK_R HAVE_STRCASESTR HAVE_STRSEP HAVE_STRPBRK HAVE_DECL_STRNLEN HAVE_DECL_STRNDUP HAVE_DECL_STRDUP HAVE_STRCHRNUL HAVE_STPNCPY HAVE_STPCPY HAVE_RAWMEMCHR HAVE_DECL_MEMRCHR HAVE_MEMPCPY HAVE_DECL_MEMMEM HAVE_MEMCHR HAVE_FFSLL HAVE_FFSL HAVE_MBSLEN GNULIB_STRVERSCMP GNULIB_STRSIGNAL GNULIB_STRERROR_R GNULIB_STRERROR GNULIB_MBSTOK_R GNULIB_MBSSEP GNULIB_MBSSPN GNULIB_MBSPBRK GNULIB_MBSCSPN GNULIB_MBSCASESTR GNULIB_MBSPCASECMP GNULIB_MBSNCASECMP GNULIB_MBSCASECMP GNULIB_MBSSTR GNULIB_MBSRCHR GNULIB_MBSCHR GNULIB_MBSNLEN GNULIB_MBSLEN GNULIB_STRTOK_R GNULIB_STRCASESTR GNULIB_STRSTR GNULIB_STRSEP GNULIB_STRPBRK GNULIB_STRNLEN GNULIB_STRNDUP GNULIB_STRNCAT GNULIB_STRDUP GNULIB_STRCHRNUL GNULIB_STPNCPY GNULIB_STPCPY GNULIB_RAWMEMCHR GNULIB_MEMRCHR GNULIB_MEMPCPY GNULIB_MEMMEM GNULIB_MEMCHR GNULIB_FFSLL GNULIB_FFSL HAVE_VISIBILITY CFLAG_VISIBILITY HAVE_LD_VERSION_SCRIPT_FALSE HAVE_LD_VERSION_SCRIPT_TRUE gltests_WITNESS VALGRIND HAVE_UNISTD_H NEXT_AS_FIRST_DIRECTIVE_UNISTD_H NEXT_UNISTD_H PTHREAD_H_DEFINES_STRUCT_TIMESPEC SYS_TIME_H_DEFINES_STRUCT_TIMESPEC TIME_H_DEFINES_STRUCT_TIMESPEC NEXT_AS_FIRST_DIRECTIVE_TIME_H NEXT_TIME_H REPLACE_TIMEGM REPLACE_NANOSLEEP REPLACE_MKTIME REPLACE_LOCALTIME_R HAVE_TIMEGM HAVE_STRPTIME HAVE_NANOSLEEP HAVE_DECL_LOCALTIME_R GNULIB_TIME_R GNULIB_TIMEGM GNULIB_STRPTIME GNULIB_NANOSLEEP GNULIB_MKTIME NEXT_AS_FIRST_DIRECTIVE_STDLIB_H NEXT_STDLIB_H NEXT_AS_FIRST_DIRECTIVE_STDIO_H NEXT_STDIO_H GL_GENERATE_STDINT_H_FALSE GL_GENERATE_STDINT_H_TRUE STDINT_H WINT_T_SUFFIX WCHAR_T_SUFFIX SIG_ATOMIC_T_SUFFIX SIZE_T_SUFFIX PTRDIFF_T_SUFFIX HAVE_SIGNED_WINT_T HAVE_SIGNED_WCHAR_T HAVE_SIGNED_SIG_ATOMIC_T BITSIZEOF_WINT_T BITSIZEOF_WCHAR_T BITSIZEOF_SIG_ATOMIC_T BITSIZEOF_SIZE_T BITSIZEOF_PTRDIFF_T HAVE_SYS_BITYPES_H HAVE_SYS_INTTYPES_H HAVE_STDINT_H NEXT_AS_FIRST_DIRECTIVE_STDINT_H NEXT_STDINT_H HAVE_SYS_TYPES_H HAVE_INTTYPES_H HAVE_WCHAR_H HAVE_UNSIGNED_LONG_LONG_INT HAVE_LONG_LONG_INT NEXT_AS_FIRST_DIRECTIVE_STDDEF_H NEXT_STDDEF_H GL_GENERATE_STDDEF_H_FALSE GL_GENERATE_STDDEF_H_TRUE STDDEF_H HAVE_WCHAR_T REPLACE_NULL GL_GENERATE_STDARG_H_FALSE GL_GENERATE_STDARG_H_TRUE STDARG_H NEXT_AS_FIRST_DIRECTIVE_STDARG_H NEXT_STDARG_H PMCCABE APPLE_UNIVERSAL_BUILD REPLACE_WCTOMB REPLACE_UNSETENV REPLACE_STRTOD REPLACE_SETENV REPLACE_REALPATH REPLACE_REALLOC REPLACE_RANDOM_R REPLACE_PUTENV REPLACE_PTSNAME_R REPLACE_PTSNAME REPLACE_MKSTEMP REPLACE_MBTOWC REPLACE_MALLOC REPLACE_CANONICALIZE_FILE_NAME REPLACE_CALLOC HAVE_DECL_UNSETENV HAVE_UNLOCKPT HAVE_SYS_LOADAVG_H HAVE_STRUCT_RANDOM_DATA HAVE_STRTOULL HAVE_STRTOLL HAVE_STRTOD HAVE_DECL_SETENV HAVE_SETENV HAVE_SECURE_GETENV HAVE_RPMATCH HAVE_REALPATH HAVE_RANDOM_R HAVE_RANDOM_H HAVE_RANDOM HAVE_PTSNAME_R HAVE_PTSNAME HAVE_POSIX_OPENPT HAVE_MKSTEMPS HAVE_MKSTEMP HAVE_MKOSTEMPS HAVE_MKOSTEMP HAVE_MKDTEMP HAVE_GRANTPT HAVE_GETSUBOPT HAVE_DECL_GETLOADAVG HAVE_CANONICALIZE_FILE_NAME HAVE_ATOLL HAVE__EXIT GNULIB_WCTOMB GNULIB_UNSETENV GNULIB_UNLOCKPT GNULIB_SYSTEM_POSIX GNULIB_STRTOULL GNULIB_STRTOLL GNULIB_STRTOD GNULIB_SETENV GNULIB_SECURE_GETENV GNULIB_RPMATCH GNULIB_REALPATH GNULIB_REALLOC_POSIX GNULIB_RANDOM_R GNULIB_RANDOM GNULIB_PUTENV GNULIB_PTSNAME_R GNULIB_PTSNAME GNULIB_POSIX_OPENPT GNULIB_MKSTEMPS GNULIB_MKSTEMP GNULIB_MKOSTEMPS GNULIB_MKOSTEMP GNULIB_MKDTEMP GNULIB_MBTOWC GNULIB_MALLOC_POSIX GNULIB_GRANTPT GNULIB_GETSUBOPT GNULIB_GETLOADAVG GNULIB_CANONICALIZE_FILE_NAME GNULIB_CALLOC_POSIX GNULIB_ATOLL GNULIB__EXIT HAVE_WINSOCK2_H NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H NEXT_SYS_TIME_H REPLACE_STRUCT_TIMEVAL REPLACE_GETTIMEOFDAY HAVE_SYS_TIME_H HAVE_STRUCT_TIMEVAL HAVE_GETTIMEOFDAY GNULIB_GETTIMEOFDAY LTLIBINTL LIBINTL GNULIB_GL_UNISTD_H_GETOPT GETOPT_H HAVE_GETOPT_H NEXT_AS_FIRST_DIRECTIVE_GETOPT_H NEXT_GETOPT_H WINDOWS_64_BIT_OFF_T NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H NEXT_SYS_TYPES_H REPLACE_VSPRINTF REPLACE_VSNPRINTF REPLACE_VPRINTF REPLACE_VFPRINTF REPLACE_VDPRINTF REPLACE_VASPRINTF REPLACE_TMPFILE REPLACE_STDIO_WRITE_FUNCS REPLACE_STDIO_READ_FUNCS REPLACE_SPRINTF REPLACE_SNPRINTF REPLACE_RENAMEAT REPLACE_RENAME REPLACE_REMOVE REPLACE_PRINTF REPLACE_POPEN REPLACE_PERROR REPLACE_OBSTACK_PRINTF REPLACE_GETLINE REPLACE_GETDELIM REPLACE_FTELLO REPLACE_FTELL REPLACE_FSEEKO REPLACE_FSEEK REPLACE_FREOPEN REPLACE_FPURGE REPLACE_FPRINTF REPLACE_FOPEN REPLACE_FFLUSH REPLACE_FDOPEN REPLACE_FCLOSE REPLACE_DPRINTF HAVE_VDPRINTF HAVE_VASPRINTF HAVE_RENAMEAT HAVE_POPEN HAVE_PCLOSE HAVE_FTELLO HAVE_FSEEKO HAVE_DPRINTF HAVE_DECL_VSNPRINTF HAVE_DECL_SNPRINTF HAVE_DECL_OBSTACK_PRINTF HAVE_DECL_GETLINE HAVE_DECL_GETDELIM HAVE_DECL_FTELLO HAVE_DECL_FSEEKO HAVE_DECL_FPURGE GNULIB_VSPRINTF_POSIX GNULIB_VSNPRINTF GNULIB_VPRINTF_POSIX GNULIB_VPRINTF GNULIB_VFPRINTF_POSIX GNULIB_VFPRINTF GNULIB_VDPRINTF GNULIB_VSCANF GNULIB_VFSCANF GNULIB_VASPRINTF GNULIB_TMPFILE GNULIB_STDIO_H_SIGPIPE GNULIB_STDIO_H_NONBLOCKING GNULIB_SPRINTF_POSIX GNULIB_SNPRINTF GNULIB_SCANF GNULIB_RENAMEAT GNULIB_RENAME GNULIB_REMOVE GNULIB_PUTS GNULIB_PUTCHAR GNULIB_PUTC GNULIB_PRINTF_POSIX GNULIB_PRINTF GNULIB_POPEN GNULIB_PERROR GNULIB_PCLOSE GNULIB_OBSTACK_PRINTF_POSIX GNULIB_OBSTACK_PRINTF GNULIB_GETLINE GNULIB_GETDELIM GNULIB_GETCHAR GNULIB_GETC GNULIB_FWRITE GNULIB_FTELLO GNULIB_FTELL GNULIB_FSEEKO GNULIB_FSEEK GNULIB_FSCANF GNULIB_FREOPEN GNULIB_FREAD GNULIB_FPUTS GNULIB_FPUTC GNULIB_FPURGE GNULIB_FPRINTF_POSIX GNULIB_FPRINTF GNULIB_FOPEN GNULIB_FGETS GNULIB_FGETC GNULIB_FFLUSH GNULIB_FDOPEN GNULIB_FCLOSE GNULIB_DPRINTF WINDOWS_64_BIT_ST_SIZE NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H NEXT_SYS_STAT_H HAVE_MSVC_INVALID_PARAMETER_HANDLER REPLACE_UTIMENSAT REPLACE_STAT REPLACE_MKNOD REPLACE_MKFIFO REPLACE_MKDIR REPLACE_LSTAT REPLACE_FUTIMENS REPLACE_FSTATAT REPLACE_FSTAT HAVE_UTIMENSAT HAVE_MKNODAT HAVE_MKNOD HAVE_MKFIFOAT HAVE_MKFIFO HAVE_MKDIRAT HAVE_LSTAT HAVE_LCHMOD HAVE_FUTIMENS HAVE_FSTATAT HAVE_FCHMODAT GNULIB_UTIMENSAT GNULIB_STAT GNULIB_MKNODAT GNULIB_MKNOD GNULIB_MKFIFOAT GNULIB_MKFIFO GNULIB_MKDIRAT GNULIB_LSTAT GNULIB_LCHMOD GNULIB_FUTIMENS GNULIB_FSTATAT GNULIB_FSTAT GNULIB_FCHMODAT UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS UNISTD_H_HAVE_WINSOCK2_H REPLACE_WRITE REPLACE_USLEEP REPLACE_UNLINKAT REPLACE_UNLINK REPLACE_TTYNAME_R REPLACE_SYMLINK REPLACE_SLEEP REPLACE_RMDIR REPLACE_READLINK REPLACE_READ REPLACE_PWRITE REPLACE_PREAD REPLACE_LSEEK REPLACE_LINKAT REPLACE_LINK REPLACE_LCHOWN REPLACE_ISATTY REPLACE_GETPAGESIZE REPLACE_GETGROUPS REPLACE_GETLOGIN_R REPLACE_GETDOMAINNAME REPLACE_GETCWD REPLACE_FTRUNCATE REPLACE_FCHOWNAT REPLACE_DUP2 REPLACE_DUP REPLACE_CLOSE REPLACE_CHOWN HAVE_SYS_PARAM_H HAVE_OS_H HAVE_DECL_TTYNAME_R HAVE_DECL_SETHOSTNAME HAVE_DECL_GETUSERSHELL HAVE_DECL_GETPAGESIZE HAVE_DECL_GETLOGIN_R HAVE_DECL_GETDOMAINNAME HAVE_DECL_FDATASYNC HAVE_DECL_FCHDIR HAVE_DECL_ENVIRON HAVE_USLEEP HAVE_UNLINKAT HAVE_SYMLINKAT HAVE_SYMLINK HAVE_SLEEP HAVE_SETHOSTNAME HAVE_READLINKAT HAVE_READLINK HAVE_PWRITE HAVE_PREAD HAVE_PIPE2 HAVE_PIPE HAVE_LINKAT HAVE_LINK HAVE_LCHOWN HAVE_GROUP_MEMBER HAVE_GETPAGESIZE HAVE_GETLOGIN HAVE_GETHOSTNAME HAVE_GETGROUPS HAVE_GETDTABLESIZE HAVE_FTRUNCATE HAVE_FSYNC HAVE_FDATASYNC HAVE_FCHOWNAT HAVE_FCHDIR HAVE_FACCESSAT HAVE_EUIDACCESS HAVE_DUP3 HAVE_DUP2 HAVE_CHOWN GNULIB_WRITE GNULIB_USLEEP GNULIB_UNLINKAT GNULIB_UNLINK GNULIB_UNISTD_H_SIGPIPE GNULIB_UNISTD_H_NONBLOCKING GNULIB_TTYNAME_R GNULIB_SYMLINKAT GNULIB_SYMLINK GNULIB_SLEEP GNULIB_SETHOSTNAME GNULIB_RMDIR GNULIB_READLINKAT GNULIB_READLINK GNULIB_READ GNULIB_PWRITE GNULIB_PREAD GNULIB_PIPE2 GNULIB_PIPE GNULIB_LSEEK GNULIB_LINKAT GNULIB_LINK GNULIB_LCHOWN GNULIB_ISATTY GNULIB_GROUP_MEMBER GNULIB_GETUSERSHELL GNULIB_GETPAGESIZE GNULIB_GETLOGIN_R GNULIB_GETLOGIN GNULIB_GETHOSTNAME GNULIB_GETGROUPS GNULIB_GETDTABLESIZE GNULIB_GETDOMAINNAME GNULIB_GETCWD GNULIB_FTRUNCATE GNULIB_FSYNC GNULIB_FDATASYNC GNULIB_FCHOWNAT GNULIB_FCHDIR GNULIB_FACCESSAT GNULIB_EUIDACCESS GNULIB_ENVIRON GNULIB_DUP3 GNULIB_DUP2 GNULIB_DUP GNULIB_CLOSE GNULIB_CHOWN GNULIB_CHDIR EOVERFLOW_VALUE EOVERFLOW_HIDDEN ENOLINK_VALUE ENOLINK_HIDDEN EMULTIHOP_VALUE EMULTIHOP_HIDDEN GL_GENERATE_ERRNO_H_FALSE GL_GENERATE_ERRNO_H_TRUE ERRNO_H NEXT_AS_FIRST_DIRECTIVE_ERRNO_H NEXT_ERRNO_H PRAGMA_COLUMNS PRAGMA_SYSTEM_HEADER INCLUDE_NEXT_AS_FIRST_DIRECTIVE INCLUDE_NEXT LIB_CLOCK_GETTIME GL_COND_LIBTOOL_FALSE GL_COND_LIBTOOL_TRUE GTK_DOC_USE_REBASE_FALSE GTK_DOC_USE_REBASE_TRUE GTK_DOC_USE_LIBTOOL_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_BUILD_PDF_FALSE GTK_DOC_BUILD_PDF_TRUE GTK_DOC_BUILD_HTML_FALSE GTK_DOC_BUILD_HTML_TRUE ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE HTML_DIR GTKDOC_MKPDF GTKDOC_REBASE GTKDOC_CHECK PKG_CONFIG OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED LIBTOOL ac_ct_AR OBJDUMP DLLTOOL AS HELP2MAN YFLAGS YACC host_os host_vendor host_cpu host build_os build_vendor build_cpu build RANLIB ARFLAGS AR EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC LT_AGE LT_REVISION LT_CURRENT 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 localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_largefile enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock with_html_dir enable_gtk_doc enable_gtk_doc_html enable_gtk_doc_pdf enable_valgrind_tests with_packager with_packager_version with_packager_bug_reports enable_ld_version_script enable_gcc_warnings ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP YACC YFLAGS PKG_CONFIG' # 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' 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 ;; -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 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 GNU Libtasn1 3.4 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] --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/libtasn1] --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 System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of GNU Libtasn1 3.4:";; 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-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-largefile omit support for large files --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-gtk-doc use gtk-doc to build documentation [[default=no]] --enable-gtk-doc-html build documentation in html format [[default=yes]] --enable-gtk-doc-pdf build documentation in pdf format [[default=no]] --enable-valgrind-tests run self tests under valgrind --enable-ld-version-script enable linker version script (default is enabled when possible) --enable-gcc-warnings turn on lots of GCC warnings (for developers) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-html-dir=PATH path to installed docs --with-packager String identifying the packager of this software --with-packager-version Packager-specific version information --with-packager-bug-reports Packager info for bug reports (URL/e-mail/...) 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 CPP C preprocessor 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. PKG_CONFIG path to pkg-config utility 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 . GNU Libtasn1 home page: . General help using GNU software: . _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 GNU Libtasn1 configure 3.4 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_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_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;} ( $as_echo "## ------------------------------------ ## ## Report this to help-libtasn1@gnu.org ## ## ------------------------------------ ##" ) | sed "s/^/$as_me: WARNING: /" >&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_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_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_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_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 # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &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_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _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_decl 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 GNU Libtasn1 $as_me 3.4, 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 as_fn_append ac_func_list " _set_invalid_parameter_handler" as_fn_append ac_header_list " sys/stat.h" gl_getopt_required=GNU as_fn_append ac_header_list " getopt.h" as_fn_append ac_func_list " gettimeofday" as_fn_append ac_func_list " nanotime" as_fn_append ac_header_list " sys/time.h" as_fn_append ac_header_list " sys/socket.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_header_list " wchar.h" as_fn_append ac_header_list " stdint.h" # 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 build-aux "$srcdir"/build-aux; 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 build-aux \"$srcdir\"/build-aux" "$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. ac_config_headers="$ac_config_headers config.h" am__api_version='1.13' # 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}" != 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='libtasn1' VERSION='3.4' 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. 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 -' # 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=0;; 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='\' # Library code modified: REVISION++ # Interfaces changed/added/removed: CURRENT++ REVISION=0 # Interfaces added: AGE++ # Interfaces removed: AGE=0 LT_CURRENT=8 LT_REVISION=0 LT_AGE=2 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 DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # 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 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 Minix Amsterdam compiler" >&5 $as_echo_n "checking for Minix Amsterdam compiler... " >&6; } if ${gl_cv_c_amsterdam_compiler+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __ACK__ Amsterdam #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "Amsterdam" >/dev/null 2>&1; then : gl_cv_c_amsterdam_compiler=yes else gl_cv_c_amsterdam_compiler=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5 $as_echo "$gl_cv_c_amsterdam_compiler" >&6; } if test -z "$AR"; then if test $gl_cv_c_amsterdam_compiler = yes; then AR='cc -c.a' if test -z "$ARFLAGS"; then ARFLAGS='-o' fi else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; 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_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" $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 AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; 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_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_AR="ar" $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_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="ar" 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 AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi else if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi if test -z "$RANLIB"; then if test $gl_cv_c_amsterdam_compiler = yes; then RANLIB=':' else if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; 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_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib" $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 RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; 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_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_RANLIB="ranlib" $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_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" 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 RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi fi fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $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 ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" if test "x$ac_cv_header_minix_config_h" = xyes; then : MINIX=yes else MINIX= fi if test "$MINIX" = yes; then $as_echo "#define _POSIX_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h $as_echo "#define _MINIX 1" >>confdefs.h $as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } if ${ac_cv_safe_to_define___extensions__+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h $as_echo "#define _ALL_SOURCE 1" >>confdefs.h $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 $as_echo_n "checking whether _XOPEN_SOURCE should be defined... " >&6; } if ${ac_cv_should_define__xopen_source+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_should_define__xopen_source=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include mbstate_t x; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE 500 #include mbstate_t x; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_should_define__xopen_source=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 $as_echo "$ac_cv_should_define__xopen_source" >&6; } test $ac_cv_should_define__xopen_source = yes && $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } if ${ac_cv_sys_largefile_source+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=no; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGEFILE_SOURCE 1 #include /* for off_t */ #include int main () { int (*fp) (FILE *, off_t, int) = fseeko; return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_sys_largefile_source=1; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_cv_sys_largefile_source=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 $as_echo "$ac_cv_sys_largefile_source" >&6; } case $ac_cv_sys_largefile_source in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source _ACEOF ;; esac rm -rf conftest* # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug # in glibc 2.1.3, but that breaks too many other things. # If you want fseeko and ftello with glibc, upgrade to a fixed glibc. if test $ac_cv_sys_largefile_source != unknown; then $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi $as_echo "#define _DARWIN_USE_64_BIT_INODE 1" >>confdefs.h fi case $ac_cv_prog_cc_stdc in #( no) : ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } if ${ac_cv_prog_cc_c99+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include // Check varargs macros. These examples are taken from C99 6.10.3.5. #define debug(...) fprintf (stderr, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK your preprocessor is broken; #endif #if BIG_OK #else your preprocessor is broken; #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\0'; ++i) continue; return 0; } // Check varargs and va_copy. static void test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str; int number; float fnumber; while (*format) { switch (*format++) { case 's': // string str = va_arg (args_copy, const char *); break; case 'd': // int number = va_arg (args_copy, int); break; case 'f': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); } int main () { // Check bool. _Bool success = false; // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. test_varargs ("s, d' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' || dynamic_array[ni.number - 1] != 543); ; return 0; } _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" 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_c99" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac if test "x$ac_cv_prog_cc_c99" != xno; then : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 else { $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 : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 else ac_cv_prog_cc_stdc=no fi fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 $as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } if ${ac_cv_prog_cc_stdc+:} false; then : $as_echo_n "(cached) " >&6 fi case $ac_cv_prog_cc_stdc in #( no) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; #( '') : { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 $as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; esac # Code from module autobuild: if test -z "$AB_PACKAGE"; then AB_PACKAGE=${PACKAGE_NAME:-$PACKAGE} fi { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild project... $AB_PACKAGE" >&5 $as_echo "$as_me: autobuild project... $AB_PACKAGE" >&6;} if test -z "$AB_VERSION"; then AB_VERSION=${PACKAGE_VERSION:-$VERSION} fi { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild revision... $AB_VERSION" >&5 $as_echo "$as_me: autobuild revision... $AB_VERSION" >&6;} hostname=`hostname` if test "$hostname"; then { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild hostname... $hostname" >&5 $as_echo "$as_me: autobuild hostname... $hostname" >&6;} fi date=`TZ=UTC0 date +%Y%m%dT%H%M%SZ` if test "$?" != 0; then date=`date` fi if test "$date"; then { $as_echo "$as_me:${as_lineno-$LINENO}: autobuild timestamp... $date" >&5 $as_echo "$as_me: autobuild timestamp... $date" >&6;} fi # Code from module clock-time: # Code from module errno: # Code from module extensions: # Code from module extern-inline: # Code from module fdl-1.3: # Code from module fstat: # Code from module ftell: # Code from module ftello: # Code from module gendocs: # Code from module getopt-gnu: # Code from module getopt-posix: # Code from module gettext-h: # Code from module gettime: # Code from module gettimeofday: # Code from module gnumakefile: # Code from module gnupload: # Code from module include_next: # Code from module largefile: # Code from module lseek: # Code from module maintainer-makefile: # Code from module malloc-posix: # Code from module manywarnings: # Code from module msvc-inval: # Code from module msvc-nothrow: # Code from module multiarch: # Code from module nocrash: # Code from module pmccabe2html: # Code from module progname: # Code from module read-file: # Code from module realloc-posix: # Code from module snippet/_Noreturn: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module ssize_t: # Code from module stdarg: # Code from module stddef: # Code from module stdint: # Code from module stdio: # Code from module stdlib: # Code from module sys_stat: # Code from module sys_time: # Code from module sys_types: # Code from module time: # Code from module timespec: # Code from module unistd: # Code from module update-copyright: # Code from module useless-if-before-free: # Code from module valgrind-tests: # Code from module vc-list-files: # Code from module version-etc: # Code from module version-etc-fsf: # Code from module warnings: # Code from module extensions: # Code from module hash-pjw-bare: # Code from module include_next: # Code from module intprops: # Code from module lib-symbol-versions: # Code from module lib-symbol-visibility: # Code from module multiarch: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module stddef: # Code from module stdint: # Code from module string: # Code from module strverscmp: 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" HELP2MAN=${HELP2MAN-"${am_missing_run}help2man"} enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; 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_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # 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_AS="${ac_tool_prefix}as" $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 AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; 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_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # 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_AS="as" $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_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" 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 AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; 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_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_DLLTOOL="${ac_tool_prefix}dlltool" $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 DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; 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_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_DLLTOOL="dlltool" $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_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" 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 DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_OBJDUMP="${ac_tool_prefix}objdump" $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 OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; 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_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_OBJDUMP="objdump" $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_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" 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 OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" 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_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # 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_AR="$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 AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar lib "link -lib" 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_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_AR="$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_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" 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 AR=$ac_ct_AR fi fi : ${AR=ar} { $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 $as_echo_n "checking the archiver ($AR) interface... " >&6; } if ${am_cv_ar_interface+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_ar_interface=ar cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int some_variable = 0; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 $as_echo "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # 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__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) as_fn_error $? "could not determine $AR interface" "$LINENO" 5 ;; esac case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $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 '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_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 fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_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 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "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_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_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_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" 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_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # 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_DUMPBIN="$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 DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" 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_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # 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_DUMPBIN="$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_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" 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 DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_OBJDUMP="${ac_tool_prefix}objdump" $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 OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; 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_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_OBJDUMP="objdump" $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_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" 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 OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; 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_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_DLLTOOL="${ac_tool_prefix}dlltool" $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 DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; 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_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_DLLTOOL="dlltool" $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_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" 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 DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar 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_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # 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_AR="$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 AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar 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_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_AR="$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_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" 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 AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi 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 test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; 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_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib" $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 RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; 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_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_RANLIB="ranlib" $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_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" 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 RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; powerpcle-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else 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 cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext 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 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; 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_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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_MANIFEST_TOOL="${ac_tool_prefix}mt" $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 MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; 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_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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_MANIFEST_TOOL="mt" $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_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" 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 MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; 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_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_DSYMUTIL="${ac_tool_prefix}dsymutil" $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 DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; 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_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # 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_DSYMUTIL="dsymutil" $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_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" 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 DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; 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_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # 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_NMEDIT="${ac_tool_prefix}nmedit" $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 NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; 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_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # 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_NMEDIT="nmedit" $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_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" 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 NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; 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_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # 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_LIPO="${ac_tool_prefix}lipo" $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 LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; 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_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # 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_LIPO="lipo" $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_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" 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 LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; 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_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # 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_OTOOL="${ac_tool_prefix}otool" $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 OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; 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_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # 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_OTOOL="otool" $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_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" 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 OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; 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_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # 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_OTOOL64="${ac_tool_prefix}otool64" $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 OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; 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_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # 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_OTOOL64="otool64" $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_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" 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 OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_dlopen=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" 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 # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* 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 dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* 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 shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* 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 dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* 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 dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* 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 dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } 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 CC="$lt_save_CC" ac_config_commands="$ac_config_commands libtool" # Only expand once: if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; 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_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="$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 ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; 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_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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_ac_pt_PKG_CONFIG="$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 ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" 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 PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; 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_GTKDOC_CHECK+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_CHECK in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # 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_GTKDOC_CHECK="$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 ;; esac fi GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK if test -n "$GTKDOC_CHECK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 $as_echo "$GTKDOC_CHECK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi for ac_prog in gtkdoc-rebase 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_path_GTKDOC_REBASE+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_REBASE in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # 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_GTKDOC_REBASE="$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 ;; esac fi GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE if test -n "$GTKDOC_REBASE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 $as_echo "$GTKDOC_REBASE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$GTKDOC_REBASE" && break done test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. set dummy gtkdoc-mkpdf; 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_GTKDOC_MKPDF+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_MKPDF in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # 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_GTKDOC_MKPDF="$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 ;; esac fi GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF if test -n "$GTKDOC_MKPDF"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 $as_echo "$GTKDOC_MKPDF" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then : withval=$with_html_dir; else with_html_dir='${datadir}/gtk-doc/html' fi HTML_DIR="$with_html_dir" # Check whether --enable-gtk-doc was given. if test "${enable_gtk_doc+set}" = set; then : enableval=$enable_gtk_doc; else enable_gtk_doc=no fi if test x$enable_gtk_doc = xyes; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : else as_fn_error $? "You need to have gtk-doc >= 1.2 installed to build $PACKAGE_NAME" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 $as_echo_n "checking whether to build gtk-doc documentation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 $as_echo "$enable_gtk_doc" >&6; } # Check whether --enable-gtk-doc-html was given. if test "${enable_gtk_doc_html+set}" = set; then : enableval=$enable_gtk_doc_html; else enable_gtk_doc_html=yes fi # Check whether --enable-gtk-doc-pdf was given. if test "${enable_gtk_doc_pdf+set}" = set; then : enableval=$enable_gtk_doc_pdf; else enable_gtk_doc_pdf=no fi if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test x$enable_gtk_doc = xyes; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc_html = xyes; then GTK_DOC_BUILD_HTML_TRUE= GTK_DOC_BUILD_HTML_FALSE='#' else GTK_DOC_BUILD_HTML_TRUE='#' GTK_DOC_BUILD_HTML_FALSE= fi if test x$enable_gtk_doc_pdf = xyes; then GTK_DOC_BUILD_PDF_TRUE= GTK_DOC_BUILD_PDF_FALSE='#' else GTK_DOC_BUILD_PDF_TRUE='#' GTK_DOC_BUILD_PDF_FALSE= fi if test -n "$LIBTOOL"; then GTK_DOC_USE_LIBTOOL_TRUE= GTK_DOC_USE_LIBTOOL_FALSE='#' else GTK_DOC_USE_LIBTOOL_TRUE='#' GTK_DOC_USE_LIBTOOL_FALSE= fi if test -n "$GTKDOC_REBASE"; then GTK_DOC_USE_REBASE_TRUE= GTK_DOC_USE_REBASE_FALSE='#' else GTK_DOC_USE_REBASE_TRUE='#' GTK_DOC_USE_REBASE_FALSE= fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long int" >&5 $as_echo_n "checking size of unsigned long int... " >&6; } if ${ac_cv_sizeof_unsigned_long_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long int))" "ac_cv_sizeof_unsigned_long_int" "$ac_includes_default"; then : else if test "$ac_cv_type_unsigned_long_int" = yes; 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 77 "cannot compute sizeof (unsigned long int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_unsigned_long_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long_int" >&5 $as_echo "$ac_cv_sizeof_unsigned_long_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_UNSIGNED_LONG_INT $ac_cv_sizeof_unsigned_long_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5 $as_echo_n "checking size of unsigned int... " >&6; } if ${ac_cv_sizeof_unsigned_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default"; then : else if test "$ac_cv_type_unsigned_int" = yes; 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 77 "cannot compute sizeof (unsigned int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_unsigned_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5 $as_echo "$ac_cv_sizeof_unsigned_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int _ACEOF # Update version number in lib/libtasn1.h. if ! sed 's/_VERSION ".*"/_VERSION "'$PACKAGE_VERSION'"/' $srcdir/lib/libtasn1.h > fixhdr.tmp; then as_fn_error $? "*** Failed to update version number in $srcdir/lib/libtasn1.h..." "$LINENO" 5 fi if cmp -s $srcdir/lib/libtasn1.h fixhdr.tmp 2>/dev/null; then rm -f fixhdr.tmp elif ! mv fixhdr.tmp $srcdir/lib/libtasn1.h; then as_fn_error $? "*** Failed to move fixhdr.tmp to $srcdir/lib/libtasn1.h..." "$LINENO" 5 fi # For gnulib compatibility modules. LIBC_FATAL_STDERR_=1 export LIBC_FATAL_STDERR_ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5 $as_echo_n "checking whether the preprocessor supports include_next... " >&6; } if ${gl_cv_have_include_next+:} false; then : $as_echo_n "(cached) " >&6 else rm -rf conftestd1a conftestd1b conftestd2 mkdir conftestd1a conftestd1b conftestd2 cat < conftestd1a/conftest.h #define DEFINED_IN_CONFTESTD1 #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd1b/conftest.h #define DEFINED_IN_CONFTESTD1 #include #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd2/conftest.h #ifndef DEFINED_IN_CONFTESTD1 #error "include_next test doesn't work" #endif #define DEFINED_IN_CONFTESTD2 EOF gl_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_have_include_next=yes else CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_have_include_next=buggy else gl_cv_have_include_next=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CPPFLAGS="$gl_save_CPPFLAGS" rm -rf conftestd1a conftestd1b conftestd2 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5 $as_echo "$gl_cv_have_include_next" >&6; } PRAGMA_SYSTEM_HEADER= if test $gl_cv_have_include_next = yes; then INCLUDE_NEXT=include_next INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next if test -n "$GCC"; then PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' fi else if test $gl_cv_have_include_next = buggy; then INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next else INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5 $as_echo_n "checking whether system header files limit the line length... " >&6; } if ${gl_cv_pragma_columns+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __TANDEM choke me #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "choke me" >/dev/null 2>&1; then : gl_cv_pragma_columns=yes else gl_cv_pragma_columns=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pragma_columns" >&5 $as_echo "$gl_cv_pragma_columns" >&6; } if test $gl_cv_pragma_columns = yes; then PRAGMA_COLUMNS="#pragma COLUMNS 10000" else PRAGMA_COLUMNS= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for complete errno.h" >&5 $as_echo_n "checking for complete errno.h... " >&6; } if ${gl_cv_header_errno_h_complete+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !defined ETXTBSY booboo #endif #if !defined ENOMSG booboo #endif #if !defined EIDRM booboo #endif #if !defined ENOLINK booboo #endif #if !defined EPROTO booboo #endif #if !defined EMULTIHOP booboo #endif #if !defined EBADMSG booboo #endif #if !defined EOVERFLOW booboo #endif #if !defined ENOTSUP booboo #endif #if !defined ENETRESET booboo #endif #if !defined ECONNABORTED booboo #endif #if !defined ESTALE booboo #endif #if !defined EDQUOT booboo #endif #if !defined ECANCELED booboo #endif #if !defined EOWNERDEAD booboo #endif #if !defined ENOTRECOVERABLE booboo #endif #if !defined EILSEQ booboo #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "booboo" >/dev/null 2>&1; then : gl_cv_header_errno_h_complete=no else gl_cv_header_errno_h_complete=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_complete" >&5 $as_echo "$gl_cv_header_errno_h_complete" >&6; } if test $gl_cv_header_errno_h_complete = yes; then ERRNO_H='' else if test $gl_cv_have_include_next = yes; then gl_cv_next_errno_h='<'errno.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_errno_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'errno.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_errno_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_errno_h" >&5 $as_echo "$gl_cv_next_errno_h" >&6; } fi NEXT_ERRNO_H=$gl_cv_next_errno_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'errno.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_errno_h fi NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive ERRNO_H='errno.h' fi if test -n "$ERRNO_H"; then GL_GENERATE_ERRNO_H_TRUE= GL_GENERATE_ERRNO_H_FALSE='#' else GL_GENERATE_ERRNO_H_TRUE='#' GL_GENERATE_ERRNO_H_FALSE= fi if test -n "$ERRNO_H"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EMULTIHOP value" >&5 $as_echo_n "checking for EMULTIHOP value... " >&6; } if ${gl_cv_header_errno_h_EMULTIHOP+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef EMULTIHOP yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_EMULTIHOP=yes else gl_cv_header_errno_h_EMULTIHOP=no fi rm -f conftest* if test $gl_cv_header_errno_h_EMULTIHOP = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef EMULTIHOP yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_EMULTIHOP=hidden fi rm -f conftest* if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then if ac_fn_c_compute_int "$LINENO" "EMULTIHOP" "gl_cv_header_errno_h_EMULTIHOP" " #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include "; then : fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EMULTIHOP" >&5 $as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; } case $gl_cv_header_errno_h_EMULTIHOP in yes | no) EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE= ;; *) EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP" ;; esac fi if test -n "$ERRNO_H"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOLINK value" >&5 $as_echo_n "checking for ENOLINK value... " >&6; } if ${gl_cv_header_errno_h_ENOLINK+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef ENOLINK yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_ENOLINK=yes else gl_cv_header_errno_h_ENOLINK=no fi rm -f conftest* if test $gl_cv_header_errno_h_ENOLINK = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef ENOLINK yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_ENOLINK=hidden fi rm -f conftest* if test $gl_cv_header_errno_h_ENOLINK = hidden; then if ac_fn_c_compute_int "$LINENO" "ENOLINK" "gl_cv_header_errno_h_ENOLINK" " #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include "; then : fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_ENOLINK" >&5 $as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; } case $gl_cv_header_errno_h_ENOLINK in yes | no) ENOLINK_HIDDEN=0; ENOLINK_VALUE= ;; *) ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK" ;; esac fi if test -n "$ERRNO_H"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW value" >&5 $as_echo_n "checking for EOVERFLOW value... " >&6; } if ${gl_cv_header_errno_h_EOVERFLOW+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef EOVERFLOW yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_EOVERFLOW=yes else gl_cv_header_errno_h_EOVERFLOW=no fi rm -f conftest* if test $gl_cv_header_errno_h_EOVERFLOW = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef EOVERFLOW yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "yes" >/dev/null 2>&1; then : gl_cv_header_errno_h_EOVERFLOW=hidden fi rm -f conftest* if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then if ac_fn_c_compute_int "$LINENO" "EOVERFLOW" "gl_cv_header_errno_h_EOVERFLOW" " #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include "; then : fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EOVERFLOW" >&5 $as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; } case $gl_cv_header_errno_h_EOVERFLOW in yes | no) EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE= ;; *) EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW" ;; esac fi GNULIB_CHDIR=0; GNULIB_CHOWN=0; GNULIB_CLOSE=0; GNULIB_DUP=0; GNULIB_DUP2=0; GNULIB_DUP3=0; GNULIB_ENVIRON=0; GNULIB_EUIDACCESS=0; GNULIB_FACCESSAT=0; GNULIB_FCHDIR=0; GNULIB_FCHOWNAT=0; GNULIB_FDATASYNC=0; GNULIB_FSYNC=0; GNULIB_FTRUNCATE=0; GNULIB_GETCWD=0; GNULIB_GETDOMAINNAME=0; GNULIB_GETDTABLESIZE=0; GNULIB_GETGROUPS=0; GNULIB_GETHOSTNAME=0; GNULIB_GETLOGIN=0; GNULIB_GETLOGIN_R=0; GNULIB_GETPAGESIZE=0; GNULIB_GETUSERSHELL=0; GNULIB_GROUP_MEMBER=0; GNULIB_ISATTY=0; GNULIB_LCHOWN=0; GNULIB_LINK=0; GNULIB_LINKAT=0; GNULIB_LSEEK=0; GNULIB_PIPE=0; GNULIB_PIPE2=0; GNULIB_PREAD=0; GNULIB_PWRITE=0; GNULIB_READ=0; GNULIB_READLINK=0; GNULIB_READLINKAT=0; GNULIB_RMDIR=0; GNULIB_SETHOSTNAME=0; GNULIB_SLEEP=0; GNULIB_SYMLINK=0; GNULIB_SYMLINKAT=0; GNULIB_TTYNAME_R=0; GNULIB_UNISTD_H_NONBLOCKING=0; GNULIB_UNISTD_H_SIGPIPE=0; GNULIB_UNLINK=0; GNULIB_UNLINKAT=0; GNULIB_USLEEP=0; GNULIB_WRITE=0; HAVE_CHOWN=1; HAVE_DUP2=1; HAVE_DUP3=1; HAVE_EUIDACCESS=1; HAVE_FACCESSAT=1; HAVE_FCHDIR=1; HAVE_FCHOWNAT=1; HAVE_FDATASYNC=1; HAVE_FSYNC=1; HAVE_FTRUNCATE=1; HAVE_GETDTABLESIZE=1; HAVE_GETGROUPS=1; HAVE_GETHOSTNAME=1; HAVE_GETLOGIN=1; HAVE_GETPAGESIZE=1; HAVE_GROUP_MEMBER=1; HAVE_LCHOWN=1; HAVE_LINK=1; HAVE_LINKAT=1; HAVE_PIPE=1; HAVE_PIPE2=1; HAVE_PREAD=1; HAVE_PWRITE=1; HAVE_READLINK=1; HAVE_READLINKAT=1; HAVE_SETHOSTNAME=1; HAVE_SLEEP=1; HAVE_SYMLINK=1; HAVE_SYMLINKAT=1; HAVE_UNLINKAT=1; HAVE_USLEEP=1; HAVE_DECL_ENVIRON=1; HAVE_DECL_FCHDIR=1; HAVE_DECL_FDATASYNC=1; HAVE_DECL_GETDOMAINNAME=1; HAVE_DECL_GETLOGIN_R=1; HAVE_DECL_GETPAGESIZE=1; HAVE_DECL_GETUSERSHELL=1; HAVE_DECL_SETHOSTNAME=1; HAVE_DECL_TTYNAME_R=1; HAVE_OS_H=0; HAVE_SYS_PARAM_H=0; REPLACE_CHOWN=0; REPLACE_CLOSE=0; REPLACE_DUP=0; REPLACE_DUP2=0; REPLACE_FCHOWNAT=0; REPLACE_FTRUNCATE=0; REPLACE_GETCWD=0; REPLACE_GETDOMAINNAME=0; REPLACE_GETLOGIN_R=0; REPLACE_GETGROUPS=0; REPLACE_GETPAGESIZE=0; REPLACE_ISATTY=0; REPLACE_LCHOWN=0; REPLACE_LINK=0; REPLACE_LINKAT=0; REPLACE_LSEEK=0; REPLACE_PREAD=0; REPLACE_PWRITE=0; REPLACE_READ=0; REPLACE_READLINK=0; REPLACE_RMDIR=0; REPLACE_SLEEP=0; REPLACE_SYMLINK=0; REPLACE_TTYNAME_R=0; REPLACE_UNLINK=0; REPLACE_UNLINKAT=0; REPLACE_USLEEP=0; REPLACE_WRITE=0; UNISTD_H_HAVE_WINSOCK2_H=0; UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; GNULIB_FCHMODAT=0; GNULIB_FSTAT=0; GNULIB_FSTATAT=0; GNULIB_FUTIMENS=0; GNULIB_LCHMOD=0; GNULIB_LSTAT=0; GNULIB_MKDIRAT=0; GNULIB_MKFIFO=0; GNULIB_MKFIFOAT=0; GNULIB_MKNOD=0; GNULIB_MKNODAT=0; GNULIB_STAT=0; GNULIB_UTIMENSAT=0; HAVE_FCHMODAT=1; HAVE_FSTATAT=1; HAVE_FUTIMENS=1; HAVE_LCHMOD=1; HAVE_LSTAT=1; HAVE_MKDIRAT=1; HAVE_MKFIFO=1; HAVE_MKFIFOAT=1; HAVE_MKNOD=1; HAVE_MKNODAT=1; HAVE_UTIMENSAT=1; REPLACE_FSTAT=0; REPLACE_FSTATAT=0; REPLACE_FUTIMENS=0; REPLACE_LSTAT=0; REPLACE_MKDIR=0; REPLACE_MKFIFO=0; REPLACE_MKNOD=0; REPLACE_STAT=0; REPLACE_UTIMENSAT=0; for ac_func in $ac_func_list 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 if test $ac_cv_func__set_invalid_parameter_handler = yes; then HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 $as_echo "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h else HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 $as_echo_n "checking whether stat file-mode macros are broken... " >&6; } if ${ac_cv_header_stat_broken+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if defined S_ISBLK && defined S_IFDIR extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; #endif #if defined S_ISBLK && defined S_IFCHR extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; #endif #if defined S_ISLNK && defined S_IFREG extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; #endif #if defined S_ISSOCK && defined S_IFREG extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stat_broken=no else ac_cv_header_stat_broken=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 $as_echo "$ac_cv_header_stat_broken" >&6; } if test $ac_cv_header_stat_broken = yes; then $as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h fi for ac_header in $ac_header_list 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 ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" if test "x$ac_cv_type_mode_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define mode_t int _ACEOF fi case "$host_os" in mingw*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit off_t" >&5 $as_echo_n "checking for 64-bit off_t... " >&6; } if ${gl_cv_type_off_t_64+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_type_off_t_64=yes else gl_cv_type_off_t_64=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_off_t_64" >&5 $as_echo "$gl_cv_type_off_t_64" >&6; } if test $gl_cv_type_off_t_64 = no; then WINDOWS_64_BIT_OFF_T=1 else WINDOWS_64_BIT_OFF_T=0 fi WINDOWS_64_BIT_ST_SIZE=1 ;; *) WINDOWS_64_BIT_OFF_T=0 WINDOWS_64_BIT_ST_SIZE=0 ;; esac if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_stat_h='<'sys/stat.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_sys_stat_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_sys_stat_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/stat.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_sys_stat_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' else gl_cv_next_sys_stat_h='<'sys/stat.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_stat_h" >&5 $as_echo "$gl_cv_next_sys_stat_h" >&6; } fi NEXT_SYS_STAT_H=$gl_cv_next_sys_stat_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/stat.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_stat_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H=$gl_next_as_first_directive if test $WINDOWS_64_BIT_ST_SIZE = 1; then $as_echo "#define _GL_WINDOWS_64_BIT_ST_SIZE 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "nlink_t" "ac_cv_type_nlink_t" "#include #include " if test "x$ac_cv_type_nlink_t" = xyes; then : else $as_echo "#define nlink_t int" >>confdefs.h fi for gl_func in fchmodat fstat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat mknod mknodat stat utimensat; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done GNULIB_DPRINTF=0; GNULIB_FCLOSE=0; GNULIB_FDOPEN=0; GNULIB_FFLUSH=0; GNULIB_FGETC=0; GNULIB_FGETS=0; GNULIB_FOPEN=0; GNULIB_FPRINTF=0; GNULIB_FPRINTF_POSIX=0; GNULIB_FPURGE=0; GNULIB_FPUTC=0; GNULIB_FPUTS=0; GNULIB_FREAD=0; GNULIB_FREOPEN=0; GNULIB_FSCANF=0; GNULIB_FSEEK=0; GNULIB_FSEEKO=0; GNULIB_FTELL=0; GNULIB_FTELLO=0; GNULIB_FWRITE=0; GNULIB_GETC=0; GNULIB_GETCHAR=0; GNULIB_GETDELIM=0; GNULIB_GETLINE=0; GNULIB_OBSTACK_PRINTF=0; GNULIB_OBSTACK_PRINTF_POSIX=0; GNULIB_PCLOSE=0; GNULIB_PERROR=0; GNULIB_POPEN=0; GNULIB_PRINTF=0; GNULIB_PRINTF_POSIX=0; GNULIB_PUTC=0; GNULIB_PUTCHAR=0; GNULIB_PUTS=0; GNULIB_REMOVE=0; GNULIB_RENAME=0; GNULIB_RENAMEAT=0; GNULIB_SCANF=0; GNULIB_SNPRINTF=0; GNULIB_SPRINTF_POSIX=0; GNULIB_STDIO_H_NONBLOCKING=0; GNULIB_STDIO_H_SIGPIPE=0; GNULIB_TMPFILE=0; GNULIB_VASPRINTF=0; GNULIB_VFSCANF=0; GNULIB_VSCANF=0; GNULIB_VDPRINTF=0; GNULIB_VFPRINTF=0; GNULIB_VFPRINTF_POSIX=0; GNULIB_VPRINTF=0; GNULIB_VPRINTF_POSIX=0; GNULIB_VSNPRINTF=0; GNULIB_VSPRINTF_POSIX=0; HAVE_DECL_FPURGE=1; HAVE_DECL_FSEEKO=1; HAVE_DECL_FTELLO=1; HAVE_DECL_GETDELIM=1; HAVE_DECL_GETLINE=1; HAVE_DECL_OBSTACK_PRINTF=1; HAVE_DECL_SNPRINTF=1; HAVE_DECL_VSNPRINTF=1; HAVE_DPRINTF=1; HAVE_FSEEKO=1; HAVE_FTELLO=1; HAVE_PCLOSE=1; HAVE_POPEN=1; HAVE_RENAMEAT=1; HAVE_VASPRINTF=1; HAVE_VDPRINTF=1; REPLACE_DPRINTF=0; REPLACE_FCLOSE=0; REPLACE_FDOPEN=0; REPLACE_FFLUSH=0; REPLACE_FOPEN=0; REPLACE_FPRINTF=0; REPLACE_FPURGE=0; REPLACE_FREOPEN=0; REPLACE_FSEEK=0; REPLACE_FSEEKO=0; REPLACE_FTELL=0; REPLACE_FTELLO=0; REPLACE_GETDELIM=0; REPLACE_GETLINE=0; REPLACE_OBSTACK_PRINTF=0; REPLACE_PERROR=0; REPLACE_POPEN=0; REPLACE_PRINTF=0; REPLACE_REMOVE=0; REPLACE_RENAME=0; REPLACE_RENAMEAT=0; REPLACE_SNPRINTF=0; REPLACE_SPRINTF=0; REPLACE_STDIO_READ_FUNCS=0; REPLACE_STDIO_WRITE_FUNCS=0; REPLACE_TMPFILE=0; REPLACE_VASPRINTF=0; REPLACE_VDPRINTF=0; REPLACE_VFPRINTF=0; REPLACE_VPRINTF=0; REPLACE_VSNPRINTF=0; REPLACE_VSPRINTF=0; { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdin defaults to large file offsets" >&5 $as_echo_n "checking whether stdin defaults to large file offsets... " >&6; } if ${gl_cv_var_stdin_large_offset+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if defined __SL64 && defined __SCLE /* cygwin */ /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making fseeko/ftello needlessly fail. This bug was fixed in 1.5.25, and it is easier to do a version check than building a runtime test. */ # include # if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25) choke me # endif #endif ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_var_stdin_large_offset=yes else gl_cv_var_stdin_large_offset=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_var_stdin_large_offset" >&5 $as_echo "$gl_cv_var_stdin_large_offset" >&6; } ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_types_h='<'sys/types.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_sys_types_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/types.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_sys_types_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_types_h" >&5 $as_echo "$gl_cv_next_sys_types_h" >&6; } fi NEXT_SYS_TYPES_H=$gl_cv_next_sys_types_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/types.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_types_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H=$gl_next_as_first_directive ac_fn_c_check_decl "$LINENO" "ftello" "ac_cv_have_decl_ftello" "$ac_includes_default" if test "x$ac_cv_have_decl_ftello" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_FTELLO $ac_have_decl _ACEOF if test $ac_cv_have_decl_ftello = no; then HAVE_DECL_FTELLO=0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ftello" >&5 $as_echo_n "checking for ftello... " >&6; } if ${gl_cv_func_ftello+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ftello (stdin); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_func_ftello=yes else gl_cv_func_ftello=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello" >&5 $as_echo "$gl_cv_func_ftello" >&6; } if test $gl_cv_func_ftello = no; then HAVE_FTELLO=0 else if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_FTELLO=1 fi if test $gl_cv_var_stdin_large_offset = no; then REPLACE_FTELLO=1 fi if test $REPLACE_FTELLO = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ftello works" >&5 $as_echo_n "checking whether ftello works... " >&6; } if ${gl_cv_func_ftello_works+:} false; then : $as_echo_n "(cached) " >&6 else case "$host_os" in # Guess no on Solaris. solaris*) gl_cv_func_ftello_works="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_ftello_works="guessing yes" ;; esac if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #define TESTFILE "conftest.tmp" int main (void) { FILE *fp; /* Create a file with some contents. */ fp = fopen (TESTFILE, "w"); if (fp == NULL) return 70; if (fwrite ("foogarsh", 1, 8, fp) < 8) return 71; if (fclose (fp)) return 72; /* The file's contents is now "foogarsh". */ /* Try writing after reading to EOF. */ fp = fopen (TESTFILE, "r+"); if (fp == NULL) return 73; if (fseek (fp, -1, SEEK_END)) return 74; if (!(getc (fp) == 'h')) return 1; if (!(getc (fp) == EOF)) return 2; if (!(ftell (fp) == 8)) return 3; if (!(ftell (fp) == 8)) return 4; if (!(putc ('!', fp) == '!')) return 5; if (!(ftell (fp) == 9)) return 6; if (!(fclose (fp) == 0)) return 7; fp = fopen (TESTFILE, "r"); if (fp == NULL) return 75; { char buf[10]; if (!(fread (buf, 1, 10, fp) == 9)) return 10; if (!(memcmp (buf, "foogarsh!", 9) == 0)) return 11; } if (!(fclose (fp) == 0)) return 12; /* The file's contents is now "foogarsh!". */ return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_ftello_works=yes else gl_cv_func_ftello_works=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello_works" >&5 $as_echo "$gl_cv_func_ftello_works" >&6; } case "$gl_cv_func_ftello_works" in *yes) ;; *) REPLACE_FTELLO=1 $as_echo "#define FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE 1" >>confdefs.h ;; esac fi fi if test $gl_cv_have_include_next = yes; then gl_cv_next_getopt_h='<'getopt.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_getopt_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_getopt_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'getopt.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_getopt_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' else gl_cv_next_getopt_h='<'getopt.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_getopt_h" >&5 $as_echo "$gl_cv_next_getopt_h" >&6; } fi NEXT_GETOPT_H=$gl_cv_next_getopt_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'getopt.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_getopt_h fi NEXT_AS_FIRST_DIRECTIVE_GETOPT_H=$gl_next_as_first_directive if test $ac_cv_header_getopt_h = yes; then HAVE_GETOPT_H=1 else HAVE_GETOPT_H=0 fi gl_replace_getopt= if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF else gl_replace_getopt=yes fi done fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then for ac_func in getopt_long_only do : ac_fn_c_check_func "$LINENO" "getopt_long_only" "ac_cv_func_getopt_long_only" if test "x$ac_cv_func_getopt_long_only" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_LONG_ONLY 1 _ACEOF else gl_replace_getopt=yes fi done fi if test -z "$gl_replace_getopt"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getopt is POSIX compatible" >&5 $as_echo_n "checking whether getopt is POSIX compatible... " >&6; } if ${gl_cv_func_getopt_posix+:} false; then : $as_echo_n "(cached) " >&6 else if test $cross_compiling = no; then if test "$cross_compiling" = yes; 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 $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static char program[] = "program"; static char a[] = "-a"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, a, foo, bar, NULL }; int c; c = getopt (4, argv, "ab"); if (!(c == 'a')) return 1; c = getopt (4, argv, "ab"); if (!(c == -1)) return 2; if (!(optind == 2)) return 3; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_posix=maybe else gl_cv_func_getopt_posix=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $gl_cv_func_getopt_posix = maybe; then if test "$cross_compiling" = yes; 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 $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static char program[] = "program"; static char donald[] = "donald"; static char p[] = "-p"; static char billy[] = "billy"; static char duck[] = "duck"; static char a[] = "-a"; static char bar[] = "bar"; char *argv[] = { program, donald, p, billy, duck, a, bar, NULL }; int c; c = getopt (7, argv, "+abp:q:"); if (!(c == -1)) return 4; if (!(strcmp (argv[0], "program") == 0)) return 5; if (!(strcmp (argv[1], "donald") == 0)) return 6; if (!(strcmp (argv[2], "-p") == 0)) return 7; if (!(strcmp (argv[3], "billy") == 0)) return 8; if (!(strcmp (argv[4], "duck") == 0)) return 9; if (!(strcmp (argv[5], "-a") == 0)) return 10; if (!(strcmp (argv[6], "bar") == 0)) return 11; if (!(optind == 1)) return 12; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_posix=maybe else gl_cv_func_getopt_posix=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 if test $gl_cv_func_getopt_posix = maybe; then if test "$cross_compiling" = yes; 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 $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static char program[] = "program"; static char ab[] = "-ab"; char *argv[3] = { program, ab, NULL }; if (getopt (2, argv, "ab:") != 'a') return 13; if (getopt (2, argv, "ab:") != '?') return 14; if (optopt != 'b') return 15; if (optind != 2) return 16; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_posix=yes else gl_cv_func_getopt_posix=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 else case "$host_os" in darwin* | aix* | mingw*) gl_cv_func_getopt_posix="guessing no";; *) gl_cv_func_getopt_posix="guessing yes";; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_posix" >&5 $as_echo "$gl_cv_func_getopt_posix" >&6; } case "$gl_cv_func_getopt_posix" in *no) gl_replace_getopt=yes ;; esac fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt function" >&5 $as_echo_n "checking for working GNU getopt function... " >&6; } if ${gl_cv_func_getopt_gnu+:} false; then : $as_echo_n "(cached) " >&6 else # Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the # optstring is necessary for programs like m4 that have POSIX-mandated # semantics for supporting options interspersed with files. # Also, since getopt_long is a GNU extension, we require optind=0. # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT; # so take care to revert to the correct (non-)export state. gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }' case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include /* A POSIX signal handler. */ static void exception_handler (int sig) { exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif int main () { int result = 0; nocrash_init(); /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw, and fails on Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10. */ { static char conftest[] = "conftest"; static char plus[] = "-+"; char *argv[3] = { conftest, plus, NULL }; opterr = 0; if (getopt (2, argv, "+a") != '?') result |= 1; } /* This code succeeds on glibc 2.8, mingw, and fails on Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */ { static char program[] = "program"; static char p[] = "-p"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, p, foo, bar, NULL }; optind = 1; if (getopt (4, argv, "p::") != 'p') result |= 2; else if (optarg != NULL) result |= 4; else if (getopt (4, argv, "p::") != -1) result |= 6; else if (optind != 2) result |= 8; } /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */ { static char program[] = "program"; static char foo[] = "foo"; static char p[] = "-p"; char *argv[] = { program, foo, p, NULL }; optind = 0; if (getopt (3, argv, "-p") != 1) result |= 16; else if (getopt (3, argv, "-p") != 'p') result |= 16; } /* This code fails on glibc 2.11. */ { static char program[] = "program"; static char b[] = "-b"; static char a[] = "-a"; char *argv[] = { program, b, a, NULL }; optind = opterr = 0; if (getopt (3, argv, "+:a:b") != 'b') result |= 32; else if (getopt (3, argv, "+:a:b") != ':') result |= 32; } /* This code dumps core on glibc 2.14. */ { static char program[] = "program"; static char w[] = "-W"; static char dummy[] = "dummy"; char *argv[] = { program, w, dummy, NULL }; optind = opterr = 1; if (getopt (3, argv, "W;") != 'W') result |= 64; } return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_gnu=yes else gl_cv_func_getopt_gnu=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi case $gl_had_POSIXLY_CORRECT in exported) ;; yes) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;}; POSIXLY_CORRECT=1 ;; *) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;} ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_gnu" >&5 $as_echo "$gl_cv_func_getopt_gnu" >&6; } if test "$gl_cv_func_getopt_gnu" != yes; then gl_replace_getopt=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working GNU getopt_long function" >&5 $as_echo_n "checking for working GNU getopt_long function... " >&6; } if ${gl_cv_func_getopt_long_gnu+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : case "$host_os" in openbsd*) gl_cv_func_getopt_long_gnu="guessing no";; *) gl_cv_func_getopt_long_gnu="guessing yes";; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { static const struct option long_options[] = { { "xtremely-",no_argument, NULL, 1003 }, { "xtra", no_argument, NULL, 1001 }, { "xtreme", no_argument, NULL, 1002 }, { "xtremely", no_argument, NULL, 1003 }, { NULL, 0, NULL, 0 } }; /* This code fails on OpenBSD 5.0. */ { static char program[] = "program"; static char xtremel[] = "--xtremel"; char *argv[] = { program, xtremel, NULL }; int option_index; optind = 1; opterr = 0; if (getopt_long (2, argv, "", long_options, &option_index) != 1003) return 1; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_getopt_long_gnu=yes else gl_cv_func_getopt_long_gnu=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getopt_long_gnu" >&5 $as_echo "$gl_cv_func_getopt_long_gnu" >&6; } case "$gl_cv_func_getopt_long_gnu" in *yes) ;; *) gl_replace_getopt=yes ;; esac fi fi REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then REPLACE_GETOPT=1 fi if test $REPLACE_GETOPT = 1; then GETOPT_H=getopt.h $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h fi ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default" if test "x$ac_cv_have_decl_getenv" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_GETENV $ac_have_decl _ACEOF : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 $as_echo_n "checking for C/C++ restrict keyword... " >&6; } if ${ac_cv_c_restrict+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. for ac_kw in __restrict __restrict__ _Restrict restrict; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ typedef int * int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; } int main () { int s[1]; int * $ac_kw t = s; t[0] = 0; return foo(t) ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_restrict=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_restrict" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 $as_echo "$ac_cv_c_restrict" >&6; } case $ac_cv_c_restrict in restrict) ;; no) $as_echo "#define restrict /**/" >>confdefs.h ;; *) cat >>confdefs.h <<_ACEOF #define restrict $ac_cv_c_restrict _ACEOF ;; esac GNULIB_GETTIMEOFDAY=0; HAVE_GETTIMEOFDAY=1; HAVE_STRUCT_TIMEVAL=1; HAVE_SYS_TIME_H=1; REPLACE_GETTIMEOFDAY=0; REPLACE_STRUCT_TIMEVAL=0; if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_time_h='<'sys/time.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_sys_time_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_sys_time_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/time.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_sys_time_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' else gl_cv_next_sys_time_h='<'sys/time.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_time_h" >&5 $as_echo "$gl_cv_next_sys_time_h" >&6; } fi NEXT_SYS_TIME_H=$gl_cv_next_sys_time_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/time.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_time_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H=$gl_next_as_first_directive if test $ac_cv_header_sys_time_h != yes; then HAVE_SYS_TIME_H=0 fi if test $ac_cv_header_sys_socket_h != yes; then for ac_header in winsock2.h do : ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" if test "x$ac_cv_header_winsock2_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_WINSOCK2_H 1 _ACEOF fi done fi if test "$ac_cv_header_winsock2_h" = yes; then HAVE_WINSOCK2_H=1 UNISTD_H_HAVE_WINSOCK2_H=1 SYS_IOCTL_H_HAVE_WINSOCK2_H=1 else HAVE_WINSOCK2_H=0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5 $as_echo_n "checking for struct timeval... " >&6; } if ${gl_cv_sys_struct_timeval+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif int main () { static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timeval=yes else gl_cv_sys_struct_timeval=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timeval" >&5 $as_echo "$gl_cv_sys_struct_timeval" >&6; } if test $gl_cv_sys_struct_timeval != yes; then HAVE_STRUCT_TIMEVAL=0 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wide-enough struct timeval.tv_sec member" >&5 $as_echo_n "checking for wide-enough struct timeval.tv_sec member... " >&6; } if ${gl_cv_sys_struct_timeval_tv_sec+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif int main () { static struct timeval x; typedef int verify_tv_sec_type[ sizeof (time_t) <= sizeof x.tv_sec ? 1 : -1 ]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timeval_tv_sec=yes else gl_cv_sys_struct_timeval_tv_sec=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timeval_tv_sec" >&5 $as_echo "$gl_cv_sys_struct_timeval_tv_sec" >&6; } if test $gl_cv_sys_struct_timeval_tv_sec != yes; then REPLACE_STRUCT_TIMEVAL=1 fi fi for gl_func in gettimeofday; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_SYS_TIME_H # include #endif #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done GNULIB__EXIT=0; GNULIB_ATOLL=0; GNULIB_CALLOC_POSIX=0; GNULIB_CANONICALIZE_FILE_NAME=0; GNULIB_GETLOADAVG=0; GNULIB_GETSUBOPT=0; GNULIB_GRANTPT=0; GNULIB_MALLOC_POSIX=0; GNULIB_MBTOWC=0; GNULIB_MKDTEMP=0; GNULIB_MKOSTEMP=0; GNULIB_MKOSTEMPS=0; GNULIB_MKSTEMP=0; GNULIB_MKSTEMPS=0; GNULIB_POSIX_OPENPT=0; GNULIB_PTSNAME=0; GNULIB_PTSNAME_R=0; GNULIB_PUTENV=0; GNULIB_RANDOM=0; GNULIB_RANDOM_R=0; GNULIB_REALLOC_POSIX=0; GNULIB_REALPATH=0; GNULIB_RPMATCH=0; GNULIB_SECURE_GETENV=0; GNULIB_SETENV=0; GNULIB_STRTOD=0; GNULIB_STRTOLL=0; GNULIB_STRTOULL=0; GNULIB_SYSTEM_POSIX=0; GNULIB_UNLOCKPT=0; GNULIB_UNSETENV=0; GNULIB_WCTOMB=0; HAVE__EXIT=1; HAVE_ATOLL=1; HAVE_CANONICALIZE_FILE_NAME=1; HAVE_DECL_GETLOADAVG=1; HAVE_GETSUBOPT=1; HAVE_GRANTPT=1; HAVE_MKDTEMP=1; HAVE_MKOSTEMP=1; HAVE_MKOSTEMPS=1; HAVE_MKSTEMP=1; HAVE_MKSTEMPS=1; HAVE_POSIX_OPENPT=1; HAVE_PTSNAME=1; HAVE_PTSNAME_R=1; HAVE_RANDOM=1; HAVE_RANDOM_H=1; HAVE_RANDOM_R=1; HAVE_REALPATH=1; HAVE_RPMATCH=1; HAVE_SECURE_GETENV=1; HAVE_SETENV=1; HAVE_DECL_SETENV=1; HAVE_STRTOD=1; HAVE_STRTOLL=1; HAVE_STRTOULL=1; HAVE_STRUCT_RANDOM_DATA=1; HAVE_SYS_LOADAVG_H=0; HAVE_UNLOCKPT=1; HAVE_DECL_UNSETENV=1; REPLACE_CALLOC=0; REPLACE_CANONICALIZE_FILE_NAME=0; REPLACE_MALLOC=0; REPLACE_MBTOWC=0; REPLACE_MKSTEMP=0; REPLACE_PTSNAME=0; REPLACE_PTSNAME_R=0; REPLACE_PUTENV=0; REPLACE_RANDOM_R=0; REPLACE_REALLOC=0; REPLACE_REALPATH=0; REPLACE_SETENV=0; REPLACE_STRTOD=0; REPLACE_UNSETENV=0; REPLACE_WCTOMB=0; { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc are POSIX compliant" >&5 $as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; } if ${gl_cv_func_malloc_posix+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_malloc_posix=yes else gl_cv_func_malloc_posix=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_malloc_posix" >&5 $as_echo "$gl_cv_func_malloc_posix" >&6; } gl_cv_c_multiarch=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : arch= prev= for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do if test -n "$prev"; then case $word in i?86 | x86_64 | ppc | ppc64) if test -z "$arch" || test "$arch" = "$word"; then arch="$word" else gl_cv_c_multiarch=yes fi ;; esac prev= else if test "x$word" = "x-arch"; then prev=arch fi fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $gl_cv_c_multiarch = yes; then APPLE_UNIVERSAL_BUILD=1 else APPLE_UNIVERSAL_BUILD=0 fi REPLACE_NULL=0; HAVE_WCHAR_T=1; { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 $as_echo_n "checking for wchar_t... " >&6; } if ${gt_cv_c_wchar_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include wchar_t foo = (wchar_t)'\0'; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gt_cv_c_wchar_t=yes else gt_cv_c_wchar_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 $as_echo "$gt_cv_c_wchar_t" >&6; } if test $gt_cv_c_wchar_t = yes; then $as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 $as_echo_n "checking for unsigned long long int... " >&6; } if ${ac_cv_type_unsigned_long_long_int+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_type_unsigned_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* For now, do not test the preprocessor; as of 2007 there are too many implementations with broken preprocessors. Perhaps this can be revisited in 2012. In the meantime, code should not expect #if to work with literals wider than 32 bits. */ /* Test literals. */ long long int ll = 9223372036854775807ll; long long int nll = -9223372036854775807LL; unsigned long long int ull = 18446744073709551615ULL; /* Test constant expressions. */ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) ? 1 : -1)]; typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 ? 1 : -1)]; int i = 63; int main () { /* Test availability of runtime routines for shift and division. */ long long int llmax = 9223372036854775807ll; unsigned long long int ullmax = 18446744073709551615ull; return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) | (llmax / ll) | (llmax % ll) | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) | (ullmax / ull) | (ullmax % ull)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else ac_cv_type_unsigned_long_long_int=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 $as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } if test $ac_cv_type_unsigned_long_long_int = yes; then $as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 $as_echo_n "checking for long long int... " >&6; } if ${ac_cv_type_long_long_int+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_type_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int if test $ac_cv_type_long_long_int = yes; then if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef LLONG_MAX # define HALF \ (1LL << (sizeof (long long int) * CHAR_BIT - 2)) # define LLONG_MAX (HALF - 1 + HALF) #endif int main () { long long int n = 1; int i; for (i = 0; ; i++) { long long int m = n << i; if (m >> i != n) return 1; if (LLONG_MAX / 2 < m) break; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_type_long_long_int=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 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 $as_echo "$ac_cv_type_long_long_int" >&6; } if test $ac_cv_type_long_long_int = yes; then $as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h fi if test $ac_cv_type_long_long_int = yes; then HAVE_LONG_LONG_INT=1 else HAVE_LONG_LONG_INT=0 fi if test $ac_cv_type_unsigned_long_long_int = yes; then HAVE_UNSIGNED_LONG_LONG_INT=1 else HAVE_UNSIGNED_LONG_LONG_INT=0 fi if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi if test $ac_cv_header_inttypes_h = yes; then HAVE_INTTYPES_H=1 else HAVE_INTTYPES_H=0 fi if test $ac_cv_header_sys_types_h = yes; then HAVE_SYS_TYPES_H=1 else HAVE_SYS_TYPES_H=0 fi if test $gl_cv_have_include_next = yes; then gl_cv_next_stdint_h='<'stdint.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stdint_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_stdint_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdint.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_stdint_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' else gl_cv_next_stdint_h='<'stdint.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5 $as_echo "$gl_cv_next_stdint_h" >&6; } fi NEXT_STDINT_H=$gl_cv_next_stdint_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdint.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdint_h fi NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive if test $ac_cv_header_stdint_h = yes; then HAVE_STDINT_H=1 else HAVE_STDINT_H=0 fi if test $ac_cv_header_stdint_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5 $as_echo_n "checking whether stdint.h conforms to C99... " >&6; } if ${gl_cv_header_working_stdint_h+:} false; then : $as_echo_n "(cached) " >&6 else gl_cv_header_working_stdint_h=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in . */ #if !(defined WCHAR_MIN && defined WCHAR_MAX) #error "WCHAR_MIN, WCHAR_MAX not defined in " #endif /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif #ifdef INT8_MAX int8_t a1 = INT8_MAX; int8_t a1min = INT8_MIN; #endif #ifdef INT16_MAX int16_t a2 = INT16_MAX; int16_t a2min = INT16_MIN; #endif #ifdef INT32_MAX int32_t a3 = INT32_MAX; int32_t a3min = INT32_MIN; #endif #ifdef INT64_MAX int64_t a4 = INT64_MAX; int64_t a4min = INT64_MIN; #endif #ifdef UINT8_MAX uint8_t b1 = UINT8_MAX; #else typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; #endif #ifdef UINT16_MAX uint16_t b2 = UINT16_MAX; #endif #ifdef UINT32_MAX uint32_t b3 = UINT32_MAX; #endif #ifdef UINT64_MAX uint64_t b4 = UINT64_MAX; #endif int_least8_t c1 = INT8_C (0x7f); int_least8_t c1max = INT_LEAST8_MAX; int_least8_t c1min = INT_LEAST8_MIN; int_least16_t c2 = INT16_C (0x7fff); int_least16_t c2max = INT_LEAST16_MAX; int_least16_t c2min = INT_LEAST16_MIN; int_least32_t c3 = INT32_C (0x7fffffff); int_least32_t c3max = INT_LEAST32_MAX; int_least32_t c3min = INT_LEAST32_MIN; int_least64_t c4 = INT64_C (0x7fffffffffffffff); int_least64_t c4max = INT_LEAST64_MAX; int_least64_t c4min = INT_LEAST64_MIN; uint_least8_t d1 = UINT8_C (0xff); uint_least8_t d1max = UINT_LEAST8_MAX; uint_least16_t d2 = UINT16_C (0xffff); uint_least16_t d2max = UINT_LEAST16_MAX; uint_least32_t d3 = UINT32_C (0xffffffff); uint_least32_t d3max = UINT_LEAST32_MAX; uint_least64_t d4 = UINT64_C (0xffffffffffffffff); uint_least64_t d4max = UINT_LEAST64_MAX; int_fast8_t e1 = INT_FAST8_MAX; int_fast8_t e1min = INT_FAST8_MIN; int_fast16_t e2 = INT_FAST16_MAX; int_fast16_t e2min = INT_FAST16_MIN; int_fast32_t e3 = INT_FAST32_MAX; int_fast32_t e3min = INT_FAST32_MIN; int_fast64_t e4 = INT_FAST64_MAX; int_fast64_t e4min = INT_FAST64_MIN; uint_fast8_t f1 = UINT_FAST8_MAX; uint_fast16_t f2 = UINT_FAST16_MAX; uint_fast32_t f3 = UINT_FAST32_MAX; uint_fast64_t f4 = UINT_FAST64_MAX; #ifdef INTPTR_MAX intptr_t g = INTPTR_MAX; intptr_t gmin = INTPTR_MIN; #endif #ifdef UINTPTR_MAX uintptr_t h = UINTPTR_MAX; #endif intmax_t i = INTMAX_MAX; uintmax_t j = UINTMAX_MAX; #include /* for CHAR_BIT */ #define TYPE_MINIMUM(t) \ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) ((t) 0 < (t) -1 \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) struct s { int check_PTRDIFF: PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) ? 1 : -1; /* Detect bug in FreeBSD 6.0 / ia64. */ int check_SIG_ATOMIC: SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) ? 1 : -1; int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; int check_WCHAR: WCHAR_MIN == TYPE_MINIMUM (wchar_t) && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) ? 1 : -1; /* Detect bug in mingw. */ int check_WINT: WINT_MIN == TYPE_MINIMUM (wint_t) && WINT_MAX == TYPE_MAXIMUM (wint_t) ? 1 : -1; /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ int check_UINT8_C: (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; int check_UINT16_C: (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; /* Detect bugs in OpenBSD 3.9 stdint.h. */ #ifdef UINT8_MAX int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; #endif #ifdef UINT16_MAX int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; #endif #ifdef UINT32_MAX int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; #endif #ifdef UINT64_MAX int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; #endif int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; }; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if test "$cross_compiling" = yes; then : gl_cv_header_working_stdint_h=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif #include #include #define MVAL(macro) MVAL1(macro) #define MVAL1(expression) #expression static const char *macro_values[] = { #ifdef INT8_MAX MVAL (INT8_MAX), #endif #ifdef INT16_MAX MVAL (INT16_MAX), #endif #ifdef INT32_MAX MVAL (INT32_MAX), #endif #ifdef INT64_MAX MVAL (INT64_MAX), #endif #ifdef UINT8_MAX MVAL (UINT8_MAX), #endif #ifdef UINT16_MAX MVAL (UINT16_MAX), #endif #ifdef UINT32_MAX MVAL (UINT32_MAX), #endif #ifdef UINT64_MAX MVAL (UINT64_MAX), #endif NULL }; int main () { const char **mv; for (mv = macro_values; *mv != NULL; mv++) { const char *value = *mv; /* Test whether it looks like a cast expression. */ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 || strncmp (value, "((int)"/*)*/, 6) == 0 || strncmp (value, "((signed short)"/*)*/, 15) == 0 || strncmp (value, "((signed char)"/*)*/, 14) == 0) return mv - macro_values + 1; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_header_working_stdint_h=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5 $as_echo "$gl_cv_header_working_stdint_h" >&6; } fi if test "$gl_cv_header_working_stdint_h" = yes; then STDINT_H= else for ac_header in sys/inttypes.h sys/bitypes.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 if test $ac_cv_header_sys_inttypes_h = yes; then HAVE_SYS_INTTYPES_H=1 else HAVE_SYS_INTTYPES_H=0 fi if test $ac_cv_header_sys_bitypes_h = yes; then HAVE_SYS_BITYPES_H=1 else HAVE_SYS_BITYPES_H=0 fi if test $APPLE_UNIVERSAL_BUILD = 0; then for gltype in ptrdiff_t size_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 $as_echo_n "checking for bit size of $gltype... " >&6; } if eval \${gl_cv_bitsizeof_${gltype}+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif #include "; then : else result=unknown fi eval gl_cv_bitsizeof_${gltype}=\$result fi eval ac_res=\$gl_cv_bitsizeof_${gltype} { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` cat >>confdefs.h <<_ACEOF #define BITSIZEOF_${GLTYPE} $result _ACEOF eval BITSIZEOF_${GLTYPE}=\$result done fi for gltype in sig_atomic_t wchar_t wint_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5 $as_echo_n "checking for bit size of $gltype... " >&6; } if eval \${gl_cv_bitsizeof_${gltype}+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" " /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif #include "; then : else result=unknown fi eval gl_cv_bitsizeof_${gltype}=\$result fi eval ac_res=\$gl_cv_bitsizeof_${gltype} { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` cat >>confdefs.h <<_ACEOF #define BITSIZEOF_${GLTYPE} $result _ACEOF eval BITSIZEOF_${GLTYPE}=\$result done for gltype in sig_atomic_t wchar_t wint_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5 $as_echo_n "checking whether $gltype is signed... " >&6; } if eval \${gl_cv_type_${gltype}_signed+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif int verify[2 * (($gltype) -1 < ($gltype) 0) - 1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : result=yes else result=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext eval gl_cv_type_${gltype}_signed=\$result fi eval ac_res=\$gl_cv_type_${gltype}_signed { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval result=\$gl_cv_type_${gltype}_signed GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` if test "$result" = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_SIGNED_${GLTYPE} 1 _ACEOF eval HAVE_SIGNED_${GLTYPE}=1 else eval HAVE_SIGNED_${GLTYPE}=0 fi done gl_cv_type_ptrdiff_t_signed=yes gl_cv_type_size_t_signed=no if test $APPLE_UNIVERSAL_BUILD = 0; then for gltype in ptrdiff_t size_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 $as_echo_n "checking for $gltype integer literal suffix... " >&6; } if eval \${gl_cv_type_${gltype}_suffix+:} false; then : $as_echo_n "(cached) " >&6 else eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif extern $gltype foo; extern $gltype1 foo; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval gl_cv_type_${gltype}_suffix=\$glsuf fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done fi eval ac_res=\$gl_cv_type_${gltype}_suffix { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result cat >>confdefs.h <<_ACEOF #define ${GLTYPE}_SUFFIX $result _ACEOF done fi for gltype in sig_atomic_t wchar_t wint_t ; do { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5 $as_echo_n "checking for $gltype integer literal suffix... " >&6; } if eval \${gl_cv_type_${gltype}_suffix+:} false; then : $as_echo_n "(cached) " >&6 else eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif extern $gltype foo; extern $gltype1 foo; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval gl_cv_type_${gltype}_suffix=\$glsuf fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done fi eval ac_res=\$gl_cv_type_${gltype}_suffix { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result cat >>confdefs.h <<_ACEOF #define ${GLTYPE}_SUFFIX $result _ACEOF done if test $BITSIZEOF_WINT_T -lt 32; then BITSIZEOF_WINT_T=32 fi STDINT_H=stdint.h fi if test -n "$STDINT_H"; then GL_GENERATE_STDINT_H_TRUE= GL_GENERATE_STDINT_H_FALSE='#' else GL_GENERATE_STDINT_H_TRUE='#' GL_GENERATE_STDINT_H_FALSE= fi GNULIB_MKTIME=0; GNULIB_NANOSLEEP=0; GNULIB_STRPTIME=0; GNULIB_TIMEGM=0; GNULIB_TIME_R=0; HAVE_DECL_LOCALTIME_R=1; HAVE_NANOSLEEP=1; HAVE_STRPTIME=1; HAVE_TIMEGM=1; REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; REPLACE_MKTIME=GNULIB_PORTCHECK; REPLACE_NANOSLEEP=GNULIB_PORTCHECK; REPLACE_TIMEGM=GNULIB_PORTCHECK; { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 $as_echo_n "checking for struct timespec in ... " >&6; } if ${gl_cv_sys_struct_timespec_in_time_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timespec_in_time_h=yes else gl_cv_sys_struct_timespec_in_time_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_time_h" >&5 $as_echo "$gl_cv_sys_struct_timespec_in_time_h" >&6; } TIME_H_DEFINES_STRUCT_TIMESPEC=0 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then TIME_H_DEFINES_STRUCT_TIMESPEC=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 $as_echo_n "checking for struct timespec in ... " >&6; } if ${gl_cv_sys_struct_timespec_in_sys_time_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timespec_in_sys_time_h=yes else gl_cv_sys_struct_timespec_in_sys_time_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_sys_time_h" >&5 $as_echo "$gl_cv_sys_struct_timespec_in_sys_time_h" >&6; } if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 $as_echo_n "checking for struct timespec in ... " >&6; } if ${gl_cv_sys_struct_timespec_in_pthread_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { static struct timespec x; x.tv_sec = x.tv_nsec; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_sys_struct_timespec_in_pthread_h=yes else gl_cv_sys_struct_timespec_in_pthread_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timespec_in_pthread_h" >&5 $as_echo "$gl_cv_sys_struct_timespec_in_pthread_h" >&6; } if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 fi fi fi if test $gl_cv_have_include_next = yes; then gl_cv_next_time_h='<'time.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_time_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'time.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_time_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_time_h" >&5 $as_echo "$gl_cv_next_time_h" >&6; } fi NEXT_TIME_H=$gl_cv_next_time_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'time.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_time_h fi NEXT_AS_FIRST_DIRECTIVE_TIME_H=$gl_next_as_first_directive if true; then GL_COND_LIBTOOL_TRUE= GL_COND_LIBTOOL_FALSE='#' else GL_COND_LIBTOOL_TRUE='#' GL_COND_LIBTOOL_FALSE= fi gl_cond_libtool=true gl_m4_base='gl/m4' gl_source_base='gl' # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. # Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all* # programs in the package would end up linked with that potentially-shared # library, inducing unnecessary run-time overhead. LIB_CLOCK_GETTIME= gl_saved_libs=$LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 $as_echo_n "checking for library containing clock_gettime... " >&6; } if ${ac_cv_search_clock_gettime+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* 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 clock_gettime (); int main () { return clock_gettime (); ; return 0; } _ACEOF for ac_lib in '' rt posix4; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_clock_gettime=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_clock_gettime+:} false; then : break fi done if ${ac_cv_search_clock_gettime+:} false; then : else ac_cv_search_clock_gettime=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 $as_echo "$ac_cv_search_clock_gettime" >&6; } ac_res=$ac_cv_search_clock_gettime if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" test "$ac_cv_search_clock_gettime" = "none required" || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime fi for ac_func in clock_gettime clock_settime 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 LIBS=$gl_saved_libs if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_FSTAT=1 fi if test $WINDOWS_64_BIT_ST_SIZE = 1; then REPLACE_FSTAT=1 fi if test $REPLACE_FSTAT = 1; then gl_LIBOBJS="$gl_LIBOBJS fstat.$ac_objext" : fi GNULIB_FSTAT=1 $as_echo "#define GNULIB_TEST_FSTAT 1" >>confdefs.h if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then REPLACE_FTELL=1 fi if test $REPLACE_FTELL = 1; then gl_LIBOBJS="$gl_LIBOBJS ftell.$ac_objext" fi GNULIB_FTELL=1 $as_echo "#define GNULIB_TEST_FTELL 1" >>confdefs.h if test $ac_cv_have_decl_ftello = no; then HAVE_DECL_FTELLO=0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ftello" >&5 $as_echo_n "checking for ftello... " >&6; } if ${gl_cv_func_ftello+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ftello (stdin); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gl_cv_func_ftello=yes else gl_cv_func_ftello=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello" >&5 $as_echo "$gl_cv_func_ftello" >&6; } if test $gl_cv_func_ftello = no; then HAVE_FTELLO=0 else if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_FTELLO=1 fi if test $gl_cv_var_stdin_large_offset = no; then REPLACE_FTELLO=1 fi if test $REPLACE_FTELLO = 0; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ftello works" >&5 $as_echo_n "checking whether ftello works... " >&6; } if ${gl_cv_func_ftello_works+:} false; then : $as_echo_n "(cached) " >&6 else case "$host_os" in # Guess no on Solaris. solaris*) gl_cv_func_ftello_works="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_ftello_works="guessing yes" ;; esac if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #define TESTFILE "conftest.tmp" int main (void) { FILE *fp; /* Create a file with some contents. */ fp = fopen (TESTFILE, "w"); if (fp == NULL) return 70; if (fwrite ("foogarsh", 1, 8, fp) < 8) return 71; if (fclose (fp)) return 72; /* The file's contents is now "foogarsh". */ /* Try writing after reading to EOF. */ fp = fopen (TESTFILE, "r+"); if (fp == NULL) return 73; if (fseek (fp, -1, SEEK_END)) return 74; if (!(getc (fp) == 'h')) return 1; if (!(getc (fp) == EOF)) return 2; if (!(ftell (fp) == 8)) return 3; if (!(ftell (fp) == 8)) return 4; if (!(putc ('!', fp) == '!')) return 5; if (!(ftell (fp) == 9)) return 6; if (!(fclose (fp) == 0)) return 7; fp = fopen (TESTFILE, "r"); if (fp == NULL) return 75; { char buf[10]; if (!(fread (buf, 1, 10, fp) == 9)) return 10; if (!(memcmp (buf, "foogarsh!", 9) == 0)) return 11; } if (!(fclose (fp) == 0)) return 12; /* The file's contents is now "foogarsh!". */ return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_ftello_works=yes else gl_cv_func_ftello_works=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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ftello_works" >&5 $as_echo "$gl_cv_func_ftello_works" >&6; } case "$gl_cv_func_ftello_works" in *yes) ;; *) REPLACE_FTELLO=1 $as_echo "#define FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE 1" >>confdefs.h ;; esac fi fi if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then gl_LIBOBJS="$gl_LIBOBJS ftello.$ac_objext" for ac_func in _ftelli64 do : ac_fn_c_check_func "$LINENO" "_ftelli64" "ac_cv_func__ftelli64" if test "x$ac_cv_func__ftelli64" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__FTELLI64 1 _ACEOF fi done fi GNULIB_FTELLO=1 $as_echo "#define GNULIB_TEST_FTELLO 1" >>confdefs.h if test $REPLACE_GETOPT = 1; then gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext" GNULIB_GL_UNISTD_H_GETOPT=1 fi $as_echo "#define GNULIB_TEST_GETOPT_GNU 1" >>confdefs.h REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then REPLACE_GETOPT=1 fi if test $REPLACE_GETOPT = 1; then GETOPT_H=getopt.h $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h fi if test $REPLACE_GETOPT = 1; then gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext" gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext" GNULIB_GL_UNISTD_H_GETOPT=1 fi gl_gettimeofday_timezone=void if test $ac_cv_func_gettimeofday != yes; then HAVE_GETTIMEOFDAY=0 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gettimeofday clobbers localtime buffer" >&5 $as_echo_n "checking whether gettimeofday clobbers localtime buffer... " >&6; } if ${gl_cv_func_gettimeofday_clobber+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : # When cross-compiling: case "$host_os" in # Guess all is fine on glibc systems. *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;; # If we don't know, assume the worst. *) gl_cv_func_gettimeofday_clobber="guessing yes" ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { time_t t = 0; struct tm *lt; struct tm saved_lt; struct timeval tv; lt = localtime (&t); saved_lt = *lt; gettimeofday (&tv, NULL); return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : gl_cv_func_gettimeofday_clobber=no else gl_cv_func_gettimeofday_clobber=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gettimeofday_clobber" >&5 $as_echo "$gl_cv_func_gettimeofday_clobber" >&6; } case "$gl_cv_func_gettimeofday_clobber" in *yes) REPLACE_GETTIMEOFDAY=1 $as_echo "#define gmtime rpl_gmtime" >>confdefs.h $as_echo "#define localtime rpl_localtime" >>confdefs.h $as_echo "#define GETTIMEOFDAY_CLOBBERS_LOCALTIME 1" >>confdefs.h ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettimeofday with POSIX signature" >&5 $as_echo_n "checking for gettimeofday with POSIX signature... " >&6; } if ${gl_cv_func_gettimeofday_posix_signature+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include struct timeval c; int gettimeofday (struct timeval *restrict, void *restrict); int main () { /* glibc uses struct timezone * rather than the POSIX void * if _GNU_SOURCE is defined. However, since the only portable use of gettimeofday uses NULL as the second parameter, and since the glibc definition is actually more typesafe, it is not worth wrapping this to get a compliant signature. */ int (*f) (struct timeval *restrict, void *restrict) = gettimeofday; int x = f (&c, 0); return !(x | c.tv_sec | c.tv_usec); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_gettimeofday_posix_signature=yes else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int gettimeofday (struct timeval *restrict, struct timezone *restrict); int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_gettimeofday_posix_signature=almost else gl_cv_func_gettimeofday_posix_signature=no 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gettimeofday_posix_signature" >&5 $as_echo "$gl_cv_func_gettimeofday_posix_signature" >&6; } if test $gl_cv_func_gettimeofday_posix_signature = almost; then gl_gettimeofday_timezone='struct timezone' elif test $gl_cv_func_gettimeofday_posix_signature != yes; then REPLACE_GETTIMEOFDAY=1 fi if test $REPLACE_STRUCT_TIMEVAL = 1; then REPLACE_GETTIMEOFDAY=1 fi fi cat >>confdefs.h <<_ACEOF #define GETTIMEOFDAY_TIMEZONE $gl_gettimeofday_timezone _ACEOF if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext" for ac_header in sys/timeb.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/timeb.h" "ac_cv_header_sys_timeb_h" "$ac_includes_default" if test "x$ac_cv_header_sys_timeb_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_TIMEB_H 1 _ACEOF fi done for ac_func in _ftime do : ac_fn_c_check_func "$LINENO" "_ftime" "ac_cv_func__ftime" if test "x$ac_cv_func__ftime" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__FTIME 1 _ACEOF fi done fi GNULIB_GETTIMEOFDAY=1 $as_echo "#define GNULIB_TEST_GETTIMEOFDAY 1" >>confdefs.h # Autoconf 2.61a.99 and earlier don't support linking a file only # in VPATH builds. But since GNUmakefile is for maintainer use # only, it does not matter if we skip the link with older autoconf. # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH # builds, so use a shell variable to bypass this. GNUmakefile=GNUmakefile ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lseek detects pipes" >&5 $as_echo_n "checking whether lseek detects pipes... " >&6; } if ${gl_cv_func_lseek_pipe+:} false; then : $as_echo_n "(cached) " >&6 else case "$host_os" in mingw*) gl_cv_func_lseek_pipe=no ;; *) if test $cross_compiling = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for off_t */ #include /* for SEEK_CUR */ #if HAVE_UNISTD_H # include #else /* on Windows with MSVC */ # include #endif int main () { /* Exit with success only if stdin is seekable. */ return lseek (0, (off_t)0, SEEK_CUR) < 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if test -s conftest$ac_exeext \ && ./conftest$ac_exeext < conftest.$ac_ext \ && test 1 = "`echo hi \ | { ./conftest$ac_exeext; echo $?; cat >/dev/null; }`"; then gl_cv_func_lseek_pipe=yes else gl_cv_func_lseek_pipe=no fi else gl_cv_func_lseek_pipe=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined __BEOS__ /* BeOS mistakenly return 0 when trying to seek on pipes. */ Choke me. #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_lseek_pipe=yes else gl_cv_func_lseek_pipe=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_lseek_pipe" >&5 $as_echo "$gl_cv_func_lseek_pipe" >&6; } if test $gl_cv_func_lseek_pipe = no; then REPLACE_LSEEK=1 $as_echo "#define LSEEK_PIPE_BROKEN 1" >>confdefs.h fi if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_LSEEK=1 fi if test $REPLACE_LSEEK = 1; then gl_LIBOBJS="$gl_LIBOBJS lseek.$ac_objext" fi GNULIB_LSEEK=1 $as_echo "#define GNULIB_TEST_LSEEK 1" >>confdefs.h if test $gl_cv_func_malloc_posix = yes; then $as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h else REPLACE_MALLOC=1 fi if test $REPLACE_MALLOC = 1; then gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext" fi GNULIB_MALLOC_POSIX=1 $as_echo "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h if test $ac_cv_func__set_invalid_parameter_handler = yes; then HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 $as_echo "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h else HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then gl_LIBOBJS="$gl_LIBOBJS msvc-inval.$ac_objext" fi if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then gl_LIBOBJS="$gl_LIBOBJS msvc-nothrow.$ac_objext" fi # Extract the first word of "pmccabe", so it can be a program name with args. set dummy pmccabe; 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_PMCCABE+:} false; then : $as_echo_n "(cached) " >&6 else case $PMCCABE in [\\/]* | ?:[\\/]*) ac_cv_path_PMCCABE="$PMCCABE" # 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_PMCCABE="$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_PMCCABE" && ac_cv_path_PMCCABE="false" ;; esac fi PMCCABE=$ac_cv_path_PMCCABE if test -n "$PMCCABE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PMCCABE" >&5 $as_echo "$PMCCABE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include " if test "x$ac_cv_have_decl_program_invocation_name" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include " if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes; then : ac_have_decl=1 else ac_have_decl=0 fi cat >>confdefs.h <<_ACEOF #define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME $ac_have_decl _ACEOF : if test $gl_cv_func_malloc_posix = yes; then $as_echo "#define HAVE_REALLOC_POSIX 1" >>confdefs.h else REPLACE_REALLOC=1 fi if test $REPLACE_REALLOC = 1; then gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext" fi GNULIB_REALLOC_POSIX=1 $as_echo "#define GNULIB_TEST_REALLOC_POSIX 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5 $as_echo_n "checking for ssize_t... " >&6; } if ${gt_cv_ssize_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int x = sizeof (ssize_t *) + sizeof (ssize_t); return !x; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gt_cv_ssize_t=yes else gt_cv_ssize_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5 $as_echo "$gt_cv_ssize_t" >&6; } if test $gt_cv_ssize_t = no; then $as_echo "#define ssize_t int" >>confdefs.h fi STDARG_H='' NEXT_STDARG_H='' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy" >&5 $as_echo_n "checking for va_copy... " >&6; } if ${gl_cv_func_va_copy+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef va_copy void (*func) (va_list, va_list) = va_copy; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func_va_copy=yes else gl_cv_func_va_copy=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_va_copy" >&5 $as_echo "$gl_cv_func_va_copy" >&6; } if test $gl_cv_func_va_copy = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _AIX && !defined __GNUC__ AIX vaccine #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "vaccine" >/dev/null 2>&1; then : gl_aixcc=yes else gl_aixcc=no fi rm -f conftest* if test $gl_aixcc = yes; then STDARG_H=stdarg.h if test $gl_cv_have_include_next = yes; then gl_cv_next_stdarg_h='<'stdarg.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stdarg_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdarg.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_stdarg_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdarg_h" >&5 $as_echo "$gl_cv_next_stdarg_h" >&6; } fi NEXT_STDARG_H=$gl_cv_next_stdarg_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdarg.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdarg_h fi NEXT_AS_FIRST_DIRECTIVE_STDARG_H=$gl_next_as_first_directive if test "$gl_cv_next_stdarg_h" = '""'; then gl_cv_next_stdarg_h='"///usr/include/stdarg.h"' NEXT_STDARG_H="$gl_cv_next_stdarg_h" fi else saved_as_echo_n="$as_echo_n" as_echo_n=':' if ${gl_cv_func___va_copy+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef __va_copy error, bail out #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_func___va_copy=yes else gl_cv_func___va_copy=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi as_echo_n="$saved_as_echo_n" if test $gl_cv_func___va_copy = yes; then $as_echo "#define va_copy __va_copy" >>confdefs.h else $as_echo "#define va_copy gl_va_copy" >>confdefs.h fi fi fi if test -n "$STDARG_H"; then GL_GENERATE_STDARG_H_TRUE= GL_GENERATE_STDARG_H_FALSE='#' else GL_GENERATE_STDARG_H_TRUE='#' GL_GENERATE_STDARG_H_FALSE= fi STDDEF_H= if test $gt_cv_c_wchar_t = no; then HAVE_WCHAR_T=0 STDDEF_H=stddef.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5 $as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; } if ${gl_cv_decl_null_works+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int test[2 * (sizeof NULL == sizeof (void *)) -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_decl_null_works=yes else gl_cv_decl_null_works=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5 $as_echo "$gl_cv_decl_null_works" >&6; } if test $gl_cv_decl_null_works = no; then REPLACE_NULL=1 STDDEF_H=stddef.h fi if test -n "$STDDEF_H"; then GL_GENERATE_STDDEF_H_TRUE= GL_GENERATE_STDDEF_H_FALSE='#' else GL_GENERATE_STDDEF_H_TRUE='#' GL_GENERATE_STDDEF_H_FALSE= fi if test -n "$STDDEF_H"; then if test $gl_cv_have_include_next = yes; then gl_cv_next_stddef_h='<'stddef.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stddef_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stddef.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_stddef_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5 $as_echo "$gl_cv_next_stddef_h" >&6; } fi NEXT_STDDEF_H=$gl_cv_next_stddef_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stddef.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stddef_h fi NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive fi if test $gl_cv_have_include_next = yes; then gl_cv_next_stdio_h='<'stdio.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stdio_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdio.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_stdio_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdio_h" >&5 $as_echo "$gl_cv_next_stdio_h" >&6; } fi NEXT_STDIO_H=$gl_cv_next_stdio_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdio.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdio_h fi NEXT_AS_FIRST_DIRECTIVE_STDIO_H=$gl_next_as_first_directive GNULIB_FSCANF=1 cat >>confdefs.h <<_ACEOF #define GNULIB_FSCANF 1 _ACEOF GNULIB_SCANF=1 cat >>confdefs.h <<_ACEOF #define GNULIB_SCANF 1 _ACEOF GNULIB_FGETC=1 GNULIB_GETC=1 GNULIB_GETCHAR=1 GNULIB_FGETS=1 GNULIB_FREAD=1 GNULIB_FPRINTF=1 GNULIB_PRINTF=1 GNULIB_VFPRINTF=1 GNULIB_VPRINTF=1 GNULIB_FPUTC=1 GNULIB_PUTC=1 GNULIB_PUTCHAR=1 GNULIB_FPUTS=1 GNULIB_PUTS=1 GNULIB_FWRITE=1 for gl_func in dprintf fpurge fseeko ftello getdelim getline gets pclose popen renameat snprintf tmpfile vdprintf vsnprintf; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done if test $gl_cv_have_include_next = yes; then gl_cv_next_stdlib_h='<'stdlib.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stdlib_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stdlib.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_stdlib_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdlib_h" >&5 $as_echo "$gl_cv_next_stdlib_h" >&6; } fi NEXT_STDLIB_H=$gl_cv_next_stdlib_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stdlib.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stdlib_h fi NEXT_AS_FIRST_DIRECTIVE_STDLIB_H=$gl_next_as_first_directive for gl_func in _Exit atoll canonicalize_file_name getloadavg getsubopt grantpt initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt ptsname ptsname_r random random_r realpath rpmatch secure_getenv setenv setstate setstate_r srandom srandom_r strtod strtoll strtoull unlockpt unsetenv; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if HAVE_SYS_LOADAVG_H # include #endif #if HAVE_RANDOM_H # include #endif int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done if test $gl_cv_have_include_next = yes; then gl_cv_next_sys_stat_h='<'sys/stat.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_sys_stat_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_sys_stat_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'sys/stat.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_sys_stat_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' else gl_cv_next_sys_stat_h='<'sys/stat.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_stat_h" >&5 $as_echo "$gl_cv_next_sys_stat_h" >&6; } fi NEXT_SYS_STAT_H=$gl_cv_next_sys_stat_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'sys/stat.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_sys_stat_h fi NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H=$gl_next_as_first_directive if test $WINDOWS_64_BIT_ST_SIZE = 1; then $as_echo "#define _GL_WINDOWS_64_BIT_ST_SIZE 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "nlink_t" "ac_cv_type_nlink_t" "#include #include " if test "x$ac_cv_type_nlink_t" = xyes; then : else $as_echo "#define nlink_t int" >>confdefs.h fi for gl_func in fchmodat fstat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat mknod mknodat stat utimensat; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done : if test $gl_cv_have_include_next = yes; then gl_cv_next_unistd_h='<'unistd.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_unistd_h+:} false; then : $as_echo_n "(cached) " >&6 else if test $ac_cv_header_unistd_h = yes; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'unistd.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_unistd_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' else gl_cv_next_unistd_h='<'unistd.h'>' fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_unistd_h" >&5 $as_echo "$gl_cv_next_unistd_h" >&6; } fi NEXT_UNISTD_H=$gl_cv_next_unistd_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'unistd.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_unistd_h fi NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive if test $ac_cv_header_unistd_h = yes; then HAVE_UNISTD_H=1 else HAVE_UNISTD_H=0 fi for gl_func in chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize getgroups gethostname getlogin getlogin_r getpagesize getusershell setusershell endusershell group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite readlink readlinkat rmdir sethostname sleep symlink symlinkat ttyname_r unlink unlinkat usleep; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if HAVE_UNISTD_H # include #endif /* Some systems declare various items in the wrong headers. */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include # include # include # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # include # endif #endif int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done # Check whether --enable-valgrind-tests was given. if test "${enable_valgrind_tests+set}" = set; then : enableval=$enable_valgrind_tests; opt_valgrind_tests=$enableval else opt_valgrind_tests=yes fi # Run self-tests under valgrind? if test "$opt_valgrind_tests" = "yes" && test "$cross_compiling" = no; then for ac_prog in valgrind 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_VALGRIND+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$VALGRIND"; then ac_cv_prog_VALGRIND="$VALGRIND" # 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_VALGRIND="$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 VALGRIND=$ac_cv_prog_VALGRIND if test -n "$VALGRIND"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 $as_echo "$VALGRIND" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$VALGRIND" && break done fi OPTS="-q --error-exitcode=1 --leak-check=no" if test -n "$VALGRIND" \ && $VALGRIND $OPTS $SHELL -c 'exit 0' > /dev/null 2>&1; then opt_valgrind_tests=yes VALGRIND="$VALGRIND $OPTS" else opt_valgrind_tests=no VALGRIND= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether self tests are run under valgrind" >&5 $as_echo_n "checking whether self tests are run under valgrind... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $opt_valgrind_tests" >&5 $as_echo "$opt_valgrind_tests" >&6; } # Check whether --with-packager was given. if test "${with_packager+set}" = set; then : withval=$with_packager; case $withval in yes|no) ;; *) cat >>confdefs.h <<_ACEOF #define PACKAGE_PACKAGER "$withval" _ACEOF ;; esac fi # Check whether --with-packager-version was given. if test "${with_packager_version+set}" = set; then : withval=$with_packager_version; case $withval in yes|no) ;; *) cat >>confdefs.h <<_ACEOF #define PACKAGE_PACKAGER_VERSION "$withval" _ACEOF ;; esac fi # Check whether --with-packager-bug-reports was given. if test "${with_packager_bug_reports+set}" = set; then : withval=$with_packager_bug_reports; case $withval in yes|no) ;; *) cat >>confdefs.h <<_ACEOF #define PACKAGE_PACKAGER_BUG_REPORTS "$withval" _ACEOF ;; esac fi if test "X$with_packager" = "X" && \ test "X$with_packager_version$with_packager_bug_reports" != "X" then as_fn_error $? "The --with-packager-{bug-reports,version} options require --with-packager" "$LINENO" 5 fi # End of code from modules gltests_libdeps= gltests_ltlibdeps= gl_source_base='tests' gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS gl_module_indicator_condition=$gltests_WITNESS # Check whether --enable-valgrind-tests was given. if test "${enable_valgrind_tests+set}" = set; then : enableval=$enable_valgrind_tests; opt_valgrind_tests=$enableval else opt_valgrind_tests=yes fi # Run self-tests under valgrind? if test "$opt_valgrind_tests" = "yes" && test "$cross_compiling" = no; then for ac_prog in valgrind 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_VALGRIND+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$VALGRIND"; then ac_cv_prog_VALGRIND="$VALGRIND" # 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_VALGRIND="$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 VALGRIND=$ac_cv_prog_VALGRIND if test -n "$VALGRIND"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND" >&5 $as_echo "$VALGRIND" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$VALGRIND" && break done fi OPTS="-q --error-exitcode=1 --leak-check=no" if test -n "$VALGRIND" \ && $VALGRIND $OPTS $SHELL -c 'exit 0' > /dev/null 2>&1; then opt_valgrind_tests=yes VALGRIND="$VALGRIND $OPTS" else opt_valgrind_tests=no VALGRIND= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether self tests are run under valgrind" >&5 $as_echo_n "checking whether self tests are run under valgrind... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $opt_valgrind_tests" >&5 $as_echo "$opt_valgrind_tests" >&6; } GNULIB_FFSL=0; GNULIB_FFSLL=0; GNULIB_MEMCHR=0; GNULIB_MEMMEM=0; GNULIB_MEMPCPY=0; GNULIB_MEMRCHR=0; GNULIB_RAWMEMCHR=0; GNULIB_STPCPY=0; GNULIB_STPNCPY=0; GNULIB_STRCHRNUL=0; GNULIB_STRDUP=0; GNULIB_STRNCAT=0; GNULIB_STRNDUP=0; GNULIB_STRNLEN=0; GNULIB_STRPBRK=0; GNULIB_STRSEP=0; GNULIB_STRSTR=0; GNULIB_STRCASESTR=0; GNULIB_STRTOK_R=0; GNULIB_MBSLEN=0; GNULIB_MBSNLEN=0; GNULIB_MBSCHR=0; GNULIB_MBSRCHR=0; GNULIB_MBSSTR=0; GNULIB_MBSCASECMP=0; GNULIB_MBSNCASECMP=0; GNULIB_MBSPCASECMP=0; GNULIB_MBSCASESTR=0; GNULIB_MBSCSPN=0; GNULIB_MBSPBRK=0; GNULIB_MBSSPN=0; GNULIB_MBSSEP=0; GNULIB_MBSTOK_R=0; GNULIB_STRERROR=0; GNULIB_STRERROR_R=0; GNULIB_STRSIGNAL=0; GNULIB_STRVERSCMP=0; HAVE_MBSLEN=0; HAVE_FFSL=1; HAVE_FFSLL=1; HAVE_MEMCHR=1; HAVE_DECL_MEMMEM=1; HAVE_MEMPCPY=1; HAVE_DECL_MEMRCHR=1; HAVE_RAWMEMCHR=1; HAVE_STPCPY=1; HAVE_STPNCPY=1; HAVE_STRCHRNUL=1; HAVE_DECL_STRDUP=1; HAVE_DECL_STRNDUP=1; HAVE_DECL_STRNLEN=1; HAVE_STRPBRK=1; HAVE_STRSEP=1; HAVE_STRCASESTR=1; HAVE_DECL_STRTOK_R=1; HAVE_DECL_STRERROR_R=1; HAVE_DECL_STRSIGNAL=1; HAVE_STRVERSCMP=1; REPLACE_MEMCHR=0; REPLACE_MEMMEM=0; REPLACE_STPNCPY=0; REPLACE_STRDUP=0; REPLACE_STRSTR=0; REPLACE_STRCASESTR=0; REPLACE_STRCHRNUL=0; REPLACE_STRERROR=0; REPLACE_STRERROR_R=0; REPLACE_STRNCAT=0; REPLACE_STRNDUP=0; REPLACE_STRNLEN=0; REPLACE_STRSIGNAL=0; REPLACE_STRTOK_R=0; UNDEFINE_STRTOK_R=0; if test $gl_cv_have_include_next = yes; then gl_cv_next_string_h='<'string.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_string_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'string.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_string_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_string_h" >&5 $as_echo "$gl_cv_next_string_h" >&6; } fi NEXT_STRING_H=$gl_cv_next_string_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'string.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_string_h fi NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive for gl_func in ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r strerror_r strsignal strverscmp; do as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; } if eval \${$as_gl_Symbol+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #undef $gl_func (void) $gl_func; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Symbol=yes" else eval "$as_gl_Symbol=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_gl_Symbol { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Symbol"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_RAW_DECL_$gl_func" | $as_tr_cpp` 1 _ACEOF eval ac_cv_have_decl_$gl_func=yes fi done if true; then GL_COND_LIBTOOL_TRUE= GL_COND_LIBTOOL_FALSE='#' else GL_COND_LIBTOOL_TRUE='#' GL_COND_LIBTOOL_FALSE= fi gl_cond_libtool=true gl_m4_base='lib/glm4' gl_source_base='lib/gllib' # Check whether --enable-ld-version-script was given. if test "${enable_ld_version_script+set}" = set; then : enableval=$enable_ld_version_script; have_ld_version_script=$enableval fi if test -z "$have_ld_version_script"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if LD -Wl,--version-script works" >&5 $as_echo_n "checking if LD -Wl,--version-script works... " >&6; } save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" cat > conftest.map <conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : accepts_syntax_errors=yes else accepts_syntax_errors=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$accepts_syntax_errors" = no; then cat > conftest.map <conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_ld_version_script=yes else have_ld_version_script=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext else have_ld_version_script=no fi rm -f conftest.map LDFLAGS="$save_LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ld_version_script" >&5 $as_echo "$have_ld_version_script" >&6; } fi if test "$have_ld_version_script" = "yes"; then HAVE_LD_VERSION_SCRIPT_TRUE= HAVE_LD_VERSION_SCRIPT_FALSE='#' else HAVE_LD_VERSION_SCRIPT_TRUE='#' HAVE_LD_VERSION_SCRIPT_FALSE= fi CFLAG_VISIBILITY= HAVE_VISIBILITY=0 if test -n "$GCC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5 $as_echo_n "checking whether the -Werror option is usable... " >&6; } if ${gl_cv_cc_vis_werror+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_vis_werror=yes else gl_cv_cc_vis_werror=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5 $as_echo "$gl_cv_cc_vis_werror" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5 $as_echo_n "checking for simple visibility declarations... " >&6; } if ${gl_cv_cc_visibility+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" if test $gl_cv_cc_vis_werror = yes; then CFLAGS="$CFLAGS -Werror" fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ extern __attribute__((__visibility__("hidden"))) int hiddenvar; extern __attribute__((__visibility__("default"))) int exportedvar; extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); extern __attribute__((__visibility__("default"))) int exportedfunc (void); void dummyfunc (void) {} int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_visibility=yes else gl_cv_cc_visibility=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5 $as_echo "$gl_cv_cc_visibility" >&6; } if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" HAVE_VISIBILITY=1 fi fi cat >>confdefs.h <<_ACEOF #define HAVE_VISIBILITY $HAVE_VISIBILITY _ACEOF STDDEF_H= if test $gt_cv_c_wchar_t = no; then HAVE_WCHAR_T=0 STDDEF_H=stddef.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5 $as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; } if ${gl_cv_decl_null_works+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int test[2 * (sizeof NULL == sizeof (void *)) -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_decl_null_works=yes else gl_cv_decl_null_works=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5 $as_echo "$gl_cv_decl_null_works" >&6; } if test $gl_cv_decl_null_works = no; then REPLACE_NULL=1 STDDEF_H=stddef.h fi if test -n "$STDDEF_H"; then GL_GENERATE_STDDEF_H_TRUE= GL_GENERATE_STDDEF_H_FALSE='#' else GL_GENERATE_STDDEF_H_TRUE='#' GL_GENERATE_STDDEF_H_FALSE= fi if test -n "$STDDEF_H"; then if test $gl_cv_have_include_next = yes; then gl_cv_next_stddef_h='<'stddef.h'>' else { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 $as_echo_n "checking absolute name of ... " >&6; } if ${gl_cv_next_stddef_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac case "$host_os" in mingw*) gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' gl_header_literal_regex=`echo 'stddef.h' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ s|^/[^/]|//&| p q }' gl_cv_next_stddef_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | sed -n "$gl_absolute_header_sed"`'"' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5 $as_echo "$gl_cv_next_stddef_h" >&6; } fi NEXT_STDDEF_H=$gl_cv_next_stddef_h if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'stddef.h'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=$gl_cv_next_stddef_h fi NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive fi for ac_func in strverscmp do : ac_fn_c_check_func "$LINENO" "strverscmp" "ac_cv_func_strverscmp" if test "x$ac_cv_func_strverscmp" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRVERSCMP 1 _ACEOF fi done if test $ac_cv_func_strverscmp = no; then HAVE_STRVERSCMP=0 fi if test $HAVE_STRVERSCMP = 0; then lgl_LIBOBJS="$lgl_LIBOBJS strverscmp.$ac_objext" : fi GNULIB_STRVERSCMP=1 $as_echo "#define GNULIB_TEST_STRVERSCMP 1" >>confdefs.h # End of code from modules gltests_libdeps= gltests_ltlibdeps= gl_source_base='tests' lgltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS gl_module_indicator_condition=$lgltests_WITNESS # Check whether --enable-gcc-warnings was given. if test "${enable_gcc_warnings+set}" = set; then : enableval=$enable_gcc_warnings; case $enableval in yes|no) ;; *) as_fn_error $? "bad value $enableval for gcc-warnings option" "$LINENO" 5 ;; esac gl_gcc_warnings=$enableval else gl_gcc_warnings=no fi if test "$gl_gcc_warnings" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Werror" >&5 $as_echo_n "checking whether C compiler handles -Werror... " >&6; } if ${gl_cv_warn_c__Werror+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_warn_c__Werror=yes else gl_cv_warn_c__Werror=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Werror" >&5 $as_echo "$gl_cv_warn_c__Werror" >&6; } if test "x$gl_cv_warn_c__Werror" = xyes; then : as_fn_append WERROR_CFLAGS " -Werror" fi nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings nw="$nw -Wc++-compat" # We don't care strongly about C++ compilers nw="$nw -Wtraditional" # Warns on #elif which we use often nw="$nw -Wtraditional-conversion" # Too many warnings for now nw="$nw -Wconversion" # Too many warnings for now nw="$nw -Wsign-conversion" # Too many warnings for now nw="$nw -Wold-style-definition" # nw="$nw -Wpadded" # Our structs are not padded nw="$nw -Wundef" # nw="$nw -Wunreachable-code" # Too many false positives nw="$nw -Wunused-macros" # Breaks on bison generated ASN1.c nw="$nw -Wswitch-default" # Breaks on bison generated ASN1.c nw="$nw -Wunsafe-loop-optimizations" nw="$nw -Wstrict-overflow" nw="$nw -Wsuggest-attribute=pure" # Is it worth using pure attributes? if test -n "$GCC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -Wno-missing-field-initializers is supported" >&5 $as_echo_n "checking whether -Wno-missing-field-initializers is supported... " >&6; } if ${gl_cv_cc_nomfi_supported+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_nomfi_supported=yes else gl_cv_cc_nomfi_supported=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_nomfi_supported" >&5 $as_echo "$gl_cv_cc_nomfi_supported" >&6; } if test "$gl_cv_cc_nomfi_supported" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -Wno-missing-field-initializers is needed" >&5 $as_echo_n "checking whether -Wno-missing-field-initializers is needed... " >&6; } if ${gl_cv_cc_nomfi_needed+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -W -Werror" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ void f (void) { typedef struct { int a; int b; } s_t; s_t s1 = { 0, }; } int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_nomfi_needed=no else gl_cv_cc_nomfi_needed=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_nomfi_needed" >&5 $as_echo "$gl_cv_cc_nomfi_needed" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -Wuninitialized is supported" >&5 $as_echo_n "checking whether -Wuninitialized is supported... " >&6; } if ${gl_cv_cc_uninitialized_supported+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -Wuninitialized" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_cc_uninitialized_supported=yes else gl_cv_cc_uninitialized_supported=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_CFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_uninitialized_supported" >&5 $as_echo "$gl_cv_cc_uninitialized_supported" >&6; } fi # List all gcc warning categories. gl_manywarn_set= for gl_manywarn_item in \ -W \ -Wabi \ -Waddress \ -Wall \ -Warray-bounds \ -Wattributes \ -Wbad-function-cast \ -Wbuiltin-macro-redefined \ -Wcast-align \ -Wchar-subscripts \ -Wclobbered \ -Wcomment \ -Wcomments \ -Wcoverage-mismatch \ -Wcpp \ -Wdeprecated \ -Wdeprecated-declarations \ -Wdisabled-optimization \ -Wdiv-by-zero \ -Wdouble-promotion \ -Wempty-body \ -Wendif-labels \ -Wenum-compare \ -Wextra \ -Wformat-contains-nul \ -Wformat-extra-args \ -Wformat-nonliteral \ -Wformat-security \ -Wformat-y2k \ -Wformat-zero-length \ -Wformat=2 \ -Wfree-nonheap-object \ -Wignored-qualifiers \ -Wimplicit \ -Wimplicit-function-declaration \ -Wimplicit-int \ -Winit-self \ -Winline \ -Wint-to-pointer-cast \ -Winvalid-memory-model \ -Winvalid-pch \ -Wjump-misses-init \ -Wlogical-op \ -Wmain \ -Wmaybe-uninitialized \ -Wmissing-braces \ -Wmissing-declarations \ -Wmissing-field-initializers \ -Wmissing-format-attribute \ -Wmissing-include-dirs \ -Wmissing-noreturn \ -Wmissing-parameter-type \ -Wmissing-prototypes \ -Wmudflap \ -Wmultichar \ -Wnarrowing \ -Wnested-externs \ -Wnonnull \ -Wnormalized=nfc \ -Wold-style-declaration \ -Wold-style-definition \ -Woverflow \ -Woverlength-strings \ -Woverride-init \ -Wpacked \ -Wpacked-bitfield-compat \ -Wparentheses \ -Wpointer-arith \ -Wpointer-sign \ -Wpointer-to-int-cast \ -Wpragmas \ -Wreturn-type \ -Wsequence-point \ -Wshadow \ -Wsizeof-pointer-memaccess \ -Wstack-protector \ -Wstrict-aliasing \ -Wstrict-overflow \ -Wstrict-prototypes \ -Wsuggest-attribute=const \ -Wsuggest-attribute=format \ -Wsuggest-attribute=noreturn \ -Wsuggest-attribute=pure \ -Wswitch \ -Wswitch-default \ -Wsync-nand \ -Wsystem-headers \ -Wtrampolines \ -Wtrigraphs \ -Wtype-limits \ -Wuninitialized \ -Wunknown-pragmas \ -Wunreachable-code \ -Wunsafe-loop-optimizations \ -Wunused \ -Wunused-but-set-parameter \ -Wunused-but-set-variable \ -Wunused-function \ -Wunused-label \ -Wunused-local-typedefs \ -Wunused-macros \ -Wunused-parameter \ -Wunused-result \ -Wunused-value \ -Wunused-variable \ -Wvarargs \ -Wvariadic-macros \ -Wvector-operation-performance \ -Wvla \ -Wvolatile-register-var \ -Wwrite-strings \ \ ; do gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" done # Disable specific options as needed. if test "$gl_cv_cc_nomfi_needed" = yes; then gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers" fi if test "$gl_cv_cc_uninitialized_supported" = no; then gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized" fi ws=$gl_manywarn_set gl_warn_set= set x $ws; shift for gl_warn_item do case " $nw " in *" $gl_warn_item "*) ;; *) gl_warn_set="$gl_warn_set $gl_warn_item" ;; esac done ws=$gl_warn_set for w in $ws; do as_gl_Warn=`$as_echo "gl_cv_warn_c_$w" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles $w" >&5 $as_echo_n "checking whether C compiler handles $w... " >&6; } if eval \${$as_gl_Warn+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " $w" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_gl_Warn=yes" else eval "$as_gl_Warn=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi eval ac_res=\$$as_gl_Warn { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_gl_Warn"\" = x"yes"; then : as_fn_append WARN_CFLAGS " $w" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-type-limits" >&5 $as_echo_n "checking whether C compiler handles -Wno-type-limits... " >&6; } if ${gl_cv_warn_c__Wno_type_limits+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " -Wno-type-limits" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_warn_c__Wno_type_limits=yes else gl_cv_warn_c__Wno_type_limits=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_type_limits" >&5 $as_echo "$gl_cv_warn_c__Wno_type_limits" >&6; } if test "x$gl_cv_warn_c__Wno_type_limits" = xyes; then : as_fn_append WARN_CFLAGS " -Wno-type-limits" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-missing-field-initializers" >&5 $as_echo_n "checking whether C compiler handles -Wno-missing-field-initializers... " >&6; } if ${gl_cv_warn_c__Wno_missing_field_initializers+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " -Wno-missing-field-initializers" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_warn_c__Wno_missing_field_initializers=yes else gl_cv_warn_c__Wno_missing_field_initializers=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_missing_field_initializers" >&5 $as_echo "$gl_cv_warn_c__Wno_missing_field_initializers" >&6; } if test "x$gl_cv_warn_c__Wno_missing_field_initializers" = xyes; then : as_fn_append WARN_CFLAGS " -Wno-missing-field-initializers" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-unused-parameter" >&5 $as_echo_n "checking whether C compiler handles -Wno-unused-parameter... " >&6; } if ${gl_cv_warn_c__Wno_unused_parameter+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " -Wno-unused-parameter" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_warn_c__Wno_unused_parameter=yes else gl_cv_warn_c__Wno_unused_parameter=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_unused_parameter" >&5 $as_echo "$gl_cv_warn_c__Wno_unused_parameter" >&6; } if test "x$gl_cv_warn_c__Wno_unused_parameter" = xyes; then : as_fn_append WARN_CFLAGS " -Wno-unused-parameter" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wno-stack-protector" >&5 $as_echo_n "checking whether C compiler handles -Wno-stack-protector... " >&6; } if ${gl_cv_warn_c__Wno_stack_protector+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " -Wno-stack-protector" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_warn_c__Wno_stack_protector=yes else gl_cv_warn_c__Wno_stack_protector=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wno_stack_protector" >&5 $as_echo "$gl_cv_warn_c__Wno_stack_protector" >&6; } if test "x$gl_cv_warn_c__Wno_stack_protector" = xyes; then : as_fn_append WARN_CFLAGS " -Wno-stack-protector" fi # Some functions cannot be protected { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -fdiagnostics-show-option" >&5 $as_echo_n "checking whether C compiler handles -fdiagnostics-show-option... " >&6; } if ${gl_cv_warn_c__fdiagnostics_show_option+:} false; then : $as_echo_n "(cached) " >&6 else gl_save_compiler_FLAGS="$CFLAGS" as_fn_append CFLAGS " -fdiagnostics-show-option" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : gl_cv_warn_c__fdiagnostics_show_option=yes else gl_cv_warn_c__fdiagnostics_show_option=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$gl_save_compiler_FLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__fdiagnostics_show_option" >&5 $as_echo "$gl_cv_warn_c__fdiagnostics_show_option" >&6; } if test "x$gl_cv_warn_c__fdiagnostics_show_option" = xyes; then : as_fn_append WARN_CFLAGS " -fdiagnostics-show-option" fi fi ac_config_files="$ac_config_files Makefile doc/Makefile doc/cyclo/Makefile doc/reference/Makefile doc/reference/version.xml examples/Makefile gl/Makefile lib/Makefile lib/gllib/Makefile lib/libtasn1.pc src/Makefile tests/Makefile" 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= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$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 "${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 if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_GENERATE_ERRNO_H_TRUE}" && test -z "${GL_GENERATE_ERRNO_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_ERRNO_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi CONFIG_INCLUDE=config.h if test -z "${GL_GENERATE_STDARG_H_TRUE}" && test -z "${GL_GENERATE_STDARG_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_STDARG_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi gl_libobjs= gl_ltlibobjs= if test -n "$gl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gl_libobjs="$gl_libobjs $i.$ac_objext" gl_ltlibobjs="$gl_ltlibobjs $i.lo" done fi gl_LIBOBJS=$gl_libobjs gl_LTLIBOBJS=$gl_ltlibobjs gltests_libobjs= gltests_ltlibobjs= if test -n "$gltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gltests_libobjs="$gltests_libobjs $i.$ac_objext" gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" done fi gltests_LIBOBJS=$gltests_libobjs gltests_LTLIBOBJS=$gltests_ltlibobjs if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LD_VERSION_SCRIPT_TRUE}" && test -z "${HAVE_LD_VERSION_SCRIPT_FALSE}"; then as_fn_error $? "conditional \"HAVE_LD_VERSION_SCRIPT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi lgl_libobjs= lgl_ltlibobjs= if test -n "$lgl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $lgl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do lgl_libobjs="$lgl_libobjs $i.$ac_objext" lgl_ltlibobjs="$lgl_ltlibobjs $i.lo" done fi lgl_LIBOBJS=$lgl_libobjs lgl_LTLIBOBJS=$lgl_ltlibobjs lgltests_libobjs= lgltests_ltlibobjs= if test -n "$lgltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $lgltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do lgltests_libobjs="$lgltests_libobjs $i.$ac_objext" lgltests_ltlibobjs="$lgltests_ltlibobjs $i.lo" done fi lgltests_LIBOBJS=$lgltests_libobjs lgltests_LTLIBOBJS=$lgltests_ltlibobjs : "${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 GNU Libtasn1 $as_me 3.4, 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_links="$ac_config_links" 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 links: $config_links Configuration commands: $config_commands Report bugs to . GNU Libtasn1 home page: . General help using GNU software: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ GNU Libtasn1 config.status 3.4 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" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' GNUmakefile=$GNUmakefile _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "$GNUmakefile") CONFIG_LINKS="$CONFIG_LINKS $GNUmakefile:$GNUmakefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/cyclo/Makefile") CONFIG_FILES="$CONFIG_FILES doc/cyclo/Makefile" ;; "doc/reference/Makefile") CONFIG_FILES="$CONFIG_FILES doc/reference/Makefile" ;; "doc/reference/version.xml") CONFIG_FILES="$CONFIG_FILES doc/reference/version.xml" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "gl/Makefile") CONFIG_FILES="$CONFIG_FILES gl/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "lib/gllib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/gllib/Makefile" ;; "lib/libtasn1.pc") CONFIG_FILES="$CONFIG_FILES lib/libtasn1.pc" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links 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 :L $CONFIG_LINKS :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 ;; :L) # # CONFIG_LINK # if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then : else # Prefer the file from the source tree if names are identical. if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then ac_source=$srcdir/$ac_source fi { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 $as_echo "$as_me: linking $ac_source to $ac_file" >&6;} if test ! -r "$ac_source"; then as_fn_error $? "$ac_source: file not found" "$LINENO" 5 fi rm -f "$ac_file" # Try a relative symlink, then a hard link, then a copy. case $ac_source in [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; *) ac_rel_source=$ac_top_build_prefix$ac_source ;; esac ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || ln "$ac_source" "$ac_file" 2>/dev/null || cp -p "$ac_source" "$ac_file" || as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 fi ;; :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. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool 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. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; 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 { $as_echo "$as_me:${as_lineno-$LINENO}: summary of build options: version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE Host type: ${host} Install prefix: ${prefix} Compiler: ${CC} Warning flags: errors: ${WERROR_CFLAGS} warnings: ${WARN_CFLAGS} Library types: Shared=${enable_shared}, Static=${enable_static} Valgrind: ${VALGRIND} Version script: $have_ld_version_script " >&5 $as_echo "$as_me: summary of build options: version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE Host type: ${host} Install prefix: ${prefix} Compiler: ${CC} Warning flags: errors: ${WERROR_CFLAGS} warnings: ${WARN_CFLAGS} Library types: Shared=${enable_shared}, Static=${enable_static} Valgrind: ${VALGRIND} Version script: $have_ld_version_script " >&6;} libtasn1-3.4/ChangeLog0000664000000000000000000000000012244720652011532 00000000000000libtasn1-3.4/tests/0000775000000000000000000000000012244722065011214 500000000000000libtasn1-3.4/tests/Test_tree_asn1_tab.c0000664000000000000000000001213512244720630015004 00000000000000#if HAVE_CONFIG_H # include "config.h" #endif #include const asn1_static_node Test_tree_asn1_tab[] = { { "TEST_TREE", 536875024, NULL }, { NULL, 1610612748, NULL }, { "iso", 1073741825, "1"}, { "identified-organization", 1073741825, "3"}, { "dod", 1073741825, "6"}, { "internet", 1073741825, "1"}, { "security", 1073741825, "5"}, { "mechanisms", 1073741825, "5"}, { "pkix", 1073741825, "7"}, { "id-mod", 1073741825, "0"}, { "id-pkix1-implicit-88", 1, "2"}, { "KrbError", 1610620933, NULL }, { NULL, 1073746952, "30"}, { "pvno", 536879107, NULL }, { NULL, 4104, "0"}, { "Checksum", 1610612741, NULL }, { "checksum", 536879111, NULL }, { NULL, 4104, "1"}, { "CertTemplate", 1610612741, NULL }, { "version", 1610637315, NULL }, { NULL, 4104, "0"}, { "issuer", 1610637314, "Name"}, { NULL, 4104, "3"}, { "validity", 536895491, NULL }, { NULL, 4104, "4"}, { "Name", 1610612754, NULL }, { "rdnSequence", 2, "RDNSequence"}, { "RDNSequence", 1073741826, "RelativeDistinguishedName"}, { "RelativeDistinguishedName", 1612709903, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "AttributeTypeAndValue"}, { "AttributeTypeAndValue", 1610612741, NULL }, { "type", 1073741826, "AttributeType"}, { "value", 2, "AttributeValue"}, { "AttributeType", 1073741836, NULL }, { "AttributeValue", 1073741837, NULL }, { "sequenceEmpty", 1610612741, NULL }, { "int1", 1073741827, NULL }, { "seq1", 1610620930, "Sequence_octetTest1"}, { NULL, 4104, "1"}, { "set1", 536879119, NULL }, { NULL, 1073743880, "2"}, { NULL, 3, NULL }, { "IndefiniteLengthTest", 1610612741, NULL }, { "seq1", 1610620930, "Sequence_octetTest1"}, { NULL, 4104, "1"}, { "set1", 1610612751, NULL }, { NULL, 12, NULL }, { "int1", 3, NULL }, { "OidTest", 1610612741, NULL }, { "oid3", 1610653708, NULL }, { NULL, 1073741833, "id-Test"}, { NULL, 4104, "3"}, { "oid", 1610653708, NULL }, { NULL, 1073741833, "id-anyTest2"}, { NULL, 4104, "1"}, { "oid2", 536911884, NULL }, { NULL, 1073741833, "id-anyTest"}, { NULL, 4104, "2"}, { "OidAndTimeTest", 1610612741, NULL }, { "set", 1610612751, NULL }, { NULL, 3, NULL }, { "oid", 1073741836, NULL }, { "time2", 1082130449, NULL }, { "bol", 1073741828, NULL }, { "oct", 1073741831, NULL }, { "bit", 1073758214, NULL }, { "bol2", 1610645508, NULL }, { NULL, 65545, NULL }, { "enum", 1610907669, NULL }, { NULL, 1073741833, "v1"}, { "v1", 1073741825, "1"}, { "v2", 1, "2"}, { "any", 1610637325, NULL }, { NULL, 4104, "1"}, { "gen", 1073758235, NULL }, { "time1", 16777233, NULL }, { "SequenceTestTag", 1610612741, NULL }, { "int1", 1610620931, NULL }, { NULL, 2056, "2"}, { "int2", 1610620931, NULL }, { NULL, 4104, "3"}, { "str1", 1610620959, NULL }, { NULL, 4104, "1"}, { "str2", 1073741856, NULL }, { "str3", 536879136, NULL }, { NULL, 2056, "2"}, { "Sequence1", 1610612741, NULL }, { "int1", 1610915843, NULL }, { NULL, 1073741833, "v2"}, { NULL, 1073745928, "0"}, { "v1", 1073741825, "0"}, { "v2", 1073741825, "1"}, { "v3", 1, "2"}, { "int2", 1073741827, NULL }, { "seq", 1610612751, NULL }, { NULL, 3, NULL }, { "id", 1073741836, NULL }, { "oct", 1073741831, NULL }, { "any1", 541081613, NULL }, { "id", 1, NULL }, { "DHParameter", 1610612741, NULL }, { "prime", 1073741827, NULL }, { "base", 1073741827, NULL }, { "privateValueLength", 16387, NULL }, { "id-octetTest1", 1879048204, NULL }, { NULL, 1073741825, "1"}, { NULL, 1073741825, "2"}, { NULL, 1073741825, "3"}, { NULL, 1, "4"}, { "Sequence_octetTest1", 1610612741, NULL }, { "int", 16387, NULL }, { "AnyTest2", 1610612754, NULL }, { "str", 1073741831, NULL }, { "int", 3, NULL }, { "id-ic", 1879048204, NULL }, { NULL, 1073741825, "2"}, { NULL, 1, "5"}, { "id-anyTest", 1879048204, NULL }, { NULL, 1073741825, "id-ic"}, { NULL, 1073741825, "29"}, { NULL, 1, "1"}, { "id-anyTest2", 1879048204, NULL }, { NULL, 1073741825, "id-ic"}, { NULL, 1073741825, "29"}, { NULL, 1, "2"}, { "anyTest2", 1073741827, NULL }, { "VisibleString", 1610620935, NULL }, { NULL, 4360, "26"}, { "NumericString", 1610620935, NULL }, { NULL, 4360, "18"}, { "IA5String", 1610620935, NULL }, { NULL, 4360, "22"}, { "TeletexString", 1610620935, NULL }, { NULL, 4360, "20"}, { "PrintableString", 1610620935, NULL }, { NULL, 4360, "19"}, { "UniversalString", 1610620935, NULL }, { NULL, 4360, "28"}, { "BMPString", 1610620935, NULL }, { NULL, 4360, "30"}, { "UTF8String", 1610620935, NULL }, { NULL, 4360, "12"}, { "Test3", 1610612741, NULL }, { "a", 1073741827, NULL }, { "b", 536879106, "GeneralString2"}, { NULL, 2056, "1"}, { "GeneralString2", 1610620955, NULL }, { NULL, 2056, "2"}, { "X520LocalityName", 1610612754, NULL }, { "teletexString", 1073741854, NULL }, { "printableString", 1073741855, NULL }, { "universalString", 1073741856, NULL }, { "utf8String", 1073741858, NULL }, { "bmpString", 33, NULL }, { "id-Test", 805306380, NULL }, { NULL, 1073741825, "1"}, { NULL, 1073741825, "2"}, { NULL, 1073741825, "29"}, { NULL, 1, "2"}, { NULL, 0, NULL } }; libtasn1-3.4/tests/Test_indefinite.c0000664000000000000000000000654112244720630014417 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: Test_tree.c */ /* Description: Test sequences for these functions: */ /* asn1_visit_tree, */ /* asn1_create_element, */ /* asn1_delete_structure, */ /* asn1_write_value, */ /* asn1_read_value, */ /*****************************************************/ #include #include #include #include "libtasn1.h" int main (int argc, char *argv[]) { int result; char buffer[10 * 1024]; asn1_node definitions = NULL; asn1_node asn1_element = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; FILE *out, *fd; ssize_t size; const char *treefile = getenv ("ASN1PKIX"); const char *indeffile = getenv ("ASN1INDEF"); int verbose = 0; if (argc > 1) verbose = 1; if (!treefile) treefile = "pkix.asn"; if (!indeffile) indeffile = "TestIndef.p12"; if (verbose) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : Test_indefinite */\n"); printf ("/****************************************/\n\n"); printf ("ASN1TREE: %s\n", treefile); } /* Check version */ if (asn1_check_version ("0.2.11") == NULL) printf ("\nLibrary version check ERROR:\n actual version: %s\n\n", asn1_check_version (NULL)); result = asn1_parser2tree (treefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } out = stdout; fd = fopen (indeffile, "rb"); if (fd == NULL) { printf ("Cannot read file %s\n", indeffile); exit (1); } size = fread (buffer, 1, sizeof (buffer), fd); if (size <= 0) { printf ("Cannot read from file %s\n", indeffile); exit (1); } fclose (fd); result = asn1_create_element (definitions, "PKIX1.pkcs-12-PFX", &asn1_element); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot create PKCS12 element\n"); exit (1); } result = asn1_der_decoding (&asn1_element, buffer, size, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("Cannot decode BER data (size %ld)\n", (long) size); exit (1); } /* Clear the definition structures */ asn1_delete_structure (&definitions); asn1_delete_structure (&asn1_element); if (out != stdout) fclose (out); exit (0); } libtasn1-3.4/tests/Test_errors.c0000664000000000000000000000202412244720630013605 00000000000000/* * Copyright (C) 2010-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "libtasn1.h" int main (int argc, char *argv[]) { int ec = 0; const char *errstr; int verbose = 0; if (argc > 1) verbose = 1; do { errstr = asn1_strerror (ec); if (verbose != 0) asn1_perror (ec); ec++; } while (errstr); return 0; } libtasn1-3.4/tests/Test_encoding.asn0000664000000000000000000000166512244720630014430 00000000000000-- -- File used in the test sequence Test_encoding. -- TEST_TREE { } DEFINITIONS IMPLICIT TAGS ::= BEGIN Koko ::= SEQUENCE { seqint SEQUENCE OF INTEGER, int INTEGER, str OCTET STRING } END -- Copyright (C) 2002-2013 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-3.4/tests/crlf.cer0000664000000000000000000000143412244720630012553 000000000000000‚0‚ D0  *†H†÷ 0=10UHash Collision CA10U Eindhoven1 0 UNL0 050101000001Z 150101000001Z0=10UHash Collision CA10U Eindhoven1 0 UNL0‚"0  *†H†÷ ‚0‚ ‚ÊpúÄ@û´ŽäZ©wu‘tYÒh¹0F[¡ÜµJ(*(H·xºàgp Íd,°W »‰Vß# £Æåß®ïSؽÁdôËå.GªXnÿó²Ÿ ½B9Ldcwï=â÷¾›b™7Eh¹Qj2ñ{Ô¤ê;¤r=/¡ ò4B ùP@ÓÎ í_`Û &FŸ+Ÿb:a€3–Ÿ÷¬k’¤”Á'¦y³«·!Hd7T-ÆÐ]§¶ÐYÎG ³„I7HY•¡èó4ÏÊ1Ö¤ü¤‡W<šBjPƒo•YºM·jh`•¹¸dÞÖ½íSEÛì8@Û¬K ºÌ Åu<(…ôSýR'@C Q£ 00U0ÿ0 U0  *†H†÷ ‚>3ªc‹=jñÕ64@ŠÁSäíŠI¯É ,Ͼ{×ôDF5K¹¹°Œbm[ rümåxšÛ¡Ð½Ù¿$óÛ"`¦ yBV†¥\‘=nGÏþ\‘Ú„T(dS*;XßRš®&¯)]mçú"¤Xû?/ˆ9ŒøId· !Ðß\ëQ¶ì»¡cm-o¢xí=dmð“Þ¶¡à…ÛE(¬³áúDOCñÇÖétÁ_E‘œ‚¡îϽó¢0t°ÓDC`°ªá9%<úL×îÅ$Ÿo¦ ƒõ:!Ö·Q;ž .°õɦé'Ôë…ÇNpgz•k‰Ê3ž×™libtasn1-3.4/tests/Test_parser.c0000664000000000000000000001525112244720630013573 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: Test_parser.c */ /* Description: Test sequences for these functions: */ /* asn1_parser_asn1, */ /*****************************************************/ #include #include #include #include "libtasn1.h" typedef struct { int lineNumber; const char *line; int errorNumber; const char *errorDescription; } test_type; const char *fileCorrectName; char fileErroredName[] = "Test_parser_ERROR.asn"; #define _FILE_ "Test_parser_ERROR.asn" test_type test_array[] = { /* Test DEFINITIONS syntax */ {5, "TEST_PARSER2 { } DEFINITIONS IMPLICIT TAGS ::= BEGIN int1 ::= INTEGER END", ASN1_SYNTAX_ERROR, _FILE_ ":6: Error: syntax error, unexpected IDENTIFIER, expecting $end near 'TEST_PARSER'"}, {6, "TEST_PARSER { }", ASN1_SUCCESS, ""}, /* Test ASN1_MAX_NAME_SIZE (128) */ {12, "a123456789012345678901234567890123456789012345678901234567890123 ::= INTEGER", ASN1_SUCCESS, ""}, {12, "a1234567890123456789012345678901234567890123456789012345678901234 ::= INTEGER", ASN1_NAME_TOO_LONG, _FILE_ ":12: name too long (more than 64 characters)"}, /* Test 'check identifier' function */ {12, "ident1 ::= ident2 ident2 ::= INTEGER", ASN1_SUCCESS, ""}, {12, "ident1 ::= ident2", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier 'ident2' not found"}, {12, "obj1 OBJECT IDENTIFIER ::= {pkix 0 5 4} " "pkix OBJECT IDENTIFIER ::= {1 2}", ASN1_SUCCESS, ""}, {12, "obj1 OBJECT IDENTIFIER ::= {pkix 0 5 4}", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier 'pkix' not found"}, /* Test INTEGER */ {14, "int1 INTEGER (-5..5),", ASN1_SUCCESS, ""}, {14, "int1 INTEGER OPTIONAL,", ASN1_SUCCESS, ""}, {14, "int1 INTEGER DEFAULT 1,", ASN1_SUCCESS, ""}, {14, "int1 INTEGER DEFAULT -1,", ASN1_SUCCESS, ""}, {14, "int1 INTEGER DEFAULT v1,", ASN1_SUCCESS, ""}, {14, "int1 [1] INTEGER,", ASN1_SUCCESS, ""}, {14, "int1 [1] EXPLICIT INTEGER,", ASN1_SUCCESS, ""}, {14, "int1 [1] IMPLICIT INTEGER,", ASN1_SUCCESS, ""}, {12, "Integer ::= [1] EXPLICIT INTEGER {v1(-1), v2(1)}", ASN1_SUCCESS, ""}, {12, "Integer ::= INTEGER {v1(0), v2}", ASN1_SYNTAX_ERROR, _FILE_ ":12: Error: syntax error, unexpected '}', expecting '(' near '}'"}, {12, "Integer ::= INTEGER {v1(0), 1}", ASN1_SYNTAX_ERROR, _FILE_ ":12: Error: syntax error, unexpected NUM, expecting IDENTIFIER or '(' near '1'"}, {12, "const1 INTEGER ::= -1", ASN1_SUCCESS, ""}, {12, "const1 INTEGER ::= 1", ASN1_SUCCESS, ""}, {12, "const1 INTEGER ::= v1", ASN1_SYNTAX_ERROR, _FILE_ ":12: Error: syntax error, unexpected IDENTIFIER, expecting NUM or '+' or '-' near 'v1'"}, {16, " generic generalstring", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier 'generalstring' not found"}, /* Test: OID */ {20, " oid1 OBJECT IDENTIFIER DEFAULT Oid-type", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier 'Oid-type' not found"}, {20, " oid1 OBJECT IDENTIFIER DEFAULT 1", ASN1_IDENTIFIER_NOT_FOUND, _FILE_ ":: identifier '1' not found"}, {20, " oid1 OBJECT IDENTIFIER DEFAULT", ASN1_SYNTAX_ERROR, _FILE_ ":21: Error: syntax error, unexpected '}' near '}'"}, {20, " oid1 OBJECT IDENTIFIER DEFAULT Oid-type1", ASN1_SUCCESS, ""}, /* end */ {0} }; static int readLine (FILE * file, char *line) { int c; while (((c = fgetc (file)) != EOF) && (c != '\n')) { *line = c; line++; } *line = 0; return c; } static void createFile (int lineNumber, const char *line) { FILE *fileIn, *fileOut; char lineRead[1024]; int fileInLineNumber = 0; fileIn = fopen (fileCorrectName, "r"); fileOut = fopen (fileErroredName, "w"); while (readLine (fileIn, lineRead) != EOF) { fileInLineNumber++; if (fileInLineNumber == lineNumber) fprintf (fileOut, "%s\n", line); else fprintf (fileOut, "%s\n", lineRead); } fclose (fileOut); fclose (fileIn); } int main (int argc, char *argv[]) { int result; asn1_node definitions = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; test_type *test; int errorCounter = 0, testCounter = 0; int verbose = 0; if (argc > 1) verbose = 1; fileCorrectName = getenv ("ASN1PARSER"); if (!fileCorrectName) fileCorrectName = "Test_parser.asn"; if (verbose != 0) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : Test_parser */\n"); printf ("/****************************************/\n\n"); printf ("ASN1PARSER: %s\n", fileCorrectName); } result = asn1_parser2tree (fileCorrectName, &definitions, errorDescription); if (result != ASN1_SUCCESS) { printf ("File '%s' not correct\n", fileCorrectName); asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } /* Only for Test */ /* asn1_visit_tree(stdout,definitions,"TEST_PARSER",ASN1_PRINT_ALL); */ /* Clear the definitions structures */ asn1_delete_structure (&definitions); test = test_array; while (test->lineNumber != 0) { testCounter++; createFile (test->lineNumber, test->line); result = asn1_parser2tree (fileErroredName, &definitions, errorDescription); asn1_delete_structure (&definitions); if ((result != test->errorNumber) || (strcmp (errorDescription, test->errorDescription))) { errorCounter++; printf ("ERROR N. %d:\n", errorCounter); printf (" Line %d - %s\n", test->lineNumber, test->line); printf (" Error expected: %s - %s\n", asn1_strerror (test->errorNumber), test->errorDescription); printf (" Error detected: %s - %s\n\n", asn1_strerror (result), errorDescription); exit (1); } test++; } if (verbose != 0) { printf ("Total tests : %d\n", testCounter); printf ("Total errors: %d\n", errorCounter); } if (errorCounter > 0) return 1; exit (0); } libtasn1-3.4/tests/Test_tree.c0000664000000000000000000007736212244720650013253 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: Test_tree.c */ /* Description: Test sequences for these functions: */ /* asn1_visit_tree, */ /* asn1_create_element, */ /* asn1_delete_structure2, */ /* asn1_delete_structure, */ /* asn1_write_value, */ /* asn1_read_value, */ /*****************************************************/ #include #include #include #include "libtasn1.h" #include "Test_tree_asn1_tab.c" #define ACT_NULL 0 #define ACT_CREATE 1 #define ACT_DELETE 2 #define ACT_WRITE 3 #define ACT_READ 4 #define ACT_VISIT 5 #define ACT_ENCODING 6 #define ACT_DECODING 7 #define ACT_PRINT_DER 8 #define ACT_EXPAND_ANY 9 #define ACT_DECODING_ELEMENT 10 #define ACT_EXPAND_OCTET 11 #define ACT_NUMBER_OF_ELEMENTS 12 #define ACT_DECODING_START_END 13 #define ACT_READ_DEFINITIONS 14 #define ACT_READ_TAG_CLASS 15 #define ACT_OID_2_STRUCTURE 16 #define ACT_READ_LENGTH 17 #define ACT_ENCODING_LENGTH 18 #define ACT_READ_BIT 19 #define ACT_SET_DER 20 #define ACT_DELETE_ELEMENT 21 #define ACT_DELETE2 22 typedef struct { int action; const char *par1; const char *par2; int par3; int errorNumber; int line; } test_type; test_type test_array[] = { {ACT_DELETE, "", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, /* Test: APPLICATION 30 */ {ACT_CREATE, "TEST_TREE.KrbError", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "pvno", "5", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 5, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 4, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 5, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.KrbError", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "pvno", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "pvno", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_DELETE2, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: CHOICE */ {ACT_CREATE, "TEST_TREE.CertTemplate", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "version", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "validity", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer", "rdnSequence", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.3", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x18\x71\x75\x61\x73\x61\x72\x2e\x6c\x61\x73\x2e\x69\x63\x2e\x75\x6e\x69\x63\x61\x6d\x70\x2e\x62\x72", 26, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.7", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x08\x43\x61\x6d\x70\x69\x6e\x61\x73", 10, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.6", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x13\x06\x42\x72\x61\x73\x69\x6c", 8, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.10", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x02\x49\x43", 4, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.11", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x03\x4c\x41\x53", 5, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "2.5.4.8", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x0c\x09\x53\x61\x6f\x20\x50\x61\x75\x6c\x6f", 11, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.type", "1.2.840.113549.1.9.1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "issuer.rdnSequence.?LAST.value", "\x16\x19\x65\x64\x75\x61\x72\x64\x6f\x40\x6c\x61\x73\x2e\x69\x63\x2e\x75\x6e\x69\x63\x61\x6d\x70\x2e\x62\x72", 27, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 152, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 151, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 152, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.CertTemplate", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?1", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?1", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?3", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?5", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE_ELEMENT, "issuer.rdnSequence.?7", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: Empty sequnces */ {ACT_CREATE, "TEST_TREE.sequenceEmpty", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int1", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq1.int", NULL, 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 11, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 10, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 11, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.sequenceEmpty", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq1", "START", 5, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq1", "END", 6, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "set1", "START", 7, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "set1", "END", 10, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: Indefinite Length */ {ACT_CREATE, "TEST_TREE.IndefiniteLengthTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int1", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq1.int", "2", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set1", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set1.?LAST", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set1", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set1.?LAST", "1.2.5.6", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 255, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_SET_DER, "\x30\x18\xa1\x80\x02\x01\x02\x00\x00\x31\x80\x06\x03\x2a\x03\x04\x06\x03\x2a\x05\x06\x00\x00\x02\x01\x01", 0, 26, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.IndefiniteLengthTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq1", "START", 2, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq1", "END", 8, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "set1", "START", 9, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "set1", "END", 22, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: OID */ {ACT_CREATE, "TEST_TREE.OidTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "oid", NULL, 9, ASN1_MEM_ERROR, __LINE__}, {ACT_READ, "oid", "2.5.29.2", 9, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid2", "2.5.29.1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid3", "1.2.29.2", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 7, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 6, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 7, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.OidTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "oid", "START", 2, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "oid", "END", 6, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "", "START", 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "", "END", 6, ASN1_SUCCESS, __LINE__}, {ACT_READ, "oid2", "2.5.29.1", 9, ASN1_SUCCESS, __LINE__}, {ACT_READ, "oid3", "1.2.29.2", 9, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: ENCODING_LENGTH and READ_LEN */ {ACT_CREATE, "TEST_TREE.OidAndTimeTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oid", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "time1", "9801011200Z", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "time2", "2001010112001.12-0700", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oct", "ABCD", 4, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "bol", "TRUE", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "enum", "2", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "bit", "1\xC0", 10, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "any", "\x30\x01\x01", 3, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set.?LAST", "10", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set", "NEW", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "set.?LAST", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "gen", "Prova", 5, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "oid", NULL, 8, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "time1", NULL, 12, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "time2", NULL, 22, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "oct", NULL, 4, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "bol", NULL, 5, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "enum", NULL, 1, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "any", NULL, 3, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "gen", NULL, 5, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_LENGTH, "bit", NULL, 10, ASN1_MEM_ERROR, __LINE__}, {ACT_READ_BIT, "bit", "1\xC0", 10, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 79, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 78, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 79, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.OidAndTimeTest", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: OID to STRUCTURE */ {ACT_OID_2_STRUCTURE, "2.5.29.3", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_OID_2_STRUCTURE, "1.2.29.2", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_OID_2_STRUCTURE, "2.5.29.2", "anyTest2", 0, ASN1_SUCCESS, __LINE__}, /* Test: READ TAG and CLASS */ {ACT_CREATE, "TEST_TREE.SequenceTestTag", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "int", "", 0, ASN1_ELEMENT_NOT_FOUND, __LINE__}, {ACT_READ_TAG_CLASS, "int1", "TAG", ASN1_TAG_INTEGER, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "int1", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "int2", "TAG", 3, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "int2", "CLASS", ASN1_CLASS_CONTEXT_SPECIFIC, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str1", "TAG", 1, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str1", "CLASS", ASN1_CLASS_CONTEXT_SPECIFIC, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str2", "TAG", 28, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str2", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str3", "TAG", 28, ASN1_SUCCESS, __LINE__}, {ACT_READ_TAG_CLASS, "str3", "CLASS", ASN1_CLASS_UNIVERSAL, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: OBJECT IDENTIFIER elements */ {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int1", "v2", 0, ASN1_SUCCESS, __LINE__}, {ACT_READ, "int1", "\x01", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int2", "0", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oct", "\x02\x01\x0a", 3, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "id", "1 2 3 4 5", 0, ASN1_VALUE_NOT_VALID, __LINE__}, {ACT_WRITE, "id", "2.5.29.2", 0, ASN1_SUCCESS, __LINE__}, {ACT_READ, "id", "2.5.29.2", 9, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "id", NULL, 9, ASN1_MEM_ERROR, __LINE__}, {ACT_WRITE, "any1", "\x02\x01\x05", 3, ASN1_SUCCESS, __LINE__}, {ACT_READ_DEFINITIONS, "TEST_TREE.id-anyTest", "2.5.29.1", 9, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 20, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 19, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 200, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "id", "START", 7, ASN1_SUCCESS, __LINE__}, {ACT_READ, "id", "2.5.29.2", 9, ASN1_SUCCESS, __LINE__}, {ACT_EXPAND_ANY, "", NULL, 0, ASN1_SUCCESS, __LINE__}, {ACT_EXPAND_OCTET, "oct", "id", 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: CHOICE elements */ {ACT_CREATE, "TEST_TREE.X520LocalityName", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "", "teletexString", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "teletexString", "PROVA", 5, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 7, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 6, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 7, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.X520LocalityName", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: OPTIONAL elements */ {ACT_CREATE, "TEST_TREE.DHParameter", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "prime", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "base", "2", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "privateValueLength", NULL, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 8, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 7, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 8, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.DHParameter", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: Integer */ {ACT_CREATE, "TEST_TREE.AnyTest2", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "", "int", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "0", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 3, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 2, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 3, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "-1", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "2000000000", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "-2000000000", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "-20000000000", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int", "20000000000", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test: elements without names */ {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "int2", "10", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq", "NEW", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq.?LAST", "1", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq", "NEW", 1, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "seq.?LAST", "2", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "any1", NULL, 0, ASN1_SUCCESS, __LINE__}, {ACT_NUMBER_OF_ELEMENTS, "seq", "", 2, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "id", "1.2.3.4", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "oct", "\x30\x03\x02\x01\x15", 5, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "int2", 0, 1024, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING, "seq.?2", 0, 2, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "seq.?2", 0, 3, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 25, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 24, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 25, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_ELEMENT, "int2", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_READ, "int2", "\x0a", 1, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "int2", NULL, 1, ASN1_MEM_ERROR, __LINE__}, {ACT_CREATE, "TEST_TREE.Sequence1", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_START_END, "seq.?2", "START", 10, ASN1_SUCCESS, __LINE__}, {ACT_EXPAND_OCTET, "oct", "id", 0, ASN1_SUCCESS, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Test GeneralString */ {ACT_CREATE, "TEST_TREE.Test3", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "a", "1234", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "b", "prova", 5, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 17, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 16, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 17, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.Test3", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_ELEMENT, "b", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_READ, "b", "prova", 5, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "b", NULL, 5, ASN1_MEM_ERROR, __LINE__}, {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* Bug regression test: Empty write on 64-bit platforms */ {ACT_CREATE, "TEST_TREE.Checksum", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "checksum", "foo", 0, ASN1_SUCCESS, __LINE__}, {ACT_WRITE, "checksum", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_ENCODING_LENGTH, "", 0, 4, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 3, ASN1_MEM_ERROR, __LINE__}, {ACT_ENCODING, "", 0, 4, ASN1_SUCCESS, __LINE__}, {ACT_PRINT_DER, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_CREATE, "TEST_TREE.Checksum", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING, 0, 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_DECODING_ELEMENT, "checksum", 0, 0, ASN1_SUCCESS, __LINE__}, {ACT_READ, "checksum", "", 0, ASN1_SUCCESS, __LINE__}, {ACT_READ_LENGTH, "checksum", NULL, 0, ASN1_SUCCESS, __LINE__}, /* MEM_FAILURE? */ {ACT_VISIT, "", "", ASN1_PRINT_ALL, ASN1_SUCCESS, __LINE__}, {ACT_DELETE, "", "", 0, ASN1_SUCCESS, __LINE__}, /* end */ {ACT_NULL} }; #define error() fprintf(stderr, "Error at line %d\n", __LINE__); exit(1) int main (int argc, char *argv[]) { int result; asn1_node definitions = NULL; asn1_node asn1_element = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; FILE *out; test_type *test; int errorCounter = 0, testCounter = 0, der_len; unsigned char value[1024], der[1024]; int valueLen, tag = 0, class = 0; int k; int start, end, verbose = 0; const char *str_p = NULL; const char *treefile = getenv ("ASN1TREE"); if (argc > 1) verbose = 1; if (!treefile) treefile = "Test_tree.asn"; if (verbose != 0) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : Test_tree */\n"); printf ("/****************************************/\n\n"); printf ("ASN1TREE: %s\n", treefile); } /* Check version */ if (asn1_check_version ("0.2.11") == NULL) printf ("\nLibrary version check ERROR:\n actual version: %s\n\n", asn1_check_version (NULL)); if (1) result = asn1_parser2tree (treefile, &definitions, errorDescription); else result = asn1_array2tree (Test_tree_asn1_tab, &definitions, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } if (1) out = stdout; else out = fopen ("Test_tree.out", "w"); if (out == NULL) { printf ("Output file ERROR\n"); exit (1); } if (0) { asn1_print_structure (out, definitions, "TEST_TREE", ASN1_PRINT_ALL); fprintf (out, "\n"); } test = test_array; while (test->action != ACT_NULL) { testCounter++; switch (test->action) { case ACT_CREATE: result = asn1_create_element (definitions, test->par1, &asn1_element); break; case ACT_DELETE: result = asn1_delete_structure (&asn1_element); break; case ACT_DELETE2: result = asn1_delete_structure2 (&asn1_element, ASN1_DELETE_FLAG_ZEROIZE); break; case ACT_DELETE_ELEMENT: result = asn1_delete_element (asn1_element, test->par1); break; case ACT_WRITE: if ((test->par2) && (!strcmp ("DER", test->par2))) result = asn1_write_value (asn1_element, test->par1, der, der_len); else result = asn1_write_value (asn1_element, test->par1, test->par2, test->par3); break; case ACT_READ: case ACT_READ_BIT: valueLen = test->par3; result = asn1_read_value (asn1_element, test->par1, value, &valueLen); break; case ACT_READ_LENGTH: valueLen = 0; result = asn1_read_value (asn1_element, test->par1, NULL, &valueLen); break; case ACT_READ_DEFINITIONS: valueLen = 1024; result = asn1_read_value (definitions, test->par1, value, &valueLen); break; case ACT_READ_TAG_CLASS: result = asn1_read_tag (asn1_element, test->par1, &tag, &class); break; case ACT_ENCODING: der_len = test->par3; result = asn1_der_coding (asn1_element, test->par1, der, &der_len, errorDescription); break; case ACT_ENCODING_LENGTH: der_len = 0; result = asn1_der_coding (asn1_element, test->par1, NULL, &der_len, errorDescription); break; case ACT_DECODING: result = asn1_der_decoding (&asn1_element, der, der_len, errorDescription); break; case ACT_DECODING_ELEMENT: result = asn1_der_decoding_element (&asn1_element, test->par1, der, der_len, errorDescription); break; case ACT_DECODING_START_END: result = asn1_der_decoding_startEnd (asn1_element, der, der_len, test->par1, &start, &end); break; case ACT_EXPAND_ANY: result = asn1_expand_any_defined_by (definitions, &asn1_element); break; case ACT_EXPAND_OCTET: result = asn1_expand_octet_string (definitions, &asn1_element, test->par1, test->par2); break; case ACT_OID_2_STRUCTURE: str_p = asn1_find_structure_from_oid (definitions, test->par1); break; case ACT_VISIT: if (verbose) { asn1_print_structure (out, asn1_element, test->par1, test->par3); fprintf (out, "\n"); } result = ASN1_SUCCESS; break; case ACT_PRINT_DER: if (verbose) { printf ("DER encoding len:%i\n", der_len); printf ("DER encoding: "); for (k = 0; k < der_len; k++) printf ("%02x ", der[k]); printf ("\n\n"); } result = ASN1_SUCCESS; break; case ACT_SET_DER: der_len = test->par3; memcpy (der, test->par1, der_len); result = ASN1_SUCCESS; break; case ACT_NUMBER_OF_ELEMENTS: result = asn1_number_of_elements (asn1_element, test->par1, &valueLen); break; default: break; } switch (test->action) { case ACT_CREATE: case ACT_DELETE: case ACT_DELETE_ELEMENT: case ACT_WRITE: case ACT_VISIT: case ACT_ENCODING: case ACT_DECODING: case ACT_PRINT_DER: case ACT_EXPAND_ANY: case ACT_EXPAND_OCTET: case ACT_SET_DER: if (result != test->errorNumber) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s - %s - %d\n", test->action, test->par1, test->par2, test->par3); printf (" Error expected: %s\n", asn1_strerror (test->errorNumber)); printf (" Error detected: %s\n\n", asn1_strerror (result)); error (); } break; case ACT_DECODING_ELEMENT: if (result != test->errorNumber) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s - %s - %d\n", test->action, test->par1, test->par2, test->par3); printf (" Error expected: %s\n", asn1_strerror (test->errorNumber)); printf (" Error detected: %s\n", asn1_strerror (result)); printf (" Error description : %s\n\n", errorDescription); error (); } break; case ACT_NUMBER_OF_ELEMENTS: case ACT_READ_LENGTH: if ((result != test->errorNumber) || (valueLen != test->par3)) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s\n", test->action, test->par1); printf (" Error expected: %s - %d\n", asn1_strerror (test->errorNumber), test->par3); printf (" Error detected: %s - %d\n\n", asn1_strerror (result), valueLen); error (); } break; case ACT_ENCODING_LENGTH: if ((result != test->errorNumber) || (der_len != test->par3)) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s\n", test->action, test->par1); printf (" Error expected: %s - %d\n", asn1_strerror (test->errorNumber), test->par3); printf (" Error detected: %s - %d\n\n", asn1_strerror (result), der_len); error (); } break; case ACT_OID_2_STRUCTURE: if (((test->errorNumber != ASN1_SUCCESS) && (str_p != NULL)) || ((test->errorNumber == ASN1_SUCCESS) && (str_p == NULL)) || ((test->errorNumber == ASN1_SUCCESS) && (strcmp (str_p, test->par2)))) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s\n", test->action, test->par1); printf (" Error expected: %s - %s\n", asn1_strerror (test->errorNumber), test->par2); printf (" Value detected: %s\n\n", str_p); error (); } break; case ACT_DECODING_START_END: if ((result != test->errorNumber) || ((!strcmp (test->par2, "START")) && (start != test->par3)) || ((!strcmp (test->par2, "END")) && (end != test->par3))) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s - %d\n", test->action, test->par1, test->par3); printf (" Error expected: %s - %s - %d\n", asn1_strerror (test->errorNumber), test->par2, test->par3); printf (" Error detected: %s - %d - %d\n\n", asn1_strerror (result), start, end); error (); } break; case ACT_READ_TAG_CLASS: if ((result != test->errorNumber) || ((!strcmp (test->par2, "TAG")) && (tag != test->par3)) || ((!strcmp (test->par2, "CLASS")) && (class != test->par3))) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s - %d\n", test->action, test->par1, test->par3); printf (" Error expected: %s - %s - %d\n", asn1_strerror (test->errorNumber), test->par2, test->par3); printf (" Error detected: %s - %d - %d\n\n", asn1_strerror (result), tag, class); error (); } break; case ACT_READ: case ACT_READ_DEFINITIONS: case ACT_READ_BIT: if (test->action == ACT_READ_BIT) { if (valueLen % 8 == 0) tag = valueLen / 8; else tag = (valueLen / 8) + 1; if (test->par3 % 8 == 0) class = test->par3 / 8; else class = (test->par3 / 8) + 1; } for (k = 0; k < class; k++) if ((unsigned char) test->par2[k] != value[k]) { k = -1; break; } if ((result != test->errorNumber) || (valueLen != test->par3) || (k == -1)) { errorCounter++; printf ("ERROR in %d:\n", test->line); printf (" Action %d - %s\n", test->action, test->par1); printf (" Error expected: %s - %d - ", asn1_strerror (test->errorNumber), test->par3); for (k = 0; k < test->par3; k++) printf ("%02x", test->par2[k]); printf ("\n Error detected: %s - %d - ", asn1_strerror (result), valueLen); for (k = 0; k < valueLen; k++) printf ("%02x", value[k]); printf ("\n\n"); error (); } break; default: break; } test++; } if (verbose != 0) { printf ("Total tests : %d\n", testCounter); printf ("Total errors: %d\n", errorCounter); } /* Clear the definition structures */ asn1_delete_structure (&definitions); if (out != stdout) fclose (out); if (errorCounter > 0) return 1; exit (0); } libtasn1-3.4/tests/Test_overflow.c0000664000000000000000000000734012244720630014142 00000000000000/* * Copyright (C) 2012-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /* Written by Simon Josefsson */ #include #include #include #include #include "libtasn1.h" int main (int argc, char **argv) { /* Test that values larger than long are rejected. This has worked fine with all versions of libtasn1. */ int verbose = 0; if (argc > 1) verbose = 1; { unsigned char der[] = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"; long l; int len; l = asn1_get_length_der (der, sizeof der, &len); if (l == -2L) { if (verbose) puts ("OK: asn1_get_length_der bignum"); } else { printf ("ERROR: asn1_get_length_der bignum (l %ld len %d)\n", l, len); return 1; } } /* Test that values larger than int but smaller than long are rejected. This limitation was introduced with libtasn1 2.12. */ if (LONG_MAX > INT_MAX) { unsigned long num = ((long) UINT_MAX) << 2; unsigned char der[20]; int der_len; long l; int len; asn1_length_der (num, der, &der_len); l = asn1_get_length_der (der, der_len, &len); if (l == -2L) { if (verbose) puts ("OK: asn1_get_length_der intnum"); } else { printf ("ERROR: asn1_get_length_der intnum (l %ld len %d)\n", l, len); return 1; } } /* Test that values larger than would fit in the input string are rejected. This problem was fixed in libtasn1 2.12. */ { unsigned long num = 64; unsigned char der[20]; int der_len; long l; int len; asn1_length_der (num, der, &der_len); der_len = sizeof (der); l = asn1_get_length_der (der, der_len, &len); if (l == -4L) { if (verbose) puts ("OK: asn1_get_length_der overflow-small"); } else { printf ("ERROR: asn1_get_length_der overflow-small (l %ld len %d)\n", l, len); return 1; } } /* Test that values larger than would fit in the input string are rejected. This problem was fixed in libtasn1 2.12. */ { unsigned long num = 1073741824; unsigned char der[20]; int der_len; long l; int len; asn1_length_der (num, der, &der_len); der_len = sizeof (der); l = asn1_get_length_der (der, der_len, &len); if (l == -4L) { if (verbose) puts ("OK: asn1_get_length_der overflow-large1"); } else { printf ("ERROR: asn1_get_length_der overflow-large1 (l %ld len %d)\n", l, len); return 1; } } /* Test that values larger than would fit in the input string are rejected. This problem was fixed in libtasn1 2.12. */ { unsigned long num = 2147483649; unsigned char der[20]; int der_len; long l; int len; asn1_length_der (num, der, &der_len); der_len = sizeof (der); l = asn1_get_length_der (der, der_len, &len); if (l == -2L) { if (verbose) puts ("OK: asn1_get_length_der overflow-large2"); } else { printf ("ERROR: asn1_get_length_der overflow-large2 (l %ld len %d)\n", l, len); return 1; } } return 0; } libtasn1-3.4/tests/threadsafety0000775000000000000000000001122012244720630013535 00000000000000#!/bin/sh # Copyright (C) 2004-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 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 . FILES="$@" FILES=${FILES:-$THREADSAFETY_FILES} EGREP=${EGREP:-egrep} if test -z "$FILES"; then echo "Usage: $0 [FILE...]" exit 1 fi UNSAFE="" # Thread unsafe functions according to latest POSIX, see: # http://www.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09_01 UNSAFE="$UNSAFE asctime" UNSAFE="$UNSAFE basename" UNSAFE="$UNSAFE catgets" UNSAFE="$UNSAFE crypt" UNSAFE="$UNSAFE ctime" UNSAFE="$UNSAFE dbm_clearerr" UNSAFE="$UNSAFE dbm_close" UNSAFE="$UNSAFE dbm_delete" UNSAFE="$UNSAFE dbm_error" UNSAFE="$UNSAFE dbm_fetch" UNSAFE="$UNSAFE dbm_firstkey" UNSAFE="$UNSAFE dbm_nextkey" UNSAFE="$UNSAFE dbm_open" UNSAFE="$UNSAFE dbm_store" UNSAFE="$UNSAFE dirname" UNSAFE="$UNSAFE dlerror" UNSAFE="$UNSAFE drand48" UNSAFE="$UNSAFE encrypt" UNSAFE="$UNSAFE endgrent" UNSAFE="$UNSAFE endpwent" UNSAFE="$UNSAFE endutxent" UNSAFE="$UNSAFE ftw" UNSAFE="$UNSAFE getc_unlocked" UNSAFE="$UNSAFE getchar_unlocked" UNSAFE="$UNSAFE getdate" UNSAFE="$UNSAFE getenv" UNSAFE="$UNSAFE getgrent" UNSAFE="$UNSAFE getgrgid" UNSAFE="$UNSAFE getgrnam" UNSAFE="$UNSAFE gethostent" UNSAFE="$UNSAFE getlogin" UNSAFE="$UNSAFE getnetbyaddr" UNSAFE="$UNSAFE getnetbyname" UNSAFE="$UNSAFE getnetent" UNSAFE="$UNSAFE getopt" UNSAFE="$UNSAFE getprotobyname" UNSAFE="$UNSAFE getprotobynumber" UNSAFE="$UNSAFE getprotoent" UNSAFE="$UNSAFE getpwent" UNSAFE="$UNSAFE getpwnam" UNSAFE="$UNSAFE getpwuid" UNSAFE="$UNSAFE getservbyname" UNSAFE="$UNSAFE getservbyport" UNSAFE="$UNSAFE getservent" UNSAFE="$UNSAFE getutxent" UNSAFE="$UNSAFE getutxid" UNSAFE="$UNSAFE getutxline" UNSAFE="$UNSAFE gmtime" UNSAFE="$UNSAFE hcreate" UNSAFE="$UNSAFE hdestroy" UNSAFE="$UNSAFE hsearch" UNSAFE="$UNSAFE inet_ntoa" UNSAFE="$UNSAFE l64a" UNSAFE="$UNSAFE lgamma" UNSAFE="$UNSAFE lgammaf" UNSAFE="$UNSAFE lgammal" UNSAFE="$UNSAFE localeconv" UNSAFE="$UNSAFE localtime" UNSAFE="$UNSAFE lrand48" UNSAFE="$UNSAFE mrand48" UNSAFE="$UNSAFE nftw" UNSAFE="$UNSAFE nl_langinfo" UNSAFE="$UNSAFE ptsname" UNSAFE="$UNSAFE putc_unlocked" UNSAFE="$UNSAFE putchar_unlocked" UNSAFE="$UNSAFE putenv" UNSAFE="$UNSAFE pututxline" UNSAFE="$UNSAFE rand" UNSAFE="$UNSAFE readdir" UNSAFE="$UNSAFE setenv" UNSAFE="$UNSAFE setgrent" UNSAFE="$UNSAFE setkey" UNSAFE="$UNSAFE setpwent" UNSAFE="$UNSAFE setutxent" UNSAFE="$UNSAFE strerror" UNSAFE="$UNSAFE strsignal" UNSAFE="$UNSAFE strtok" UNSAFE="$UNSAFE system" UNSAFE="$UNSAFE ttyname" UNSAFE="$UNSAFE unsetenv" UNSAFE="$UNSAFE wcstombs" UNSAFE="$UNSAFE wctomb" # Additional functions that aren't thread-safe if passed a NULL argument UNSAFE="$UNSAFE ctermid" UNSAFE="$UNSAFE tmpname" UNSAFE="$UNSAFE wcrtomb" UNSAFE="$UNSAFE wcsrtombs" # Legacy functions removed between issue 6 and 7, see: # http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html#tag_02_09_01 UNSAFE="$UNSAFE ecvt" UNSAFE="$UNSAFE fcvt" UNSAFE="$UNSAFE gcvt" UNSAFE="$UNSAFE gethostbyaddr" UNSAFE="$UNSAFE gethostbyname" # Other (potentially) thread unsafe functions, see: # http://blog.josefsson.org/2009/06/23/thread-safe-functions/ UNSAFE="$UNSAFE erand48" UNSAFE="$UNSAFE ether_aton" UNSAFE="$UNSAFE ether_ntoa" UNSAFE="$UNSAFE fgetgrent" UNSAFE="$UNSAFE fgetpwent" UNSAFE="$UNSAFE fgetspent" UNSAFE="$UNSAFE getaliasbyname" UNSAFE="$UNSAFE getaliasent" UNSAFE="$UNSAFE gethostbyname2" UNSAFE="$UNSAFE getmntent" UNSAFE="$UNSAFE getnetgrent" UNSAFE="$UNSAFE getrpcbyname" UNSAFE="$UNSAFE getrpcbynumber" UNSAFE="$UNSAFE getrpcent" UNSAFE="$UNSAFE getspent" UNSAFE="$UNSAFE getspnam" UNSAFE="$UNSAFE getutent" UNSAFE="$UNSAFE getutid" UNSAFE="$UNSAFE getutline" UNSAFE="$UNSAFE initstate" UNSAFE="$UNSAFE jrand48" UNSAFE="$UNSAFE lcong48" UNSAFE="$UNSAFE nrand48" UNSAFE="$UNSAFE qecvt" UNSAFE="$UNSAFE qfcvt" UNSAFE="$UNSAFE random" UNSAFE="$UNSAFE seed48" UNSAFE="$UNSAFE setstate" UNSAFE="$UNSAFE sgetspent" UNSAFE="$UNSAFE srand48" UNSAFE="$UNSAFE srandom" set -- $UNSAFE cmd="-e [^.>=_0-9a-z]($1" shift while test "$1"; do cmd="${cmd}|$1" shift done cmd="${cmd})[^.>=_0-9a-z]*\(" if $EGREP $cmd $FILES; then exit 1 fi exit 0 libtasn1-3.4/tests/pkix.asn0000664000000000000000000011552112244720630012613 00000000000000 PKIX1 { } DEFINITIONS IMPLICIT TAGS ::= BEGIN -- This contains both PKIX1Implicit88 and RFC2630 ASN.1 modules. -- ISO arc for standard certificate and CRL extensions id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} -- authority key identifier OID and syntax id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } AuthorityKeyIdentifier ::= SEQUENCE { keyIdentifier [0] KeyIdentifier OPTIONAL, authorityCertIssuer [1] GeneralNames OPTIONAL, authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL } -- authorityCertIssuer and authorityCertSerialNumber shall both -- be present or both be absgent KeyIdentifier ::= OCTET STRING -- subject key identifier OID and syntax id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } SubjectKeyIdentifier ::= KeyIdentifier -- key usage extension OID and syntax id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } KeyUsage ::= BIT STRING { digitalSignature (0), nonRepudiation (1), keyEncipherment (2), dataEncipherment (3), keyAgreement (4), keyCertSign (5), cRLSign (6), encipherOnly (7), decipherOnly (8) } -- private key usage period extension OID and syntax id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 } PrivateKeyUsagePeriod ::= SEQUENCE { notBefore [0] GeneralizedTime OPTIONAL, notAfter [1] GeneralizedTime OPTIONAL } -- either notBefore or notAfter shall be present -- certificate policies extension OID and syntax id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation PolicyInformation ::= SEQUENCE { policyIdentifier CertPolicyId, policyQualifiers SEQUENCE SIZE (1..MAX) OF PolicyQualifierInfo OPTIONAL } CertPolicyId ::= OBJECT IDENTIFIER PolicyQualifierInfo ::= SEQUENCE { policyQualifierId PolicyQualifierId, qualifier ANY DEFINED BY policyQualifierId } -- Implementations that recognize additional policy qualifiers shall -- augment the following definition for PolicyQualifierId PolicyQualifierId ::= OBJECT IDENTIFIER -- ( id-qt-cps | id-qt-unotice ) -- CPS pointer qualifier CPSuri ::= IA5String -- user notice qualifier UserNotice ::= SEQUENCE { noticeRef NoticeReference OPTIONAL, explicitText DisplayText OPTIONAL} NoticeReference ::= SEQUENCE { organization DisplayText, noticeNumbers SEQUENCE OF INTEGER } DisplayText ::= CHOICE { visibleString VisibleString (SIZE (1..200)), bmpString BMPString (SIZE (1..200)), utf8String UTF8String (SIZE (1..200)) } -- policy mapping extension OID and syntax id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { issuerDomainPolicy CertPolicyId, subjectDomainPolicy CertPolicyId } -- subject alternative name extension OID and syntax -- Directory string type -- DirectoryString ::= CHOICE { teletexString TeletexString (SIZE (1..MAX)), printableString PrintableString (SIZE (1..MAX)), universalString UniversalString (SIZE (1..MAX)), utf8String UTF8String (SIZE (1..MAX)), bmpString BMPString (SIZE(1..MAX)), -- IA5String is added here to handle old UID encoded as ia5String -- -- See tests/userid/ for more information. It shouldn't be here, -- -- so if it causes problems, considering dropping it. -- ia5String IA5String (SIZE(1..MAX)) } id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } SubjectAltName ::= GeneralNames GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] AnotherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, -- Changed to work with the libtasn1 parser. directoryName [4] EXPLICIT RDNSequence, --Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER } -- AnotherName replaces OTHER-NAME ::= TYPE-IDENTIFIER, as -- TYPE-IDENTIFIER is not supported in the '88 ASN.1 syntax AnotherName ::= SEQUENCE { type-id OBJECT IDENTIFIER, value [0] EXPLICIT ANY DEFINED BY type-id } EDIPartyName ::= SEQUENCE { nameAssigner [0] DirectoryString OPTIONAL, partyName [1] DirectoryString } -- issuer alternative name extension OID and syntax id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } IssuerAltName ::= GeneralNames id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute -- basic constraints extension OID and syntax id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } BasicConstraints ::= SEQUENCE { cA BOOLEAN DEFAULT FALSE, pathLenConstraint INTEGER (0..MAX) OPTIONAL } -- name constraints extension OID and syntax id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } NameConstraints ::= SEQUENCE { permittedSubtrees [0] GeneralSubtrees OPTIONAL, excludedSubtrees [1] GeneralSubtrees OPTIONAL } GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree GeneralSubtree ::= SEQUENCE { base GeneralName, minimum [0] BaseDistance DEFAULT 0, maximum [1] BaseDistance OPTIONAL } BaseDistance ::= INTEGER (0..MAX) -- policy constraints extension OID and syntax id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } PolicyConstraints ::= SEQUENCE { requireExplicitPolicy [0] SkipCerts OPTIONAL, inhibitPolicyMapping [1] SkipCerts OPTIONAL } SkipCerts ::= INTEGER (0..MAX) -- CRL distribution points extension OID and syntax id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31} CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint DistributionPoint ::= SEQUENCE { distributionPoint [0] EXPLICIT DistributionPointName OPTIONAL, reasons [1] ReasonFlags OPTIONAL, cRLIssuer [2] GeneralNames OPTIONAL } DistributionPointName ::= CHOICE { fullName [0] GeneralNames, nameRelativeToCRLIssuer [1] RelativeDistinguishedName } ReasonFlags ::= BIT STRING { unused (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6), privilegeWithdrawn (7), aACompromise (8) } -- extended key usage extension OID and syntax id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37} ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId KeyPurposeId ::= OBJECT IDENTIFIER -- extended key purpose OIDs id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } id-kp-ipsecEndSystem OBJECT IDENTIFIER ::= { id-kp 5 } id-kp-ipsecTunnel OBJECT IDENTIFIER ::= { id-kp 6 } id-kp-ipsecUser OBJECT IDENTIFIER ::= { id-kp 7 } id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } -- authority info access id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } AuthorityInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription AccessDescription ::= SEQUENCE { accessMethod OBJECT IDENTIFIER, accessLocation GeneralName } -- CRL number extension OID and syntax id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } CRLNumber ::= INTEGER (0..MAX) -- issuing distribution point extension OID and syntax id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 } IssuingDistributionPoint ::= SEQUENCE { distributionPoint [0] DistributionPointName OPTIONAL, onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, onlySomeReasons [3] ReasonFlags OPTIONAL, indirectCRL [4] BOOLEAN DEFAULT FALSE } id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 } -- deltaCRLIndicator ::= BaseCRLNumber BaseCRLNumber ::= CRLNumber -- CRL reasons extension OID and syntax id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 } CRLReason ::= ENUMERATED { unspecified (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6), removeFromCRL (8) } -- certificate issuer CRL entry extension OID and syntax id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 } CertificateIssuer ::= GeneralNames -- hold instruction extension OID and syntax id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 } HoldInstructionCode ::= OBJECT IDENTIFIER -- ANSI x9 holdinstructions -- ANSI x9 arc holdinstruction arc holdInstruction OBJECT IDENTIFIER ::= {joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2} -- ANSI X9 holdinstructions referenced by this standard id-holdinstruction-none OBJECT IDENTIFIER ::= {holdInstruction 1} -- deprecated id-holdinstruction-callissuer OBJECT IDENTIFIER ::= {holdInstruction 2} id-holdinstruction-reject OBJECT IDENTIFIER ::= {holdInstruction 3} -- invalidity date CRL entry extension OID and syntax id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 } InvalidityDate ::= GeneralizedTime -- -------------------------------------- -- EXPLICIT -- -------------------------------------- -- UNIVERSAL Types defined in '93 and '98 ASN.1 -- but required by this specification VisibleString ::= [UNIVERSAL 26] IMPLICIT OCTET STRING NumericString ::= [UNIVERSAL 18] IMPLICIT OCTET STRING IA5String ::= [UNIVERSAL 22] IMPLICIT OCTET STRING TeletexString ::= [UNIVERSAL 20] IMPLICIT OCTET STRING PrintableString ::= [UNIVERSAL 19] IMPLICIT OCTET STRING UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING -- UniversalString is defined in ASN.1:1993 BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING -- BMPString is the subtype of UniversalString and models -- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1 UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING -- The content of this type conforms to RFC 2279. -- PKIX specific OIDs id-pkix OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) } -- PKIX arcs id-pe OBJECT IDENTIFIER ::= { id-pkix 1 } -- arc for private certificate extensions id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } -- arc for policy qualifier types id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } -- arc for extended key purpose OIDS id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } -- arc for access descriptors -- policyQualifierIds for Internet policy qualifiers id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } -- OID for CPS qualifier id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } -- OID for user notice qualifier -- access descriptor definitions id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 } id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } -- attribute data types -- Attribute ::= SEQUENCE { type AttributeType, values SET OF AttributeValue -- at least one value is required -- } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DEFINED BY type AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } -- suggested naming attributes: Definition of the following -- information object set may be augmented to meet local -- requirements. Note that deleting members of the set may -- prevent interoperability with conforming implementations. -- presented in pairs: the AttributeType followed by the -- type definition for the corresponding AttributeValue -- Arc for standard naming attributes id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4} -- Attributes of type NameDirectoryString id-at-initials AttributeType ::= { id-at 43 } X520initials ::= DirectoryString id-at-generationQualifier AttributeType ::= { id-at 44 } X520generationQualifier ::= DirectoryString id-at-surname AttributeType ::= { id-at 4 } X520surName ::= DirectoryString id-at-givenName AttributeType ::= { id-at 42 } X520givenName ::= DirectoryString id-at-name AttributeType ::= { id-at 41 } X520name ::= DirectoryString id-at-commonName AttributeType ::= {id-at 3} X520CommonName ::= DirectoryString id-at-localityName AttributeType ::= {id-at 7} X520LocalityName ::= DirectoryString id-at-stateOrProvinceName AttributeType ::= {id-at 8} X520StateOrProvinceName ::= DirectoryString id-at-organizationName AttributeType ::= {id-at 10} X520OrganizationName ::= DirectoryString id-at-organizationalUnitName AttributeType ::= {id-at 11} X520OrganizationalUnitName ::= DirectoryString id-at-title AttributeType ::= {id-at 12} X520Title ::= DirectoryString id-at-description AttributeType ::= {id-at 13} X520Description ::= DirectoryString id-at-dnQualifier AttributeType ::= {id-at 46} X520dnQualifier ::= PrintableString id-at-countryName AttributeType ::= {id-at 6} X520countryName ::= PrintableString (SIZE (2)) -- IS 3166 codes id-at-serialNumber AttributeType ::= {id-at 5} X520serialNumber ::= PrintableString id-at-telephoneNumber AttributeType ::= {id-at 20} X520telephoneNumber ::= PrintableString id-at-facsimileTelephoneNumber AttributeType ::= {id-at 23} X520facsimileTelephoneNumber ::= PrintableString id-at-pseudonym AttributeType ::= {id-at 65} X520pseudonym ::= DirectoryString id-at-name AttributeType ::= {id-at 41} X520name ::= DirectoryString id-at-streetAddress AttributeType ::= {id-at 9} X520streetAddress ::= DirectoryString id-at-postalAddress AttributeType ::= {id-at 16} X520postalAddress ::= PostalAddress PostalAddress ::= SEQUENCE OF DirectoryString -- Legacy attributes pkcs OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) } pkcs-9 OBJECT IDENTIFIER ::= { pkcs 9 } emailAddress AttributeType ::= { pkcs-9 1 } Pkcs9email ::= IA5String (SIZE (1..ub-emailaddress-length)) -- naming data types -- Name ::= CHOICE { -- only one possibility for now -- rdnSequence RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName DistinguishedName ::= RDNSequence RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue -- -------------------------------------------------------- -- certificate and CRL specific structures begin here -- -------------------------------------------------------- Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 extensions [3] EXPLICIT Extensions OPTIONAL -- If present, version shall be v3 -- } Version ::= INTEGER { v1(0), v2(1), v3(2) } CertificateSerialNumber ::= INTEGER Validity ::= SEQUENCE { notBefore Time, notAfter Time } Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime } UniqueIdentifier ::= BIT STRING SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING } Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension Extension ::= SEQUENCE { extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING } -- ------------------------------------------ -- CRL structures -- ------------------------------------------ CertificateList ::= SEQUENCE { tbsCertList TBSCertList, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertList ::= SEQUENCE { version Version OPTIONAL, -- if present, shall be v2 signature AlgorithmIdentifier, issuer Name, thisUpdate Time, nextUpdate Time OPTIONAL, revokedCertificates SEQUENCE OF SEQUENCE { userCertificate CertificateSerialNumber, revocationDate Time, crlEntryExtensions Extensions OPTIONAL -- if present, shall be v2 } OPTIONAL, crlExtensions [0] EXPLICIT Extensions OPTIONAL -- if present, shall be v2 -- } -- Version, Time, CertificateSerialNumber, and Extensions were -- defined earlier for use in the certificate structure AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } -- contains a value of the type -- registered for use with the -- algorithm object identifier value -- Algorithm OIDs and parameter structures pkcs-1 OBJECT IDENTIFIER ::= { pkcs 1 } rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } id-dsa-with-sha1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } dhpublicnumber OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1 } DomainParameters ::= SEQUENCE { p INTEGER, -- odd prime, p=jq +1 g INTEGER, -- generator, g q INTEGER, -- factor of p-1 j INTEGER OPTIONAL, -- subgroup factor, j>= 2 validationParms ValidationParms OPTIONAL } ValidationParms ::= SEQUENCE { seed BIT STRING, pgenCounter INTEGER } id-dsa OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } Dss-Parms ::= SEQUENCE { p INTEGER, q INTEGER, g INTEGER } -- x400 address syntax starts here -- OR Names ORAddress ::= SEQUENCE { built-in-standard-attributes BuiltInStandardAttributes, built-in-domain-defined-attributes BuiltInDomainDefinedAttributes OPTIONAL, -- see also teletex-domain-defined-attributes extension-attributes ExtensionAttributes OPTIONAL } -- The OR-address is semantically absent from the OR-name if the -- built-in-standard-attribute sequence is empty and the -- built-in-domain-defined-attributes and extension-attributes are -- both omitted. -- Built-in Standard Attributes BuiltInStandardAttributes ::= SEQUENCE { country-name CountryName OPTIONAL, administration-domain-name AdministrationDomainName OPTIONAL, network-address [0] EXPLICIT NetworkAddress OPTIONAL, -- see also extended-network-address terminal-identifier [1] EXPLICIT TerminalIdentifier OPTIONAL, private-domain-name [2] EXPLICIT PrivateDomainName OPTIONAL, organization-name [3] EXPLICIT OrganizationName OPTIONAL, -- see also teletex-organization-name numeric-user-identifier [4] EXPLICIT NumericUserIdentifier OPTIONAL, personal-name [5] EXPLICIT PersonalName OPTIONAL, -- see also teletex-personal-name organizational-unit-names [6] EXPLICIT OrganizationalUnitNames OPTIONAL -- see also teletex-organizational-unit-names -- } CountryName ::= [APPLICATION 1] CHOICE { x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), iso-3166-alpha2-code PrintableString (SIZE (ub-country-name-alpha-length)) } AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE { numeric NumericString (SIZE (0..ub-domain-name-length)), printable PrintableString (SIZE (0..ub-domain-name-length)) } NetworkAddress ::= X121Address -- see also extended-network-address X121Address ::= NumericString (SIZE (1..ub-x121-address-length)) TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length)) PrivateDomainName ::= CHOICE { numeric NumericString (SIZE (1..ub-domain-name-length)), printable PrintableString (SIZE (1..ub-domain-name-length)) } OrganizationName ::= PrintableString (SIZE (1..ub-organization-name-length)) -- see also teletex-organization-name NumericUserIdentifier ::= NumericString (SIZE (1..ub-numeric-user-id-length)) PersonalName ::= SET { surname [0] PrintableString (SIZE (1..ub-surname-length)), given-name [1] PrintableString (SIZE (1..ub-given-name-length)) OPTIONAL, initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL, generation-qualifier [3] PrintableString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL } -- see also teletex-personal-name OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF OrganizationalUnitName -- see also teletex-organizational-unit-names OrganizationalUnitName ::= PrintableString (SIZE (1..ub-organizational-unit-name-length)) -- Built-in Domain-defined Attributes BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE (1..ub-domain-defined-attributes) OF BuiltInDomainDefinedAttribute BuiltInDomainDefinedAttribute ::= SEQUENCE { type PrintableString (SIZE (1..ub-domain-defined-attribute-type-length)), value PrintableString (SIZE (1..ub-domain-defined-attribute-value-length))} -- Extension Attributes ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF ExtensionAttribute ExtensionAttribute ::= SEQUENCE { extension-attribute-type [0] EXPLICIT INTEGER (0..ub-extension-attributes), extension-attribute-value [1] EXPLICIT ANY DEFINED BY extension-attribute-type } -- Extension types and attribute values -- common-name INTEGER ::= 1 CommonName ::= PrintableString (SIZE (1..ub-common-name-length)) teletex-common-name INTEGER ::= 2 TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length)) teletex-organization-name INTEGER ::= 3 TeletexOrganizationName ::= TeletexString (SIZE (1..ub-organization-name-length)) teletex-personal-name INTEGER ::= 4 TeletexPersonalName ::= SET { surname [0] EXPLICIT TeletexString (SIZE (1..ub-surname-length)), given-name [1] EXPLICIT TeletexString (SIZE (1..ub-given-name-length)) OPTIONAL, initials [2] EXPLICIT TeletexString (SIZE (1..ub-initials-length)) OPTIONAL, generation-qualifier [3] EXPLICIT TeletexString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL } teletex-organizational-unit-names INTEGER ::= 5 TeletexOrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF TeletexOrganizationalUnitName TeletexOrganizationalUnitName ::= TeletexString (SIZE (1..ub-organizational-unit-name-length)) pds-name INTEGER ::= 7 PDSName ::= PrintableString (SIZE (1..ub-pds-name-length)) physical-delivery-country-name INTEGER ::= 8 PhysicalDeliveryCountryName ::= CHOICE { x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), iso-3166-alpha2-code PrintableString (SIZE (ub-country-name-alpha-length)) } postal-code INTEGER ::= 9 PostalCode ::= CHOICE { numeric-code NumericString (SIZE (1..ub-postal-code-length)), printable-code PrintableString (SIZE (1..ub-postal-code-length)) } physical-delivery-office-name INTEGER ::= 10 PhysicalDeliveryOfficeName ::= PDSParameter physical-delivery-office-number INTEGER ::= 11 PhysicalDeliveryOfficeNumber ::= PDSParameter extension-OR-address-components INTEGER ::= 12 ExtensionORAddressComponents ::= PDSParameter physical-delivery-personal-name INTEGER ::= 13 PhysicalDeliveryPersonalName ::= PDSParameter physical-delivery-organization-name INTEGER ::= 14 PhysicalDeliveryOrganizationName ::= PDSParameter extension-physical-delivery-address-components INTEGER ::= 15 ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter unformatted-postal-address INTEGER ::= 16 UnformattedPostalAddress ::= SET { printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL, teletex-string TeletexString (SIZE (1..ub-unformatted-address-length)) OPTIONAL } street-address INTEGER ::= 17 StreetAddress ::= PDSParameter post-office-box-address INTEGER ::= 18 PostOfficeBoxAddress ::= PDSParameter poste-restante-address INTEGER ::= 19 PosteRestanteAddress ::= PDSParameter unique-postal-name INTEGER ::= 20 UniquePostalName ::= PDSParameter local-postal-attributes INTEGER ::= 21 LocalPostalAttributes ::= PDSParameter PDSParameter ::= SET { printable-string PrintableString (SIZE(1..ub-pds-parameter-length)) OPTIONAL, teletex-string TeletexString (SIZE(1..ub-pds-parameter-length)) OPTIONAL } extended-network-address INTEGER ::= 22 ExtendedNetworkAddress ::= CHOICE { e163-4-address SEQUENCE { number [0] EXPLICIT NumericString (SIZE (1..ub-e163-4-number-length)), sub-address [1] EXPLICIT NumericString (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL }, psap-address [0] EXPLICIT PresentationAddress } PresentationAddress ::= SEQUENCE { pSelector [0] EXPLICIT OCTET STRING OPTIONAL, sSelector [1] EXPLICIT OCTET STRING OPTIONAL, tSelector [2] EXPLICIT OCTET STRING OPTIONAL, nAddresses [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING } terminal-type INTEGER ::= 23 TerminalType ::= INTEGER { telex (3), teletex (4), g3-facsimile (5), g4-facsimile (6), ia5-terminal (7), videotex (8) } -- (0..ub-integer-options) -- Extension Domain-defined Attributes teletex-domain-defined-attributes INTEGER ::= 6 TeletexDomainDefinedAttributes ::= SEQUENCE SIZE (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute TeletexDomainDefinedAttribute ::= SEQUENCE { type TeletexString (SIZE (1..ub-domain-defined-attribute-type-length)), value TeletexString (SIZE (1..ub-domain-defined-attribute-value-length)) } -- specifications of Upper Bounds shall be regarded as mandatory -- from Annex B of ITU-T X.411 Reference Definition of MTS Parameter -- Upper Bounds -- Upper Bounds ub-name INTEGER ::= 32768 ub-common-name INTEGER ::= 64 ub-locality-name INTEGER ::= 128 ub-state-name INTEGER ::= 128 ub-organization-name INTEGER ::= 64 ub-organizational-unit-name INTEGER ::= 64 ub-title INTEGER ::= 64 ub-match INTEGER ::= 128 ub-emailaddress-length INTEGER ::= 128 ub-common-name-length INTEGER ::= 64 ub-country-name-alpha-length INTEGER ::= 2 ub-country-name-numeric-length INTEGER ::= 3 ub-domain-defined-attributes INTEGER ::= 4 ub-domain-defined-attribute-type-length INTEGER ::= 8 ub-domain-defined-attribute-value-length INTEGER ::= 128 ub-domain-name-length INTEGER ::= 16 ub-extension-attributes INTEGER ::= 256 ub-e163-4-number-length INTEGER ::= 15 ub-e163-4-sub-address-length INTEGER ::= 40 ub-generation-qualifier-length INTEGER ::= 3 ub-given-name-length INTEGER ::= 16 ub-initials-length INTEGER ::= 5 ub-integer-options INTEGER ::= 256 ub-numeric-user-id-length INTEGER ::= 32 ub-organization-name-length INTEGER ::= 64 ub-organizational-unit-name-length INTEGER ::= 32 ub-organizational-units INTEGER ::= 4 ub-pds-name-length INTEGER ::= 16 ub-pds-parameter-length INTEGER ::= 30 ub-pds-physical-address-lines INTEGER ::= 6 ub-postal-code-length INTEGER ::= 16 ub-surname-length INTEGER ::= 40 ub-terminal-id-length INTEGER ::= 24 ub-unformatted-address-length INTEGER ::= 180 ub-x121-address-length INTEGER ::= 16 -- Note - upper bounds on string types, such as TeletexString, are -- measured in characters. Excepting PrintableString or IA5String, a -- significantly greater number of octets will be required to hold -- such a value. As a minimum, 16 octets, or twice the specified upper -- bound, whichever is the larger, should be allowed for TeletexString. -- For UTF8String or UniversalString at least four times the upper -- bound should be allowed. -- END of PKIX1Implicit88 -- BEGIN of RFC2630 -- Cryptographic Message Syntax pkcs-7-ContentInfo ::= SEQUENCE { contentType pkcs-7-ContentType, content [0] EXPLICIT ANY DEFINED BY contentType } pkcs-7-DigestInfo ::= SEQUENCE { digestAlgorithm pkcs-7-DigestAlgorithmIdentifier, digest pkcs-7-Digest } pkcs-7-Digest ::= OCTET STRING pkcs-7-ContentType ::= OBJECT IDENTIFIER pkcs-7-SignedData ::= SEQUENCE { version pkcs-7-CMSVersion, digestAlgorithms pkcs-7-DigestAlgorithmIdentifiers, encapContentInfo pkcs-7-EncapsulatedContentInfo, certificates [0] IMPLICIT pkcs-7-CertificateSet OPTIONAL, crls [1] IMPLICIT pkcs-7-CertificateRevocationLists OPTIONAL, signerInfos pkcs-7-SignerInfos } pkcs-7-CMSVersion ::= INTEGER { v0(0), v1(1), v2(2), v3(3), v4(4) } pkcs-7-DigestAlgorithmIdentifiers ::= SET OF pkcs-7-DigestAlgorithmIdentifier pkcs-7-DigestAlgorithmIdentifier ::= AlgorithmIdentifier pkcs-7-EncapsulatedContentInfo ::= SEQUENCE { eContentType pkcs-7-ContentType, eContent [0] EXPLICIT OCTET STRING OPTIONAL } -- We don't use CertificateList here since we only want -- to read the raw data. pkcs-7-CertificateRevocationLists ::= SET OF ANY pkcs-7-CertificateChoices ::= CHOICE { -- Although the paper uses Certificate type, we -- don't use it since, we don't need to parse it. -- We only need to read and store it. certificate ANY } pkcs-7-CertificateSet ::= SET OF pkcs-7-CertificateChoices pkcs-7-SignerInfos ::= SET OF ANY -- this is not correct but we don't use it -- anyway -- BEGIN of RFC2986 -- Certificate requests pkcs-10-CertificationRequestInfo ::= SEQUENCE { version INTEGER { v1(0) }, subject Name, subjectPKInfo SubjectPublicKeyInfo, attributes [0] Attributes } Attributes ::= SET OF Attribute pkcs-10-CertificationRequest ::= SEQUENCE { certificationRequestInfo pkcs-10-CertificationRequestInfo, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } -- stuff from PKCS#9 pkcs-9-ub-challengePassword INTEGER ::= 255 pkcs-9-certTypes OBJECT IDENTIFIER ::= {pkcs-9 22} pkcs-9-crlTypes OBJECT IDENTIFIER ::= {pkcs-9 23} pkcs-9-at-challengePassword OBJECT IDENTIFIER ::= {pkcs-9 7} pkcs-9-challengePassword ::= CHOICE { printableString PrintableString (SIZE (1..pkcs-9-ub-challengePassword)), utf8String UTF8String (SIZE (1..pkcs-9-ub-challengePassword)) } pkcs-9-at-localKeyId OBJECT IDENTIFIER ::= {pkcs-9 21} pkcs-9-localKeyId ::= OCTET STRING pkcs-9-at-friendlyName OBJECT IDENTIFIER ::= {pkcs-9 20} pkcs-9-friendlyName ::= BMPString (SIZE (1..255)) -- PKCS #8 stuff -- Private-key information syntax pkcs-8-PrivateKeyInfo ::= SEQUENCE { version pkcs-8-Version, privateKeyAlgorithm AlgorithmIdentifier, privateKey pkcs-8-PrivateKey, attributes [0] Attributes OPTIONAL } pkcs-8-Version ::= INTEGER {v1(0)} pkcs-8-PrivateKey ::= OCTET STRING pkcs-8-Attributes ::= SET OF Attribute -- Encrypted private-key information syntax pkcs-8-EncryptedPrivateKeyInfo ::= SEQUENCE { encryptionAlgorithm AlgorithmIdentifier, encryptedData pkcs-8-EncryptedData } pkcs-8-EncryptedData ::= OCTET STRING -- PKCS #5 stuff pkcs-5 OBJECT IDENTIFIER ::= { pkcs 5 } pkcs-5-encryptionAlgorithm OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) 3 } pkcs-5-des-EDE3-CBC OBJECT IDENTIFIER ::= {pkcs-5-encryptionAlgorithm 7} pkcs-5-des-EDE3-CBC-params ::= OCTET STRING (SIZE(8)) pkcs-5-id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13} pkcs-5-PBES2-params ::= SEQUENCE { keyDerivationFunc AlgorithmIdentifier, encryptionScheme AlgorithmIdentifier } -- PBKDF2 pkcs-5-id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12} -- pkcs-5-id-hmacWithSHA1 OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) rsadsi(113549) 2 7} -- pkcs-5-algid-hmacWithSHA1 AlgorithmIdentifier ::= -- {algorithm pkcs-5-id-hmacWithSHA1, parameters NULL : NULL} pkcs-5-PBKDF2-params ::= SEQUENCE { salt CHOICE { specified OCTET STRING, otherSource AlgorithmIdentifier }, iterationCount INTEGER (1..MAX), keyLength INTEGER (1..MAX) OPTIONAL, prf AlgorithmIdentifier OPTIONAL -- DEFAULT pkcs-5-id-hmacWithSHA1 } -- PKCS #12 stuff pkcs-12 OBJECT IDENTIFIER ::= {pkcs 12} pkcs-12-PFX ::= SEQUENCE { version INTEGER {v3(3)}, authSafe pkcs-7-ContentInfo, macData pkcs-12-MacData OPTIONAL } pkcs-12-PbeParams ::= SEQUENCE { salt OCTET STRING, iterations INTEGER } pkcs-12-MacData ::= SEQUENCE { mac pkcs-7-DigestInfo, macSalt OCTET STRING, iterations INTEGER DEFAULT 1 -- Note: The default is for historical reasons and its use is -- deprecated. A higher value, like 1024 is recommended. } pkcs-12-AuthenticatedSafe ::= SEQUENCE OF pkcs-7-ContentInfo -- Data if unencrypted -- EncryptedData if password-encrypted -- EnvelopedData if public key-encrypted pkcs-12-SafeContents ::= SEQUENCE OF pkcs-12-SafeBag pkcs-12-SafeBag ::= SEQUENCE { bagId OBJECT IDENTIFIER, bagValue [0] EXPLICIT ANY DEFINED BY badId, bagAttributes SET OF pkcs-12-PKCS12Attribute OPTIONAL } -- Bag types pkcs-12-bagtypes OBJECT IDENTIFIER ::= {pkcs-12 10 1} pkcs-12-keyBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 1} pkcs-12-pkcs8ShroudedKeyBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 2} pkcs-12-certBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 3} pkcs-12-crlBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 4} pkcs-12-KeyBag ::= pkcs-8-PrivateKeyInfo -- Shrouded KeyBag pkcs-12-PKCS8ShroudedKeyBag ::= pkcs-8-EncryptedPrivateKeyInfo -- CertBag pkcs-12-CertBag ::= SEQUENCE { certId OBJECT IDENTIFIER, certValue [0] EXPLICIT ANY DEFINED BY certId } -- x509Certificate BAG-TYPE ::= {OCTET STRING IDENTIFIED BY {pkcs-9-certTypes 1}} -- DER-encoded X.509 certificate stored in OCTET STRING pkcs-12-CRLBag ::= SEQUENCE { crlId OBJECT IDENTIFIER, crlValue [0] EXPLICIT ANY DEFINED BY crlId } -- x509CRL BAG-TYPE ::= -- {OCTET STRING IDENTIFIED BY {pkcs-9-crlTypes 1}} -- DER-encoded X.509 CRL stored in OCTET STRING pkcs-12-PKCS12Attribute ::= Attribute -- PKCS #7 stuff (needed in PKCS 12) pkcs-7-data OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 } pkcs-7-encryptedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 6 } pkcs-7-Data ::= OCTET STRING pkcs-7-EncryptedData ::= SEQUENCE { version pkcs-7-CMSVersion, encryptedContentInfo pkcs-7-EncryptedContentInfo, unprotectedAttrs [1] IMPLICIT pkcs-7-UnprotectedAttributes OPTIONAL } pkcs-7-EncryptedContentInfo ::= SEQUENCE { contentType pkcs-7-ContentType, contentEncryptionAlgorithm pkcs-7-ContentEncryptionAlgorithmIdentifier, encryptedContent [0] IMPLICIT pkcs-7-EncryptedContent OPTIONAL } pkcs-7-ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier pkcs-7-EncryptedContent ::= OCTET STRING pkcs-7-UnprotectedAttributes ::= SET SIZE (1..MAX) OF Attribute -- LDAP stuff -- may not be correct id-at-ldap-DC AttributeType ::= { 0 9 2342 19200300 100 1 25 } ldap-DC ::= IA5String id-at-ldap-UID AttributeType ::= { 0 9 2342 19200300 100 1 1 } ldap-UID ::= DirectoryString -- rfc3039 id-pda OBJECT IDENTIFIER ::= { id-pkix 9 } id-pda-dateOfBirth AttributeType ::= { id-pda 1 } DateOfBirth ::= GeneralizedTime id-pda-placeOfBirth AttributeType ::= { id-pda 2 } PlaceOfBirth ::= DirectoryString id-pda-gender AttributeType ::= { id-pda 3 } Gender ::= PrintableString (SIZE(1)) -- "M", "F", "m" or "f" id-pda-countryOfCitizenship AttributeType ::= { id-pda 4 } CountryOfCitizenship ::= PrintableString (SIZE (2)) -- ISO 3166 Country Code id-pda-countryOfResidence AttributeType ::= { id-pda 5 } CountryOfResidence ::= PrintableString (SIZE (2)) -- ISO 3166 Country Code -- rfc3820 id-pe-proxyCertInfo OBJECT IDENTIFIER ::= { id-pe 14 } id-ppl-inheritAll OBJECT IDENTIFIER ::= { id-pkix 21 1 } id-ppl-independent OBJECT IDENTIFIER ::= { id-pkix 21 2 } ProxyCertInfo ::= SEQUENCE { pCPathLenConstraint INTEGER (0..MAX) OPTIONAL, proxyPolicy ProxyPolicy } ProxyPolicy ::= SEQUENCE { policyLanguage OBJECT IDENTIFIER, policy OCTET STRING OPTIONAL } -- rfc3920 section 5.1.1 id-on OBJECT IDENTIFIER ::= { id-pkix 8 } -- other name forms id-on-xmppAddr OBJECT IDENTIFIER ::= { id-on 5 } XmppAddr ::= UTF8String END -- Copyright (C) 2002-2013 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-3.4/tests/Test_strings.c0000664000000000000000000000627512244720630013776 00000000000000/* * Copyright (C) 2012-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * * Written by Simon Josefsson * */ #include #include #include #include "libtasn1.h" struct tv { unsigned int etype; unsigned int str_len; const void *str; unsigned int der_len; const void *der; }; static const struct tv tv[] = { {ASN1_ETYPE_IA5_STRING, 20, "\x63\x73\x63\x61\x40\x70\x61\x73\x73\x70\x6f\x72\x74\x2e\x67\x6f\x76\x2e\x67\x72", 22, "\x16\x14\x63\x73\x63\x61\x40\x70\x61\x73\x73\x70\x6f\x72\x74\x2e\x67\x6f\x76\x2e\x67\x72"}, {ASN1_ETYPE_PRINTABLE_STRING, 5, "\x4e\x69\x6b\x6f\x73", 7, "\x13\x05\x4e\x69\x6b\x6f\x73"}, {ASN1_ETYPE_UTF8_STRING, 12, "Αττική", 14, "\x0c\x0c\xce\x91\xcf\x84\xcf\x84\xce\xb9\xce\xba\xce\xae"}, {ASN1_ETYPE_TELETEX_STRING, 15, "\x53\x69\x6d\x6f\x6e\x20\x4a\x6f\x73\x65\x66\x73\x73\x6f\x6e", 17, "\x14\x0f\x53\x69\x6d\x6f\x6e\x20\x4a\x6f\x73\x65\x66\x73\x73\x6f\x6e"}, {ASN1_ETYPE_OCTET_STRING, 36, "\x30\x22\x80\x0F\x32\x30\x31\x31\x30\x38\x32\x31\x30\x38\x30\x30\x30\x36\x5A\x81\x0F\x32\x30\x31\x31\x30\x38\x32\x33\x32\x30\x35\x39\x35\x39\x5A", 38, "\x04\x24\x30\x22\x80\x0F\x32\x30\x31\x31\x30\x38\x32\x31\x30\x38\x30\x30\x30\x36\x5A\x81\x0F\x32\x30\x31\x31\x30\x38\x32\x33\x32\x30\x35\x39\x35\x39\x5A"} }; int main (int argc, char *argv[]) { int ret; unsigned char tl[ASN1_MAX_TL_SIZE]; unsigned int tl_len, der_len, str_len; const unsigned char *str; unsigned int i; /* Dummy test */ for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++) { /* Encode */ tl_len = sizeof (tl); ret = asn1_encode_simple_der (tv[i].etype, tv[i].str, tv[i].str_len, tl, &tl_len); if (ret != ASN1_SUCCESS) { fprintf (stderr, "Encoding error in %u: %s\n", i, asn1_strerror (ret)); return 1; } der_len = tl_len + tv[i].str_len; if (der_len != tv[i].der_len || memcmp (tl, tv[i].der, tl_len) != 0) { fprintf (stderr, "DER encoding differs in %u! (size: %u, expected: %u)\n", i, der_len, tv[i].der_len); return 1; } /* decoding */ ret = asn1_decode_simple_der (tv[i].etype, tv[i].der, tv[i].der_len, &str, &str_len); if (ret != ASN1_SUCCESS) { fprintf (stderr, "Decoding error in %u: %s\n", i, asn1_strerror (ret)); return 1; } if (str_len != tv[i].str_len || memcmp (str, tv[i].str, str_len) != 0) { fprintf (stderr, "DER decoded data differ in %u! (size: %u, expected: %u)\n", i, der_len, tv[i].str_len); return 1; } } return 0; } libtasn1-3.4/tests/crlf0000775000000000000000000000223112244720630012002 00000000000000#!/bin/sh # Copyright (C) 2006-2013 Free Software Foundation, Inc. # # Author: Simon Josefsson # # This file is part of LIBTASN1. # # 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 . set -e srcdir=${srcdir:-.} ASN1DECODING=../src/asn1Decoding${EXEEXT} # The crlf.cer file is a normal certificate which contains bytes 0x0A # (LF), 0x0D (CF), and 0xFF (EOF), all are known to cause failures # when using fopen/fgetc/fscanf on streams on some systems (read: # Windows). $ASN1DECODING \ $srcdir/../examples/pkix.asn \ $srcdir/crlf.cer \ PKIX1Implicit88.Certificate >/dev/null 2>&1 libtasn1-3.4/tests/TestIndef.p120000664000000000000000000000541012244720630013341 000000000000000€0€ *†H†÷  €$€‚è0€0€ *†H†÷  €$€‚0‚0‚  *†H†÷   ‚²0‚®0( *†H†÷  0j[FÍ¿“mtüÛÅ­{¤©¬‚€<èe|Å Rì¶¶œ§ïûÖ-Ã\_‰Éöž™m¤Å&pQÚ­æ5bÆ,¶ïtj·CJ¥ŠbVáãB!â¿ÿÌÅe Z‘Ùwxá•=ËÇ÷€Gvï´K-Ò²#æâKòÌó¢# ªMVáí˜ÁboßÁö7! c˜÷¬ìZdL°KhÚ‡”¨"£tÕ+ÔNîA3n(Ù\Si€-í-³Z‹ŠGMÄŠ,©ö1Ó_Û RNÑqr¾rŸÃû+.ÙjèõÚýU”夸)Ž_!³b„Û4ïÐfÇ`P%l“–v§Úqæz×àfn`ÀP„8<Âù0ÃéXåÏl‘¿ú¹&ÉmÝöœ^ÀΑ‚^|îhÉ3 óÍè·mAwÔU0ž•â;"áBÖ¡‰EÙ…à£S¶ÐO<êû¨+Z«öù’«1×:ùàñ%Ùàg·?î1»s†Rz9Ũ¢I^ ÂÛsŽdEl½þVM|jˆ9Õ¼hÒ1ì@*•¤·.:Rã(ÔÇ"ó@'YØ$ú 8ÜÕÖQ=ÆY>½¾+ïIø²dE_¬ö!î%’SÕa…å0ìÛ½,Û„§Ò/üªóïy*É.ð¼Bþï#¦­Ïm}—Miz àvyÐã$\Ä{ ~¾&ijÆù6|W_þó½Ó=ùˆØøóÃÐà7ºzFÕrË5«ŸÙÑÅÛ+`–ß`Vî§£üÙñýiâ Ùx9I |ÉmFÑV Ô³T¤P¥X߉+ê‚,ønñŸÐ›"²..p`„©šÑ «œïì3D£oG¢ÞùoD¼úZC£+r—Äè™òñµh›2K^×"Þ™á1H0! *†H†÷  1Test User0# *†H†÷  1ˆeß»i>Y*»ÝK)?.e0€ *†H†÷  €0€0€ *†H†÷ 0( *†H†÷  0¶ª§ng·:àÄœÀ©?êvû €‚œS4p|LH#·Õ¡‘î ¼š¾‰móÁôpÞѯ$eþLÙך×|ñö±óã&i·c!›’Q_tA9"$Rn="‡)õ£‰Ì[˜+w'¸äOò‡•45*>dcÚq‚èñ³=72Cis·ÙYVã'ÿ7d_õûP â•²ƒs‹ó0 9Zîëlr•ÔîSQNÉ }‹§V¯è‚ã]~E‘WE×mTí½:º ¯¶ëNm€ßùÔ3è0çðOѳe¦ ÿÁ™ê*‚QñçfYÓÁñ˜ 3âÝìJñ§eÌ”´3öZZ3Qã2ØúöN5 ;(hÍÍâT¡aëØI‰\gL’}ËùÿP1a³=ï%‡Óº(l™ª‡‰,e&wA¯AUèPt‚H*ï_:5Âày°?‚ÈÜ»¿š*Ñ ¡S3ž'¬ßi^Üîïc®Ç–w†™BC‰²0Àʾ_8W4©›'¡è⑼ÏP->?ZÚ†ï_„g´=š¬SäT½­ömÅòhR£º¬n'ïÒP|ÙË[„EЬ±V{iœsÉGn1Ó¿‡€Ÿµ‘q‰@Têab‘ÆšR–4ÚØyñyª‚¸"SXžá8DÙ·Tëª E8¨N.ÇúÏÿKcZn‡ŒœõáȰ«†9Òù Íe]\,Œ•A*§Exȼ¬€¹ð§(Ô1E¶‘oè&¦§•hóÝ3§?SÁÚ©°h’É5} €–ãÒœå(5ï8þ€<,ˆã__yq ÿ˜ð½Õî¤|§m ç@›‘×C—4ˆI¾¸> 9y&YÂΞúè7rŽœ‡>‡FÌ*v‘>ž`çIèóµD* ÞüºXpŸ0P9¼uÙ)â1Áão=UìQ‚/œ‡sœ¡È¯v-×’Óµ1¥Z_ØA˜ÅÅ/'¤ßûˆç˜ ³ƒHl_[FÑŸwfxŽ ùÌì º˜€?^ýnŸ¦Z` ÎðÆ©tÍO‡…I¸ë¬˜3¢ Ô4=G[à¸ÜÞ¡«IûçLùVimÉ–Ëèï|´¨$.¥eŽg¾ aK*Ǭ¿$!~˜AКƷò ­)†ºBÇß“¡DÝi*3)“yŽÉáìúg#.Ù‚ã ¶õ.žÌB1Gÿ ­öûLŠ¿;ÄNmOÀtVAo°:ÜŽúù‹^ðߥY )ŸÙÇ—5 ÉÁ̬e#µ^hÜ™²Î4ë7D¶kŸÑ@;þT^7X¶:Cÿ|™–µ]$ ®Åp¶‚ϲߙÖ2~»¯;Û8ÐÌÀY]%'ùüìU-²û3ÎÙ&dTÐhÔµ\“¯™ rá¿HŠf&\|/~ Öòy¹3l\WÈ„ ’’¤V ¬öúçm¸w¸4˜Ú¸IZ¼5¥Ÿ?߈z¯¬ú‚<¾¼xÚÌqˆsg•5ͺŸØ& AЦaù¯|¡M#thÂÂ@X‡±¥ ÎÅÁØŒõ$wDÛå §€"Œ/™KŽ8'À¾ïŸ¹ü0sÆ!ïä´#ȹ"\ ‘Õ=o9)€Î 5Á%‡»™U÷ ˜'ñØDv“8>Ç}Ÿ¡›ŽA,!¹i;»ö"¶V,@…G/çIä§ï½xùtÝKo¦çi÷áÖŒHɯZ± Ìzú–üxN‰ˆ]áišÌ~réÅÏÈ0 h==ºÑç B×£ Þ_;z<.T¬Ie™î°0=ƒJÂÄšX™_µç«ɵè 5iŸ5©Ì‰÷¤RÆ xöȯ­ç ¶ =<é_Íý"üõêâp1çílsK‹õ_¥OPzócÅv;¡;àQ¢V Çi(A½Áǽ7†[jRríÚ:ÏŒ§¯ÝO”çí¯Â7^c´ÑM® ¥5y£C)EçØÇo ©dc»âDͨÑ@*ª•A®ùæ[Ãñ“¥Ú%²Þ#fA"½"ØŒ4q[}¼’>d ¦ýÊ(VB/BÔåoŒÛ] x''•§ü¬1aEØÖ"ïb+ðÚ0È2A6j‚. 'ˆ¬wÖ×gô°8Dì¢ÍSwŸ6lÎäx1oFô ‡n³—P.TÛb"ü˜+wsásë.E€rnu·&ÑöIᨆûFëKNŸe£ç<±ºÐUkÚdÛêÌÀ(ƒ@ÚOÖn·z³Ê·¨}ùs<¢¹‹ØÛeü‚ Qû~0=0!0 +ÂKì›ûõØ™«D)b(”3ÀþÕ!.ˆF”+¤ ð7xæìc¹õ9”—libtasn1-3.4/tests/benchmark0000775000000000000000000000221412244720630013007 00000000000000#!/bin/sh # Copyright (C) 2006-2013 Free Software Foundation, Inc. # # Author: Simon Josefsson # # This file is part of LIBTASN1. # # 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 . set -e srcdir=${srcdir:-.} ASN1DECODING=../src/asn1Decoding${EXEEXT} # The crlf.cer file is a normal certificate which contains bytes 0x0A # (LF), 0x0D (CF), and 0xFF (EOF), all are known to cause failures # when using fopen/fgetc/fscanf on streams on some systems (read: # Windows). $ASN1DECODING \ -b $srcdir/../examples/pkix.asn \ $srcdir/crlf.cer \ PKIX1Implicit88.Certificate libtasn1-3.4/tests/Test_parser.asn0000664000000000000000000000235612244720630014134 00000000000000-- -- File used in the test sequence Test_parser. -- TEST_PARSER {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)} DEFINITIONS IMPLICIT TAGS ::= BEGIN Sequence1 ::= SEQUENCE{ int1 -- Test -- INTEGER (5), int2 INTEGER (10 | 12), generic GeneralString } OidTest ::= SEQUENCE{ oid1 OBJECT IDENTIFIER DEFAULT Oid-type1 } Oid-type1 OBJECT IDENTIFIER ::= {1 2 3 4} Bitstringsizetest ::= BIT STRING (SIZE(42)) END -- Copyright (C) 2002-2013 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-3.4/tests/Test_simple.c0000664000000000000000000001355512244720630013575 00000000000000/* * Copyright (C) 2011-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * * Written by Simon Josefsson * */ #include #include #include #include "libtasn1.h" struct tv { int bitlen; const char *bitstr; int derlen; const char *der; }; static const struct tv tv[] = { {0, "", 2, "\x01\x00"}, {1, "\x00", 3, "\x02\x07\x00"}, {2, "\x00", 3, "\x02\x06\x00"}, {3, "\x00", 3, "\x02\x05\x00"}, {4, "\x00", 3, "\x02\x04\x00"}, {5, "\x00", 3, "\x02\x03\x00"}, {6, "\x00", 3, "\x02\x02\x00"}, {7, "\x00", 3, "\x02\x01\x00"}, {8, "\x00\x00", 3, "\x02\x00\x00"}, {9, "\x00\x00", 4, "\x03\x07\x00\x00"}, {10, "\x00\x00", 4, "\x03\x06\x00\x00"}, {11, "\x00\x00", 4, "\x03\x05\x00\x00"}, {12, "\x00\x00", 4, "\x03\x04\x00\x00"}, {13, "\x00\x00", 4, "\x03\x03\x00\x00"}, {14, "\x00\x00", 4, "\x03\x02\x00\x00"}, {15, "\x00\x00", 4, "\x03\x01\x00\x00"}, {16, "\x00\x00", 4, "\x03\x00\x00\x00"}, {17, "\x00\x00\x00", 5, "\x04\x07\x00\x00\x00"}, {18, "\x00\x00\x00", 5, "\x04\x06\x00\x00\x00"}, {19, "\x00\x00\x00", 5, "\x04\x05\x00\x00\x00"}, {1, "\xFF", 3, "\x02\x07\x80"}, {2, "\xFF", 3, "\x02\x06\xc0"}, {3, "\xFF", 3, "\x02\x05\xe0"}, {4, "\xFF", 3, "\x02\x04\xf0"}, {5, "\xFF", 3, "\x02\x03\xf8"}, {6, "\xFF", 3, "\x02\x02\xfc"}, {7, "\xFF", 3, "\x02\x01\xfe"}, {8, "\xFF\xFF", 3, "\x02\x00\xff"}, {9, "\xFF\xFF", 4, "\x03\x07\xff\x80"}, {10, "\xFF\xFF", 4, "\x03\x06\xff\xc0"}, {11, "\xFF\xFF", 4, "\x03\x05\xff\xe0"}, {12, "\xFF\xFF", 4, "\x03\x04\xff\xf0"}, {13, "\xFF\xFF", 4, "\x03\x03\xff\xf8"}, {14, "\xFF\xFF", 4, "\x03\x02\xff\xfc"}, {15, "\xFF\xFF", 4, "\x03\x01\xff\xfe"}, {16, "\xFF\xFF", 4, "\x03\x00\xff\xff"}, {17, "\xFF\xFF\xFF", 5, "\x04\x07\xff\xff\x80"}, {18, "\xFF\xFF\xFF", 5, "\x04\x06\xff\xff\xc0"}, {19, "\xFF\xFF\xFF", 5, "\x04\x05\xff\xff\xe0"}, }; int main (int argc, char *argv[]) { int result; unsigned char der[100]; unsigned char str[100]; int der_len = sizeof (der); int str_size = sizeof (str); int ret_len, bit_len; size_t i; /* Dummy test */ asn1_bit_der (NULL, 0, der, &der_len); result = asn1_get_bit_der (der, 0, &ret_len, str, str_size, &bit_len); if (result != ASN1_GENERIC_ERROR) { fprintf (stderr, "asn1_get_bit_der zero\n"); return 1; } /* Encode short strings with increasing bit lengths */ for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++) { /* Encode */ asn1_bit_der ((const unsigned char *) tv[i].bitstr, tv[i].bitlen, der, &der_len); #if 0 { size_t j; for (j = 0; j < der_len; j++) printf ("\\x%02x", der[j]); printf ("\n"); } #endif if (der_len != tv[i].derlen || memcmp (der, tv[i].der, der_len) != 0) { fprintf (stderr, "asn1_bit_der iter %lu\n", (unsigned long) i); return 1; } /* Decode it */ result = asn1_get_bit_der (der, der_len, &ret_len, str, str_size, &bit_len); if (result != ASN1_SUCCESS || ret_len != tv[i].derlen || bit_len != tv[i].bitlen) { fprintf (stderr, "asn1_get_bit_der iter %lu\n", (unsigned long) i); return 1; } } /* Decode sample from "A Layman's Guide to a Subset of ASN.1, BER, and DER" section 5.4 "BIT STRING": "The BER encoding of the BIT STRING value "011011100101110111" can be any of the following, among others, depending on the choice of padding bits, the form of length octets [...]". */ /* 03 04 06 6e 5d c0 DER encoding */ memcpy (der, "\x04\x06\x6e\x5d\xc0", 5); der_len = 5; result = asn1_get_bit_der (der, der_len, &ret_len, str, str_size, &bit_len); if (result != ASN1_SUCCESS || ret_len != 5 || bit_len != 18 || memcmp (str, "\x6e\x5d\xc0", 3) != 0) { fprintf (stderr, "asn1_get_bit_der example\n"); return 1; } der_len = sizeof (der); asn1_bit_der (str, bit_len, der, &der_len); if (der_len != 5 || memcmp (der, "\x04\x06\x6e\x5d\xc0", 5) != 0) { fprintf (stderr, "asn1_bit_der example roundtrip\n"); return 1; } /* 03 04 06 6e 5d e0 padded with "100000" */ memcpy (der, "\x04\x06\x6e\x5d\xe0", 5); der_len = 5; result = asn1_get_bit_der (der, der_len, &ret_len, str, str_size, &bit_len); if (result != ASN1_SUCCESS || ret_len != 5 || bit_len != 18 || memcmp (str, "\x6e\x5d\xe0", 3) != 0) { fprintf (stderr, "asn1_get_bit_der example padded\n"); return 1; } der_len = sizeof (der); asn1_bit_der (str, bit_len, der, &der_len); if (der_len != 5 || memcmp (der, "\x04\x06\x6e\x5d\xc0", 5) != 0) { fprintf (stderr, "asn1_bit_der example roundtrip\n"); return 1; } /* 03 81 04 06 6e 5d c0 long form of length octets */ memcpy (der, "\x81\x04\x06\x6e\x5d\xc0", 6); der_len = 6; result = asn1_get_bit_der (der, der_len, &ret_len, str, str_size, &bit_len); if (result != ASN1_SUCCESS || ret_len != 6 || bit_len != 18 || memcmp (str, "\x6e\x5d\xc0", 3) != 0) { fprintf (stderr, "asn1_get_bit_der example long form\n"); return 1; } der_len = sizeof (der); asn1_bit_der (str, bit_len, der, &der_len); if (der_len != 5 || memcmp (der, "\x04\x06\x6e\x5d\xc0", 5) != 0) { fprintf (stderr, "asn1_bit_der example roundtrip\n"); return 1; } return 0; } libtasn1-3.4/tests/Test_encoding.c0000664000000000000000000000717312244720630014071 00000000000000/* * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /******************************************************/ /* File: Test_encoding.c */ /* Description: Test writing values and DER encoding. */ /******************************************************/ #include #include #include #include "libtasn1.h" unsigned char data[256]; int data_size = sizeof (data); int main (int argc, char *argv[]) { int result, verbose = 0; asn1_node definitions = NULL; asn1_node asn1_element = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; const char *treefile = getenv ("ASN1ENCODING"); if (argc > 1) verbose = 1; if (!treefile) treefile = "Test_encoding.asn"; if (verbose != 0) { printf ("\n\n/****************************************/\n"); printf ("/* Test sequence : coding-decoding */\n"); printf ("/****************************************/\n\n"); } /* Check version */ if (asn1_check_version ("0.3.3") == NULL) printf ("\nLibrary version check ERROR:\n actual version: %s\n\n", asn1_check_version (NULL)); result = asn1_parser2tree (treefile, &definitions, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("ErrorDescription = %s\n\n", errorDescription); exit (1); } result = asn1_create_element (definitions, "TEST_TREE.Koko", &asn1_element); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_create_element(): "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "seqint", "NEW", 1); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): seqint "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "seqint.?LAST", "1234", 0); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): seqint.?LAST "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "int", "\x0f\xff\x01", 3); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): int "); asn1_perror (result); exit (1); } result = asn1_write_value (asn1_element, "str", "string", 6); if (result != ASN1_SUCCESS) { fprintf (stderr, "asn1_write_value(): str "); asn1_perror (result); exit (1); } /* Clear the definition structures */ asn1_delete_structure (&definitions); result = asn1_der_coding (asn1_element, "", data, &data_size, NULL); if (result != ASN1_SUCCESS) { fprintf (stderr, "Encoding error.\n"); asn1_perror (result); exit (1); } result = asn1_der_decoding (&asn1_element, data, data_size, NULL); if (result != ASN1_SUCCESS) { fprintf (stderr, "Decoding error.\n"); asn1_perror (result); exit (1); } asn1_delete_structure (&asn1_element); if (verbose) printf ("Success\n"); exit (0); } libtasn1-3.4/tests/Makefile.in0000664000000000000000000016570312244721751013216 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = Test_parser$(EXEEXT) Test_tree$(EXEEXT) \ Test_encoding$(EXEEXT) Test_indefinite$(EXEEXT) \ Test_errors$(EXEEXT) Test_simple$(EXEEXT) \ Test_overflow$(EXEEXT) Test_strings$(EXEEXT) TESTS = Test_parser$(EXEEXT) Test_tree$(EXEEXT) Test_encoding$(EXEEXT) \ Test_indefinite$(EXEEXT) Test_errors$(EXEEXT) \ Test_simple$(EXEEXT) Test_overflow$(EXEEXT) crlf threadsafety \ Test_strings$(EXEEXT) subdir = tests DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(dist_check_SCRIPTS) $(top_srcdir)/build-aux/depcomp \ $(top_srcdir)/build-aux/test-driver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = Test_encoding_SOURCES = Test_encoding.c Test_encoding_OBJECTS = Test_encoding.$(OBJEXT) Test_encoding_LDADD = $(LDADD) Test_encoding_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = Test_errors_SOURCES = Test_errors.c Test_errors_OBJECTS = Test_errors.$(OBJEXT) Test_errors_LDADD = $(LDADD) Test_errors_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_indefinite_SOURCES = Test_indefinite.c Test_indefinite_OBJECTS = Test_indefinite.$(OBJEXT) Test_indefinite_LDADD = $(LDADD) Test_indefinite_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_overflow_SOURCES = Test_overflow.c Test_overflow_OBJECTS = Test_overflow.$(OBJEXT) Test_overflow_LDADD = $(LDADD) Test_overflow_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_parser_SOURCES = Test_parser.c Test_parser_OBJECTS = Test_parser.$(OBJEXT) Test_parser_LDADD = $(LDADD) Test_parser_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_simple_SOURCES = Test_simple.c Test_simple_OBJECTS = Test_simple.$(OBJEXT) Test_simple_LDADD = $(LDADD) Test_simple_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_strings_SOURCES = Test_strings.c Test_strings_OBJECTS = Test_strings.$(OBJEXT) Test_strings_LDADD = $(LDADD) Test_strings_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la Test_tree_SOURCES = Test_tree.c Test_tree_OBJECTS = Test_tree.$(OBJEXT) Test_tree_LDADD = $(LDADD) Test_tree_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = SOURCES = Test_encoding.c Test_errors.c Test_indefinite.c \ Test_overflow.c Test_parser.c Test_simple.c Test_strings.c \ Test_tree.c DIST_SOURCES = Test_encoding.c Test_errors.c Test_indefinite.c \ Test_overflow.c Test_parser.c Test_simple.c Test_strings.c \ Test_tree.c 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) # 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__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; \ } 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__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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 = $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAG_VISIBILITY) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I../gl AM_LDFLAGS = -no-install LDADD = ../lib/libtasn1.la ../gl/libgnu.la # For crlf. EXTRA_DIST = Test_parser.asn Test_tree.asn Test_tree_asn1_tab.c \ Test_encoding.asn pkix.asn TestIndef.p12 crlf.cer dist_check_SCRIPTS = crlf benchmark threadsafety MOSTLYCLEANFILES = Test_parser_ERROR.asn TESTS_ENVIRONMENT = \ ASN1PARSER=$(srcdir)/Test_parser.asn \ ASN1TREE=$(srcdir)/Test_tree.asn \ ASN1PKIX=$(srcdir)/pkix.asn \ ASN1PKIX=$(srcdir)/pkix.asn \ ASN1INDEF=$(srcdir)/TestIndef.p12 \ ASN1ENCODING=$(srcdir)/Test_encoding.asn \ THREADSAFETY_FILES=`find $(top_srcdir)/lib -name \*.c` \ EXEEXT=$(EXEEXT) \ $(VALGRIND) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(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 tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/Makefile .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list Test_encoding$(EXEEXT): $(Test_encoding_OBJECTS) $(Test_encoding_DEPENDENCIES) $(EXTRA_Test_encoding_DEPENDENCIES) @rm -f Test_encoding$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_encoding_OBJECTS) $(Test_encoding_LDADD) $(LIBS) Test_errors$(EXEEXT): $(Test_errors_OBJECTS) $(Test_errors_DEPENDENCIES) $(EXTRA_Test_errors_DEPENDENCIES) @rm -f Test_errors$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_errors_OBJECTS) $(Test_errors_LDADD) $(LIBS) Test_indefinite$(EXEEXT): $(Test_indefinite_OBJECTS) $(Test_indefinite_DEPENDENCIES) $(EXTRA_Test_indefinite_DEPENDENCIES) @rm -f Test_indefinite$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_indefinite_OBJECTS) $(Test_indefinite_LDADD) $(LIBS) Test_overflow$(EXEEXT): $(Test_overflow_OBJECTS) $(Test_overflow_DEPENDENCIES) $(EXTRA_Test_overflow_DEPENDENCIES) @rm -f Test_overflow$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_overflow_OBJECTS) $(Test_overflow_LDADD) $(LIBS) Test_parser$(EXEEXT): $(Test_parser_OBJECTS) $(Test_parser_DEPENDENCIES) $(EXTRA_Test_parser_DEPENDENCIES) @rm -f Test_parser$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_parser_OBJECTS) $(Test_parser_LDADD) $(LIBS) Test_simple$(EXEEXT): $(Test_simple_OBJECTS) $(Test_simple_DEPENDENCIES) $(EXTRA_Test_simple_DEPENDENCIES) @rm -f Test_simple$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_simple_OBJECTS) $(Test_simple_LDADD) $(LIBS) Test_strings$(EXEEXT): $(Test_strings_OBJECTS) $(Test_strings_DEPENDENCIES) $(EXTRA_Test_strings_DEPENDENCIES) @rm -f Test_strings$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_strings_OBJECTS) $(Test_strings_LDADD) $(LIBS) Test_tree$(EXEEXT): $(Test_tree_OBJECTS) $(Test_tree_DEPENDENCIES) $(EXTRA_Test_tree_DEPENDENCIES) @rm -f Test_tree$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Test_tree_OBJECTS) $(Test_tree_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_encoding.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_errors.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_indefinite.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_overflow.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_parser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_simple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_strings.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Test_tree.Po@am__quote@ .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 $< .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 `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs 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-am 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 # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ else \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) $(dist_check_SCRIPTS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? Test_parser.log: Test_parser$(EXEEXT) @p='Test_parser$(EXEEXT)'; \ b='Test_parser'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) Test_tree.log: Test_tree$(EXEEXT) @p='Test_tree$(EXEEXT)'; \ b='Test_tree'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) Test_encoding.log: Test_encoding$(EXEEXT) @p='Test_encoding$(EXEEXT)'; \ b='Test_encoding'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) Test_indefinite.log: Test_indefinite$(EXEEXT) @p='Test_indefinite$(EXEEXT)'; \ b='Test_indefinite'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) Test_errors.log: Test_errors$(EXEEXT) @p='Test_errors$(EXEEXT)'; \ b='Test_errors'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) Test_simple.log: Test_simple$(EXEEXT) @p='Test_simple$(EXEEXT)'; \ b='Test_simple'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) Test_overflow.log: Test_overflow$(EXEEXT) @p='Test_overflow$(EXEEXT)'; \ b='Test_overflow'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) crlf.log: crlf @p='crlf'; \ b='crlf'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) threadsafety.log: threadsafety @p='threadsafety'; \ b='threadsafety'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) Test_strings.log: Test_strings$(EXEEXT) @p='Test_strings$(EXEEXT)'; \ b='Test_strings'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(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 $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) \ $(dist_check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS 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 mostlyclean-generic: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) 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-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ 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-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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags 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-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libtasn1-3.4/tests/Test_tree.asn0000664000000000000000000001063412244720630013575 00000000000000-- -- File used in the test sequence Test_tree. -- TEST_TREE {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)} DEFINITIONS IMPLICIT TAGS ::= BEGIN KrbError ::= [APPLICATION 30] SEQUENCE { pvno[0] INTEGER } Checksum ::= SEQUENCE { checksum [1] OCTET STRING } CertTemplate ::= SEQUENCE { version [0] INTEGER OPTIONAL, issuer [3] Name OPTIONAL, validity [4] INTEGER OPTIONAL } Name ::= CHOICE { rdnSequence RDNSequence } RDNSequence ::= RelativeDistinguishedName RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY sequenceEmpty ::= SEQUENCE{ int1 INTEGER, seq1 [1] IMPLICIT Sequence_octetTest1, set1 [2] EXPLICIT SET OF INTEGER } IndefiniteLengthTest ::= SEQUENCE{ seq1 [1] IMPLICIT Sequence_octetTest1, set1 SET OF OBJECT IDENTIFIER, int1 INTEGER } OidTest ::= SEQUENCE{ oid3 [3] OBJECT IDENTIFIER DEFAULT id-Test, oid [1] OBJECT IDENTIFIER DEFAULT id-anyTest2, oid2 [2] OBJECT IDENTIFIER DEFAULT id-anyTest } OidAndTimeTest ::= SEQUENCE{ set SET OF INTEGER, oid OBJECT IDENTIFIER, time2 GeneralizedTime, bol BOOLEAN, oct OCTET STRING, bit BIT STRING OPTIONAL, bol2 BOOLEAN DEFAULT TRUE, enum ENUMERATED {v1(1),v2(2)} DEFAULT v1, any [1] ANY OPTIONAL, gen GeneralString OPTIONAL, time1 UTCTime } SequenceTestTag ::= SEQUENCE{ int1 [2] EXPLICIT INTEGER, int2 [3] IMPLICIT INTEGER, str1 [1] IMPLICIT PrintableString, str2 UniversalString, str3 [2] EXPLICIT UniversalString } Sequence1 ::= SEQUENCE{ int1 [0] INTEGER {v1(0),v2(1),v3(2)} DEFAULT v2, int2 INTEGER, seq SET OF INTEGER, id OBJECT IDENTIFIER, oct OCTET STRING, any1 ANY DEFINED BY id OPTIONAL } DHParameter ::= SEQUENCE { prime INTEGER, base INTEGER, privateValueLength INTEGER OPTIONAL } id-octetTest1 OBJECT IDENTIFIER ::= {1 2 3 4} Sequence_octetTest1 ::= SEQUENCE{ int INTEGER OPTIONAL } AnyTest2 ::= CHOICE{ str OCTET STRING, int INTEGER } id-ic OBJECT IDENTIFIER ::= {2 5} id-anyTest OBJECT IDENTIFIER ::= {id-ic 29 1} id-anyTest2 OBJECT IDENTIFIER ::= {id-ic 29 2} anyTest2 ::= INTEGER VisibleString ::= [UNIVERSAL 26] IMPLICIT OCTET STRING NumericString ::= [UNIVERSAL 18] IMPLICIT OCTET STRING IA5String ::= [UNIVERSAL 22] IMPLICIT OCTET STRING TeletexString ::= [UNIVERSAL 20] IMPLICIT OCTET STRING PrintableString ::= [UNIVERSAL 19] IMPLICIT OCTET STRING UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING -- UniversalString is defined in ASN.1:1993 BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING -- BMPString is the subtype of UniversalString and models -- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1 UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING -- The content of this type conforms to RFC 2279. Test3 ::= SEQUENCE{ a INTEGER, b [1] EXPLICIT GeneralString2 } GeneralString2 ::= [2] EXPLICIT GeneralString X520LocalityName ::= CHOICE { teletexString TeletexString, printableString PrintableString, universalString UniversalString, utf8String UTF8String, bmpString BMPString } id-Test OBJECT IDENTIFIER ::= {1 2 29 2} END -- Copyright (C) 2002-2013 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-3.4/tests/Makefile.am0000664000000000000000000000345112244720630013167 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAG_VISIBILITY) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I../gl AM_LDFLAGS = -no-install LDADD = ../lib/libtasn1.la ../gl/libgnu.la EXTRA_DIST = Test_parser.asn Test_tree.asn Test_tree_asn1_tab.c \ Test_encoding.asn pkix.asn TestIndef.p12 # For crlf. EXTRA_DIST += crlf.cer dist_check_SCRIPTS = crlf benchmark dist_check_SCRIPTS += threadsafety MOSTLYCLEANFILES = Test_parser_ERROR.asn check_PROGRAMS = Test_parser Test_tree Test_encoding Test_indefinite \ Test_errors Test_simple Test_overflow Test_strings TESTS = Test_parser Test_tree Test_encoding Test_indefinite \ Test_errors Test_simple Test_overflow crlf threadsafety \ Test_strings TESTS_ENVIRONMENT = \ ASN1PARSER=$(srcdir)/Test_parser.asn \ ASN1TREE=$(srcdir)/Test_tree.asn \ ASN1PKIX=$(srcdir)/pkix.asn \ ASN1PKIX=$(srcdir)/pkix.asn \ ASN1INDEF=$(srcdir)/TestIndef.p12 \ ASN1ENCODING=$(srcdir)/Test_encoding.asn \ THREADSAFETY_FILES=`find $(top_srcdir)/lib -name \*.c` \ EXEEXT=$(EXEEXT) \ $(VALGRIND) libtasn1-3.4/gtk-doc.make0000664000000000000000000002061312244720630012157 00000000000000# -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### if GTK_DOC_USE_LIBTOOL GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = $(LIBTOOL) --mode=execute else GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = endif # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt EXTRA_DIST = \ $(HTML_IMAGES) \ $(SETUP_FILES) DOC_STAMPS=setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ tmpl.stamp sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) if ENABLE_GTK_DOC if GTK_DOC_BUILD_HTML HTML_BUILD_STAMP=html-build.stamp else HTML_BUILD_STAMP= endif if GTK_DOC_BUILD_PDF PDF_BUILD_STAMP=pdf-build.stamp else PDF_BUILD_STAMP= endif all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) else all-local: endif docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### setup #### setup-build.stamp: -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ echo ' DOC Preparing build'; \ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ test -f $(abs_srcdir)/$$file && \ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \ done; \ fi; \ test -d $(abs_srcdir)/tmpl && \ { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \ chmod -R u+w $(abs_builddir)/tmpl; } \ fi @touch setup-build.stamp #### scan #### scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) @echo ' DOC Scanning header files' @_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ echo " DOC Introspecting gobjects"; \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi @touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### templates #### tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt @echo ' DOC Rebuilding template files' @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ if test -w $(abs_srcdir) ; then \ cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \ fi \ fi @touch tmpl-build.stamp tmpl.stamp: tmpl-build.stamp @true $(srcdir)/tmpl/*.sgml: @true #### xml #### sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) @echo ' DOC Building XML' @-chmod -R u+w $(srcdir) @_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo ' DOC Building HTML' @rm -rf html @mkdir html @mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; @echo ' DOC Fixing cross-references' @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @touch html-build.stamp #### pdf #### pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo ' DOC Building PDF' @rm -f $(DOC_MODULE).pdf @mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) @touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ rm -rf tmpl; \ fi maintainer-clean-local: clean @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # if ENABLE_GTK_DOC dist-check-gtkdoc: else dist-check-gtkdoc: @echo "*** gtk-doc must be installed and enabled in order to make dist" @false endif dist-hook: dist-check-gtkdoc dist-hook-local @mkdir $(distdir)/tmpl @mkdir $(distdir)/html @-cp ./tmpl/*.sgml $(distdir)/tmpl @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs libtasn1-3.4/GNUmakefile0000664000000000000000000001073512244720630012046 00000000000000# Having a separate GNUmakefile lets me 'include' the dynamically # generated rules created via cfg.mk (package-local configuration) # as well as maint.mk (generic maintainer rules). # This makefile is used only if you run GNU Make. # It is necessary if you want to build targets usually of interest # only to the maintainer. # Copyright (C) 2001, 2003, 2006-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 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # If the user runs GNU make but has not yet run ./configure, # give them a diagnostic. _gl-Makefile := $(wildcard [M]akefile) ifneq ($(_gl-Makefile),) # Make tar archive easier to reproduce. export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner # Allow the user to add to this in the Makefile. ALL_RECURSIVE_TARGETS = include Makefile # Some projects override e.g., _autoreconf here. -include $(srcdir)/cfg.mk # Allow cfg.mk to override these. _build-aux ?= build-aux _autoreconf ?= autoreconf -v include $(srcdir)/maint.mk # Ensure that $(VERSION) is up to date for dist-related targets, but not # for others: rerunning autoreconf and recompiling everything isn't cheap. _have-git-version-gen := \ $(shell test -f $(srcdir)/$(_build-aux)/git-version-gen && echo yes) ifeq ($(_have-git-version-gen)0,yes$(MAKELEVEL)) _is-dist-target ?= $(filter-out %clean, \ $(filter maintainer-% dist% alpha beta stable,$(MAKECMDGOALS))) _is-install-target ?= $(filter-out %check, $(filter install%,$(MAKECMDGOALS))) ifneq (,$(_is-dist-target)$(_is-install-target)) _curr-ver := $(shell cd $(srcdir) \ && $(_build-aux)/git-version-gen \ .tarball-version \ $(git-version-gen-tag-sed-script)) ifneq ($(_curr-ver),$(VERSION)) ifeq ($(_curr-ver),UNKNOWN) $(info WARNING: unable to verify if $(VERSION) is the correct version) else ifneq (,$(_is-install-target)) # GNU Coding Standards state that 'make install' should not cause # recompilation after 'make all'. But as long as changing the version # string alters config.h, the cost of having 'make all' always have an # up-to-date version is prohibitive. So, as a compromise, we merely # warn when installing a version string that is out of date; the user # should run 'autoreconf' (or something like 'make distcheck') to # fix the version, 'make all' to propagate it, then 'make install'. $(info WARNING: version string $(VERSION) is out of date;) $(info run '$(MAKE) _version' to fix it) else $(info INFO: running autoreconf for new version string: $(_curr-ver)) GNUmakefile: _version touch GNUmakefile endif endif endif endif endif .PHONY: _version _version: cd $(srcdir) && rm -rf autom4te.cache .version && $(_autoreconf) $(MAKE) $(AM_MAKEFLAGS) Makefile else .DEFAULT_GOAL := abort-due-to-no-makefile srcdir = . # The package can override .DEFAULT_GOAL to run actions like autoreconf. -include ./cfg.mk # Allow cfg.mk to override these. _build-aux ?= build-aux _autoreconf ?= autoreconf -v include ./maint.mk ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile) $(MAKECMDGOALS): abort-due-to-no-makefile endif abort-due-to-no-makefile: @echo There seems to be no Makefile in this directory. 1>&2 @echo "You must run ./configure before running 'make'." 1>&2 @exit 1 endif # Tell version 3.79 and up of GNU make to not build goals in this # directory in parallel, in case someone tries to build multiple # targets, and one of them can cause a recursive target to be invoked. # Only set this if Automake doesn't provide it. AM_RECURSIVE_TARGETS ?= $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) \ dist distcheck tags ctags ALL_RECURSIVE_TARGETS += $(AM_RECURSIVE_TARGETS) ifneq ($(word 2, $(MAKECMDGOALS)), ) ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), ) .NOTPARALLEL: endif endif libtasn1-3.4/THANKS0000664000000000000000000000236512244720630010707 00000000000000Here is a list of people, who helped the Libtasn1 project. Nikos Mavroyanopoulos Simon Josefsson Martijn Koster Albert Chin Bernard Leak Frediano ZIGLIO Evgeny Legerov Cyril Holweck Stephen Wrobleski Diego Pettenò Michele Baldessari Christian Grothoff Dagobert Michelsen David Reiser Didier Godefroy Andreas Metzler Ludovic Courtès Jeffrey Walton Matthew Hall ---------------------------------------------------------------------- Copyright (C) 2002-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. libtasn1-3.4/aclocal.m40000664000000000000000000012132112244721745011636 00000000000000# generated automatically by aclocal 1.13.4 -*- Autoconf -*- # Copyright (C) 1996-2013 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-2013 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.13' 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.13.4], [], [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.13.4])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Copyright (C) 2011-2013 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_AR([ACT-IF-FAIL]) # ------------------------- # Try to determine the archiver interface, and trigger the ar-lib wrapper # if it is needed. If the detection of archiver interface fails, run # ACT-IF-FAIL (default is to abort configure with a proper error message). AC_DEFUN([AM_PROG_AR], [AC_BEFORE([$0], [LT_INIT])dnl AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([ar-lib])dnl AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) : ${AR=ar} AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], [am_cv_ar_interface=ar AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a ]) ]) case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # 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__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) m4_default([$1], [AC_MSG_ERROR([could not determine $AR interface])]) ;; esac AC_SUBST([AR])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2013 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], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2013 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-2013 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-2013 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. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _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. FIXME. This creates each '.P' file that we will # 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" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2013 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. # 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. 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 ]) 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-2013 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}" != 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-2013 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])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2013 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 to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2013 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 ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2013 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])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2013 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-2013 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-2013 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-2013 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-2013 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 m4_include([lib/glm4/gnulib-comp.m4]) m4_include([lib/glm4/ld-version-script.m4]) m4_include([lib/glm4/string_h.m4]) m4_include([lib/glm4/strverscmp.m4]) m4_include([lib/glm4/visibility.m4]) m4_include([gl/m4/00gnulib.m4]) m4_include([gl/m4/autobuild.m4]) m4_include([gl/m4/clock_time.m4]) m4_include([gl/m4/errno_h.m4]) m4_include([gl/m4/extensions.m4]) m4_include([gl/m4/extern-inline.m4]) m4_include([gl/m4/fseeko.m4]) m4_include([gl/m4/fstat.m4]) m4_include([gl/m4/ftell.m4]) m4_include([gl/m4/ftello.m4]) m4_include([gl/m4/getopt.m4]) m4_include([gl/m4/gettime.m4]) m4_include([gl/m4/gettimeofday.m4]) m4_include([gl/m4/gnulib-common.m4]) m4_include([gl/m4/gnulib-comp.m4]) m4_include([gl/m4/include_next.m4]) m4_include([gl/m4/largefile.m4]) m4_include([gl/m4/longlong.m4]) m4_include([gl/m4/lseek.m4]) m4_include([gl/m4/malloc.m4]) m4_include([gl/m4/manywarnings.m4]) m4_include([gl/m4/msvc-inval.m4]) m4_include([gl/m4/msvc-nothrow.m4]) m4_include([gl/m4/multiarch.m4]) m4_include([gl/m4/nocrash.m4]) m4_include([gl/m4/off_t.m4]) m4_include([gl/m4/read-file.m4]) m4_include([gl/m4/realloc.m4]) m4_include([gl/m4/ssize_t.m4]) m4_include([gl/m4/stdarg.m4]) m4_include([gl/m4/stddef_h.m4]) m4_include([gl/m4/stdint.m4]) m4_include([gl/m4/stdio_h.m4]) m4_include([gl/m4/stdlib_h.m4]) m4_include([gl/m4/sys_socket_h.m4]) m4_include([gl/m4/sys_stat_h.m4]) m4_include([gl/m4/sys_time_h.m4]) m4_include([gl/m4/sys_types_h.m4]) m4_include([gl/m4/time_h.m4]) m4_include([gl/m4/timespec.m4]) m4_include([gl/m4/unistd_h.m4]) m4_include([gl/m4/valgrind-tests.m4]) m4_include([gl/m4/version-etc.m4]) m4_include([gl/m4/warn-on-use.m4]) m4_include([gl/m4/warnings.m4]) m4_include([gl/m4/wchar_t.m4]) m4_include([m4/gtk-doc.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/pkg.m4]) m4_include([m4/update-header-version.m4]) libtasn1-3.4/maint.mk0000664000000000000000000017265412244720630011446 00000000000000# -*-Makefile-*- # This Makefile fragment tries to be general-purpose enough to be # used by many projects via the gnulib maintainer-makefile module. ## Copyright (C) 2001-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 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 . # This is reported not to work with make-3.79.1 # ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) ME := maint.mk # Diagnostic for continued use of deprecated variable. # Remove in 2013 ifneq ($(build_aux),) $(error "$(ME): \ set $$(_build-aux) relative to $$(srcdir) instead of $$(build_aux)") endif # Helper variables. _empty = _sp = $(_empty) $(_empty) # _equal,S1,S2 # ------------ # If S1 == S2, return S1, otherwise the empty string. _equal = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1))) # member-check,VARIABLE,VALID-VALUES # ---------------------------------- # Check that $(VARIABLE) is in the space-separated list of VALID-VALUES, and # return it. Die otherwise. member-check = \ $(strip \ $(if $($(1)), \ $(if $(findstring $(_sp),$($(1))), \ $(error invalid $(1): '$($(1))', expected $(2)), \ $(or $(findstring $(_sp)$($(1))$(_sp),$(_sp)$(2)$(_sp)), \ $(error invalid $(1): '$($(1))', expected $(2)))), \ $(error $(1) undefined))) # Do not save the original name or timestamp in the .tar.gz file. # Use --rsyncable if available. gzip_rsyncable := \ $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null \ && printf %s --rsyncable) GZIP_ENV = '--no-name --best $(gzip_rsyncable)' GIT = git VC = $(GIT) VC_LIST = $(srcdir)/$(_build-aux)/vc-list-files -C $(srcdir) # You can override this variable in cfg.mk to set your own regexp # matching files to ignore. VC_LIST_ALWAYS_EXCLUDE_REGEX ?= ^$$ # This is to preprocess robustly the output of $(VC_LIST), so that even # when $(srcdir) is a pathological name like "....", the leading sed command # removes only the intended prefix. _dot_escaped_srcdir = $(subst .,\.,$(srcdir)) # Post-process $(VC_LIST) output, prepending $(srcdir)/, but only # when $(srcdir) is not ".". ifeq ($(srcdir),.) _prepend_srcdir_prefix = else _prepend_srcdir_prefix = | sed 's|^|$(srcdir)/|' endif # In order to be able to consistently filter "."-relative names, # (i.e., with no $(srcdir) prefix), this definition is careful to # remove any $(srcdir) prefix, and to restore what it removes. _sc_excl = \ $(or $(exclude_file_name_regexp--$@),^$$) VC_LIST_EXCEPT = \ $(VC_LIST) | sed 's|^$(_dot_escaped_srcdir)/||' \ | if test -f $(srcdir)/.x-$@; then grep -vEf $(srcdir)/.x-$@; \ else grep -Ev -e "$${VC_LIST_EXCEPT_DEFAULT-ChangeLog}"; fi \ | grep -Ev -e '($(VC_LIST_ALWAYS_EXCLUDE_REGEX)|$(_sc_excl))' \ $(_prepend_srcdir_prefix) ifeq ($(origin prev_version_file), undefined) prev_version_file = $(srcdir)/.prev-version endif PREV_VERSION := $(shell cat $(prev_version_file) 2>/dev/null) VERSION_REGEXP = $(subst .,\.,$(VERSION)) PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION)) ifeq ($(VC),$(GIT)) this-vc-tag = v$(VERSION) this-vc-tag-regexp = v$(VERSION_REGEXP) else tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]') tag-this-version = $(subst .,_,$(VERSION)) this-vc-tag = $(tag-package)-$(tag-this-version) this-vc-tag-regexp = $(this-vc-tag) endif my_distdir = $(PACKAGE)-$(VERSION) # Old releases are stored here. release_archive_dir ?= ../release # If RELEASE_TYPE is undefined, but RELEASE is, use its second word. # But overwrite VERSION. ifdef RELEASE VERSION := $(word 1, $(RELEASE)) RELEASE_TYPE ?= $(word 2, $(RELEASE)) endif # Validate and return $(RELEASE_TYPE), or die. RELEASE_TYPES = alpha beta stable release-type = $(call member-check,RELEASE_TYPE,$(RELEASE_TYPES)) # Override gnu_rel_host and url_dir_list in cfg.mk if these are not right. # Use alpha.gnu.org for alpha and beta releases. # Use ftp.gnu.org for stable releases. gnu_ftp_host-alpha = alpha.gnu.org gnu_ftp_host-beta = alpha.gnu.org gnu_ftp_host-stable = ftp.gnu.org gnu_rel_host ?= $(gnu_ftp_host-$(release-type)) url_dir_list ?= $(if $(call _equal,$(gnu_rel_host),ftp.gnu.org), \ http://ftpmirror.gnu.org/$(PACKAGE), \ ftp://$(gnu_rel_host)/gnu/$(PACKAGE)) # Override this in cfg.mk if you are using a different format in your # NEWS file. today = $(shell date +%Y-%m-%d) # Select which lines of NEWS are searched for $(news-check-regexp). # This is a sed line number spec. The default says that we search # lines 1..10 of NEWS for $(news-check-regexp). # If you want to search only line 3 or only lines 20-22, use "3" or "20,22". news-check-lines-spec ?= 1,10 news-check-regexp ?= '^\*.* $(VERSION_REGEXP) \($(today)\)' # Prevent programs like 'sort' from considering distinct strings to be equal. # Doing it here saves us from having to set LC_ALL elsewhere in this file. export LC_ALL = C ## --------------- ## ## Sanity checks. ## ## --------------- ## _cfg_mk := $(wildcard $(srcdir)/cfg.mk) # Collect the names of rules starting with 'sc_'. syntax-check-rules := $(sort $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \ $(srcdir)/$(ME) $(_cfg_mk))) .PHONY: $(syntax-check-rules) ifeq ($(shell $(VC_LIST) >/dev/null 2>&1; echo $$?),0) local-checks-available += $(syntax-check-rules) else local-checks-available += no-vc-detected no-vc-detected: @echo "No version control files detected; skipping syntax check" endif .PHONY: $(local-checks-available) # Arrange to print the name of each syntax-checking rule just before running it. $(syntax-check-rules): %: %.m sc_m_rules_ = $(patsubst %, %.m, $(syntax-check-rules)) .PHONY: $(sc_m_rules_) $(sc_m_rules_): @echo $(patsubst sc_%.m, %, $@) @date +%s.%N > .sc-start-$(basename $@) # Compute and print the elapsed time for each syntax-check rule. sc_z_rules_ = $(patsubst %, %.z, $(syntax-check-rules)) .PHONY: $(sc_z_rules_) $(sc_z_rules_): %.z: % @end=$$(date +%s.%N); \ start=$$(cat .sc-start-$*); \ rm -f .sc-start-$*; \ awk -v s=$$start -v e=$$end \ 'END {printf "%.2f $(patsubst sc_%,%,$*)\n", e - s}' < /dev/null # The patsubst here is to replace each sc_% rule with its sc_%.z wrapper # that computes and prints elapsed time. local-check := \ $(patsubst sc_%, sc_%.z, \ $(filter-out $(local-checks-to-skip), $(local-checks-available))) syntax-check: $(local-check) # _sc_search_regexp # # This macro searches for a given construct in the selected files and # then takes some action. # # Parameters (shell variables): # # prohibit | require # # Regular expression (ERE) denoting either a forbidden construct # or a required construct. Those arguments are exclusive. # # exclude # # Regular expression (ERE) denoting lines to ignore that matched # a prohibit construct. For example, this can be used to exclude # comments that mention why the nearby code uses an alternative # construct instead of the simpler prohibited construct. # # in_vc_files | in_files # # grep-E-style regexp selecting the files to check. For in_vc_files, # the regexp is used to select matching files from the list of all # version-controlled files; for in_files, it's from the names printed # by "find $(srcdir)". When neither is specified, use all files that # are under version control. # # containing | non_containing # # Select the files (non) containing strings matching this regexp. # If both arguments are specified then CONTAINING takes # precedence. # # with_grep_options # # Extra options for grep. # # ignore_case # # Ignore case. # # halt # # Message to display before to halting execution. # # Finally, you may exempt files based on an ERE matching file names. # For example, to exempt from the sc_space_tab check all files with the # .diff suffix, set this Make variable: # # exclude_file_name_regexp--sc_space_tab = \.diff$ # # Note that while this functionality is mostly inherited via VC_LIST_EXCEPT, # when filtering by name via in_files, we explicitly filter out matching # names here as well. # Initialize each, so that envvar settings cannot interfere. export require = export prohibit = export exclude = export in_vc_files = export in_files = export containing = export non_containing = export halt = export with_grep_options = # By default, _sc_search_regexp does not ignore case. export ignore_case = _ignore_case = $$(test -n "$$ignore_case" && printf %s -i || :) define _sc_say_and_exit dummy=; : so we do not need a semicolon before each use; \ { printf '%s\n' "$(ME): $$msg" 1>&2; exit 1; }; endef define _sc_search_regexp dummy=; : so we do not need a semicolon before each use; \ \ : Check arguments; \ test -n "$$prohibit" && test -n "$$require" \ && { msg='Cannot specify both prohibit and require' \ $(_sc_say_and_exit) } || :; \ test -z "$$prohibit" && test -z "$$require" \ && { msg='Should specify either prohibit or require' \ $(_sc_say_and_exit) } || :; \ test -z "$$prohibit" && test -n "$$exclude" \ && { msg='Use of exclude requires a prohibit pattern' \ $(_sc_say_and_exit) } || :; \ test -n "$$in_vc_files" && test -n "$$in_files" \ && { msg='Cannot specify both in_vc_files and in_files' \ $(_sc_say_and_exit) } || :; \ test "x$$halt" != x \ || { msg='halt not defined' $(_sc_say_and_exit) }; \ \ : Filter by file name; \ if test -n "$$in_files"; then \ files=$$(find $(srcdir) | grep -E "$$in_files" \ | grep -Ev '$(_sc_excl)'); \ else \ files=$$($(VC_LIST_EXCEPT)); \ if test -n "$$in_vc_files"; then \ files=$$(echo "$$files" | grep -E "$$in_vc_files"); \ fi; \ fi; \ \ : Filter by content; \ test -n "$$files" && test -n "$$containing" \ && { files=$$(grep -l "$$containing" $$files); } || :; \ test -n "$$files" && test -n "$$non_containing" \ && { files=$$(grep -vl "$$non_containing" $$files); } || :; \ \ : Check for the construct; \ if test -n "$$files"; then \ if test -n "$$prohibit"; then \ grep $$with_grep_options $(_ignore_case) -nE "$$prohibit" $$files \ | grep -vE "$${exclude:-^$$}" \ && { msg="$$halt" $(_sc_say_and_exit) } || :; \ else \ grep $$with_grep_options $(_ignore_case) -LE "$$require" $$files \ | grep . \ && { msg="$$halt" $(_sc_say_and_exit) } || :; \ fi \ else :; \ fi || :; endef sc_avoid_if_before_free: @$(srcdir)/$(_build-aux)/useless-if-before-free \ $(useless_free_options) \ $$($(VC_LIST_EXCEPT) | grep -v useless-if-before-free) && \ { echo '$(ME): found useless "if" before "free" above' 1>&2; \ exit 1; } || : sc_cast_of_argument_to_free: @prohibit='\&2; \ exit 1; } || : # Error messages should not start with a capital letter sc_error_message_uppercase: @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \ | grep -E '"[A-Z]' \ | grep -vE '"FATAL|"WARNING|"Java|"C#|PRIuMAX' && \ { echo '$(ME): found capitalized error message' 1>&2; \ exit 1; } || : # Error messages should not end with a period sc_error_message_period: @grep -nEA2 '[^rp]error *\(' $$($(VC_LIST_EXCEPT)) \ | grep -E '[^."]\."' && \ { echo '$(ME): found error message ending in period' 1>&2; \ exit 1; } || : sc_file_system: @prohibit=file''system \ ignore_case=1 \ halt='found use of "file''system"; spell it "file system"' \ $(_sc_search_regexp) # Don't use cpp tests of this symbol. All code assumes config.h is included. sc_prohibit_have_config_h: @prohibit='^# *if.*HAVE''_CONFIG_H' \ halt='found use of HAVE''_CONFIG_H; remove' \ $(_sc_search_regexp) # Nearly all .c files must include . However, we also permit this # via inclusion of a package-specific header, if cfg.mk specified one. # config_h_header must be suitable for grep -E. config_h_header ?= sc_require_config_h: @require='^# *include $(config_h_header)' \ in_vc_files='\.c$$' \ halt='the above files do not include ' \ $(_sc_search_regexp) # You must include before including any other header file. # This can possibly be via a package-specific header, if given by cfg.mk. sc_require_config_h_first: @if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \ fail=0; \ for i in $$($(VC_LIST_EXCEPT) | grep '\.c$$'); do \ grep '^# *include\>' $$i | sed 1q \ | grep -E '^# *include $(config_h_header)' > /dev/null \ || { echo $$i; fail=1; }; \ done; \ test $$fail = 1 && \ { echo '$(ME): the above files include some other header' \ 'before ' 1>&2; exit 1; } || :; \ else :; \ fi sc_prohibit_HAVE_MBRTOWC: @prohibit='\bHAVE_MBRTOWC\b' \ halt="do not use $$prohibit; it is always defined" \ $(_sc_search_regexp) # To use this "command" macro, you must first define two shell variables: # h: the header name, with no enclosing <> or "" # re: a regular expression that matches IFF something provided by $h is used. define _sc_header_without_use dummy=; : so we do not need a semicolon before each use; \ h_esc=`echo '[<"]'"$$h"'[">]'|sed 's/\./\\\\./g'`; \ if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \ files=$$(grep -l '^# *include '"$$h_esc" \ $$($(VC_LIST_EXCEPT) | grep '\.c$$')) && \ grep -LE "$$re" $$files | grep . && \ { echo "$(ME): the above files include $$h but don't use it" \ 1>&2; exit 1; } || :; \ else :; \ fi endef # Prohibit the inclusion of assert.h without an actual use of assert. sc_prohibit_assert_without_use: @h='assert.h' re='\new(file => "/dev/stdin")->as_string'|sed 's/\?://g' # Note this was produced by the above: # _xa1 = \ #x(((2n?)?re|c(har)?|n(re|m)|z)alloc|alloc_(oversized|die)|m(alloc|emdup)|strdup) # But we can do better, in at least two ways: # 1) take advantage of two "dup"-suffixed strings: # x(((2n?)?re|c(har)?|n(re|m)|[mz])alloc|alloc_(oversized|die)|(mem|str)dup) # 2) notice that "c(har)?|[mz]" is equivalent to the shorter and more readable # "char|[cmz]" # x(((2n?)?re|char|n(re|m)|[cmz])alloc|alloc_(oversized|die)|(mem|str)dup) _xa1 = x(((2n?)?re|char|n(re|m)|[cmz])alloc|alloc_(oversized|die)|(mem|str)dup) _xa2 = X([CZ]|N?M)ALLOC sc_prohibit_xalloc_without_use: @h='xalloc.h' \ re='\<($(_xa1)|$(_xa2)) *\('\ $(_sc_header_without_use) # Extract function names: # perl -lne '/^(?:extern )?(?:void|char) \*?(\w+) *\(/ and print $1' lib/hash.h _hash_re = \ clear|delete|free|get_(first|next)|insert|lookup|print_statistics|reset_tuning _hash_fn = \<($(_hash_re)) *\( _hash_struct = (struct )?\<[Hh]ash_(table|tuning)\> sc_prohibit_hash_without_use: @h='hash.h' \ re='$(_hash_fn)|$(_hash_struct)'\ $(_sc_header_without_use) sc_prohibit_cloexec_without_use: @h='cloexec.h' re='\<(set_cloexec_flag|dup_cloexec) *\(' \ $(_sc_header_without_use) sc_prohibit_posixver_without_use: @h='posixver.h' re='\' \ halt='do not use HAVE''_FCNTL_H or O'_NDELAY \ $(_sc_search_regexp) # FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ # Each nonempty ChangeLog line must start with a year number, or a TAB. sc_changelog: @prohibit='^[^12 ]' \ in_vc_files='^ChangeLog$$' \ halt='found unexpected prefix in a ChangeLog' \ $(_sc_search_regexp) # Ensure that each .c file containing a "main" function also # calls set_program_name. sc_program_name: @require='set_program_name *\(m?argv\[0\]\);' \ in_vc_files='\.c$$' \ containing='\
/dev/null \ && : || { die=1; echo $$i; } \ done; \ test $$die = 1 && \ { echo 1>&2 '$(ME): the final line in each of the above is not:'; \ echo 1>&2 'Exit something'; \ exit 1; } || :; \ fi sc_trailing_blank: @prohibit='[ ]$$' \ halt='found trailing blank(s)' \ exclude='^Binary file .* matches$$' \ $(_sc_search_regexp) # Match lines like the following, but where there is only one space # between the options and the description: # -D, --all-repeated[=delimit-method] print all duplicate lines\n longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)? sc_two_space_separator_in_usage: @prohibit='^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \ halt='help2man requires at least two spaces between an option and its description'\ $(_sc_search_regexp) # A regexp matching function names like "error" that may be used # to emit translatable messages. _gl_translatable_diag_func_re ?= error # Look for diagnostics that aren't marked for translation. # This won't find any for which error's format string is on a separate line. sc_unmarked_diagnostics: @prohibit='\<$(_gl_translatable_diag_func_re) *\([^"]*"[^"]*[a-z]{3}' \ exclude='(_|ngettext ?)\(' \ halt='found unmarked diagnostic(s)' \ $(_sc_search_regexp) # Avoid useless parentheses like those in this example: # #if defined (SYMBOL) || defined (SYM2) sc_useless_cpp_parens: @prohibit='^# *if .*defined *\(' \ halt='found useless parentheses in cpp directive' \ $(_sc_search_regexp) # List headers for which HAVE_HEADER_H is always true, assuming you are # using the appropriate gnulib module. CAUTION: for each "unnecessary" # #if HAVE_HEADER_H that you remove, be sure that your project explicitly # requires the gnulib module that guarantees the usability of that header. gl_assured_headers_ = \ cd $(gnulib_dir)/lib && echo *.in.h|sed 's/\.in\.h//g' # Convert the list of names to upper case, and replace each space with "|". az_ = abcdefghijklmnopqrstuvwxyz AZ_ = ABCDEFGHIJKLMNOPQRSTUVWXYZ gl_header_upper_case_or_ = \ $$($(gl_assured_headers_) \ | tr $(az_)/.- $(AZ_)___ \ | tr -s ' ' '|' \ ) sc_prohibit_always_true_header_tests: @or=$(gl_header_upper_case_or_); \ re="HAVE_($$or)_H"; \ prohibit='\<'"$$re"'\>' \ halt=$$(printf '%s\n' \ 'do not test the above HAVE_
_H symbol(s);' \ ' with the corresponding gnulib module, they are always true') \ $(_sc_search_regexp) sc_prohibit_defined_have_decl_tests: @prohibit='#[ ]*if(n?def|.*\[ (]+HAVE_DECL_' \ halt='HAVE_DECL macros are always defined' \ $(_sc_search_regexp) # ================================================================== gl_other_headers_ ?= \ intprops.h \ openat.h \ stat-macros.h # Perl -lne code to extract "significant" cpp-defined symbols from a # gnulib header file, eliminating a few common false-positives. # The exempted names below are defined only conditionally in gnulib, # and hence sometimes must/may be defined in application code. gl_extract_significant_defines_ = \ /^\# *define ([^_ (][^ (]*)(\s*\(|\s+\w+)/\ && $$2 !~ /(?:rpl_|_used_without_)/\ && $$1 !~ /^(?:NSIG|ENODATA)$$/\ && $$1 !~ /^(?:SA_RESETHAND|SA_RESTART)$$/\ and print $$1 # Create a list of regular expressions matching the names # of macros that are guaranteed to be defined by parts of gnulib. define def_sym_regex gen_h=$(gl_generated_headers_); \ (cd $(gnulib_dir)/lib; \ for f in *.in.h $(gl_other_headers_); do \ test -f $$f \ && perl -lne '$(gl_extract_significant_defines_)' $$f; \ done; \ ) | sort -u \ | sed 's/^/^ *# *(define|undef) */;s/$$/\\>/' endef # Don't define macros that we already get from gnulib header files. sc_prohibit_always-defined_macros: @if test -d $(gnulib_dir); then \ case $$(echo all: | grep -l -f - Makefile) in Makefile);; *) \ echo '$(ME): skipping $@: you lack GNU grep' 1>&2; exit 0;; \ esac; \ $(def_sym_regex) | grep -E -f - $$($(VC_LIST_EXCEPT)) \ && { echo '$(ME): define the above via some gnulib .h file' \ 1>&2; exit 1; } || :; \ fi # ================================================================== # Prohibit checked in backup files. sc_prohibit_backup_files: @$(VC_LIST) | grep '~$$' && \ { echo '$(ME): found version controlled backup file' 1>&2; \ exit 1; } || : # Require the latest GPL. sc_GPL_version: @prohibit='either ''version [^3]' \ halt='GPL vN, N!=3' \ $(_sc_search_regexp) # Require the latest GFDL. Two regexp, since some .texi files end up # line wrapping between 'Free Documentation License,' and 'Version'. _GFDL_regexp = (Free ''Documentation.*Version 1\.[^3]|Version 1\.[^3] or any) sc_GFDL_version: @prohibit='$(_GFDL_regexp)' \ halt='GFDL vN, N!=3' \ $(_sc_search_regexp) # Don't use Texinfo's @acronym{}. # http://lists.gnu.org/archive/html/bug-gnulib/2010-03/msg00321.html texinfo_suffix_re_ ?= \.(txi|texi(nfo)?)$$ sc_texinfo_acronym: @prohibit='@acronym\{' \ in_vc_files='$(texinfo_suffix_re_)' \ halt='found use of Texinfo @acronym{}' \ $(_sc_search_regexp) cvs_keywords = \ Author|Date|Header|Id|Name|Locker|Log|RCSfile|Revision|Source|State sc_prohibit_cvs_keyword: @prohibit='\$$($(cvs_keywords))\$$' \ halt='do not use CVS keyword expansion' \ $(_sc_search_regexp) # This Perl code is slightly obfuscated. Not only is each "$" doubled # because it's in a Makefile, but the $$c's are comments; we cannot # use "#" due to the way the script ends up concatenated onto one line. # It would be much more concise, and would produce better output (including # counts) if written as: # perl -ln -0777 -e '/\n(\n+)$/ and print "$ARGV: ".length $1' ... # but that would be far less efficient, reading the entire contents # of each file, rather than just the last two bytes of each. # In addition, while the code below detects both blank lines and a missing # newline at EOF, the above detects only the former. # # This is a perl script that is expected to be the single-quoted argument # to a command-line "-le". The remaining arguments are file names. # Print the name of each file that does not end in exactly one newline byte. # I.e., warn if there are blank lines (2 or more newlines), or if the # last byte is not a newline. However, currently we don't complain # about any file that contains exactly one byte. # Exit nonzero if at least one such file is found, otherwise, exit 0. # Warn about, but otherwise ignore open failure. Ignore seek/read failure. # # Use this if you want to remove trailing empty lines from selected files: # perl -pi -0777 -e 's/\n\n+$/\n/' files... # require_exactly_one_NL_at_EOF_ = \ foreach my $$f (@ARGV) \ { \ open F, "<", $$f or (warn "failed to open $$f: $$!\n"), next; \ my $$p = sysseek (F, -2, 2); \ my $$c = "seek failure probably means file has < 2 bytes; ignore"; \ my $$last_two_bytes; \ defined $$p and $$p = sysread F, $$last_two_bytes, 2; \ close F; \ $$c = "ignore read failure"; \ $$p && ($$last_two_bytes eq "\n\n" \ || substr ($$last_two_bytes,1) ne "\n") \ and (print $$f), $$fail=1; \ } \ END { exit defined $$fail } sc_prohibit_empty_lines_at_EOF: @perl -le '$(require_exactly_one_NL_at_EOF_)' $$($(VC_LIST_EXCEPT)) \ || { echo '$(ME): empty line(s) or no newline at EOF' \ 1>&2; exit 1; } || : # Make sure we don't use st_blocks. Use ST_NBLOCKS instead. # This is a bit of a kludge, since it prevents use of the string # even in comments, but for now it does the job with no false positives. sc_prohibit_stat_st_blocks: @prohibit='[.>]st_blocks' \ halt='do not use st_blocks; use ST_NBLOCKS' \ $(_sc_search_regexp) # Make sure we don't define any S_IS* macros in src/*.c files. # They're already defined via gnulib's sys/stat.h replacement. sc_prohibit_S_IS_definition: @prohibit='^ *# *define *S_IS' \ halt='do not define S_IS* macros; include ' \ $(_sc_search_regexp) # Perl block to convert a match to FILE_NAME:LINENO:TEST, # that is shared by two definitions below. perl_filename_lineno_text_ = \ -e ' {' \ -e ' $$n = ($$` =~ tr/\n/\n/ + 1);' \ -e ' ($$v = $$&) =~ s/\n/\\n/g;' \ -e ' print "$$ARGV:$$n:$$v\n";' \ -e ' }' prohibit_doubled_word_RE_ ?= \ /\b(then?|[iao]n|i[fst]|but|f?or|at|and|[dt]o)\s+\1\b/gims prohibit_doubled_word_ = \ -e 'while ($(prohibit_doubled_word_RE_))' \ $(perl_filename_lineno_text_) # Define this to a regular expression that matches # any filename:dd:match lines you want to ignore. # The default is to ignore no matches. ignore_doubled_word_match_RE_ ?= ^$$ sc_prohibit_doubled_word: @perl -n -0777 $(prohibit_doubled_word_) $$($(VC_LIST_EXCEPT)) \ | grep -vE '$(ignore_doubled_word_match_RE_)' \ | grep . && { echo '$(ME): doubled words' 1>&2; exit 1; } || : # A regular expression matching undesirable combinations of words like # "can not"; this matches them even when the two words appear on different # lines, but not when there is an intervening delimiter like "#" or "*". # Similarly undesirable, "See @xref{...}", since an @xref should start # a sentence. Explicitly prohibit any prefix of "see" or "also". # Also prohibit a prefix matching "\w+ +". # @pxref gets the same see/also treatment and should be parenthesized; # presume it must *not* start a sentence. bad_xref_re_ ?= (?:[\w,:;] +|(?:see|also)\s+)\@xref\{ bad_pxref_re_ ?= (?:[.!?]|(?:see|also))\s+\@pxref\{ prohibit_undesirable_word_seq_RE_ ?= \ /(?:\bcan\s+not\b|$(bad_xref_re_)|$(bad_pxref_re_))/gims prohibit_undesirable_word_seq_ = \ -e 'while ($(prohibit_undesirable_word_seq_RE_))' \ $(perl_filename_lineno_text_) # Define this to a regular expression that matches # any filename:dd:match lines you want to ignore. # The default is to ignore no matches. ignore_undesirable_word_sequence_RE_ ?= ^$$ sc_prohibit_undesirable_word_seq: @perl -n -0777 $(prohibit_undesirable_word_seq_) \ $$($(VC_LIST_EXCEPT)) \ | grep -vE '$(ignore_undesirable_word_sequence_RE_)' | grep . \ && { echo '$(ME): undesirable word sequence' >&2; exit 1; } || : _ptm1 = use "test C1 && test C2", not "test C1 -''a C2" _ptm2 = use "test C1 || test C2", not "test C1 -''o C2" # Using test's -a and -o operators is not portable. # We prefer test over [, since the latter is spelled [[ in configure.ac. sc_prohibit_test_minus_ao: @prohibit='(\ /dev/null \ || { fail=1; echo 1>&2 "$(ME): $$p uses proper_name_utf8"; }; \ done; \ test $$fail = 1 && \ { echo 1>&2 '$(ME): the above do not link with any ICONV library'; \ exit 1; } || :; \ fi # Warn about "c0nst struct Foo const foo[]", # but not about "char const *const foo" or "#define const const". sc_redundant_const: @prohibit='\bconst\b[[:space:][:alnum:]]{2,}\bconst\b' \ halt='redundant "const" in declarations' \ $(_sc_search_regexp) sc_const_long_option: @prohibit='^ *static.*struct option ' \ exclude='const struct option|struct option const' \ halt='add "const" to the above declarations' \ $(_sc_search_regexp) NEWS_hash = \ $$(sed -n '/^\*.* $(PREV_VERSION_REGEXP) ([0-9-]*)/,$$p' \ $(srcdir)/NEWS \ | perl -0777 -pe \ 's/^Copyright.+?Free\sSoftware\sFoundation,\sInc\.\n//ms' \ | md5sum - \ | sed 's/ .*//') # Ensure that we don't accidentally insert an entry into an old NEWS block. sc_immutable_NEWS: @if test -f $(srcdir)/NEWS; then \ test "$(NEWS_hash)" = '$(old_NEWS_hash)' && : || \ { echo '$(ME): you have modified old NEWS' 1>&2; exit 1; }; \ fi # Update the hash stored above. Do this after each release and # for any corrections to old entries. update-NEWS-hash: NEWS perl -pi -e 's/^(old_NEWS_hash[ \t]+:?=[ \t]+).*/$${1}'"$(NEWS_hash)/" \ $(srcdir)/cfg.mk # Ensure that we use only the standard $(VAR) notation, # not @...@ in Makefile.am, now that we can rely on automake # to emit a definition for each substituted variable. # However, there is still one case in which @VAR@ use is not just # legitimate, but actually required: when augmenting an automake-defined # variable with a prefix. For example, gettext uses this: # MAKEINFO = env LANG= LC_MESSAGES= LC_ALL= LANGUAGE= @MAKEINFO@ # otherwise, makeinfo would put German or French (current locale) # navigation hints in the otherwise-English documentation. # # Allow the package to add exceptions via a hook in cfg.mk; # for example, @PRAGMA_SYSTEM_HEADER@ can be permitted by # setting this to ' && !/PRAGMA_SYSTEM_HEADER/'. _makefile_at_at_check_exceptions ?= sc_makefile_at_at_check: @perl -ne '/\@\w+\@/' \ -e ' && !/(\w+)\s+=.*\@\1\@$$/' \ -e ''$(_makefile_at_at_check_exceptions) \ -e 'and (print "$$ARGV:$$.: $$_"), $$m=1; END {exit !$$m}' \ $$($(VC_LIST_EXCEPT) | grep -E '(^|/)(Makefile\.am|[^/]+\.mk)$$') \ && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || : news-check: NEWS $(AM_V_GEN)if sed -n $(news-check-lines-spec)p $< \ | grep -E $(news-check-regexp) >/dev/null; then \ :; \ else \ echo 'NEWS: $$(news-check-regexp) failed to match' 1>&2; \ exit 1; \ fi sc_makefile_TAB_only_indentation: @prohibit='^ [ ]{8}' \ in_vc_files='akefile|\.mk$$' \ halt='found TAB-8-space indentation' \ $(_sc_search_regexp) sc_m4_quote_check: @prohibit='(AC_DEFINE(_UNQUOTED)?|AC_DEFUN)\([^[]' \ in_vc_files='(^configure\.ac|\.m4)$$' \ halt='quote the first arg to AC_DEF*' \ $(_sc_search_regexp) fix_po_file_diag = \ 'you have changed the set of files with translatable diagnostics;\n\ apply the above patch\n' # Verify that all source files using _() (more specifically, files that # match $(_gl_translatable_string_re)) are listed in po/POTFILES.in. po_file ?= $(srcdir)/po/POTFILES.in generated_files ?= $(srcdir)/lib/*.[ch] _gl_translatable_string_re ?= \b(N?_|gettext *)\([^)"]*("|$$) sc_po_check: @if test -f $(po_file); then \ grep -E -v '^(#|$$)' $(po_file) \ | grep -v '^src/false\.c$$' | sort > $@-1; \ files=; \ for file in $$($(VC_LIST_EXCEPT)) $(generated_files); do \ test -r $$file || continue; \ case $$file in \ *.m4|*.mk) continue ;; \ *.?|*.??) ;; \ *) continue;; \ esac; \ case $$file in \ *.[ch]) \ base=`expr " $$file" : ' \(.*\)\..'`; \ { test -f $$base.l || test -f $$base.y; } && continue;; \ esac; \ files="$$files $$file"; \ done; \ grep -E -l '$(_gl_translatable_string_re)' $$files \ | sed 's|^$(_dot_escaped_srcdir)/||' | sort -u > $@-2; \ diff -u -L $(po_file) -L $(po_file) $@-1 $@-2 \ || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; }; \ rm -f $@-1 $@-2; \ fi # Sometimes it is useful to change the PATH environment variable # in Makefiles. When doing so, it's better not to use the Unix-centric # path separator of ':', but rather the automake-provided '$(PATH_SEPARATOR)'. msg = 'Do not use ":" above; use $$(PATH_SEPARATOR) instead' sc_makefile_path_separator_check: @prohibit='PATH[=].*:' \ in_vc_files='akefile|\.mk$$' \ halt=$(msg) \ $(_sc_search_regexp) # Check that 'make alpha' will not fail at the end of the process, # i.e., when pkg-M.N.tar.xz already exists (either in "." or in ../release) # and is read-only. writable-files: $(AM_V_GEN)if test -d $(release_archive_dir); then \ for file in $(DIST_ARCHIVES); do \ for p in ./ $(release_archive_dir)/; do \ test -e $$p$$file || continue; \ test -w $$p$$file \ || { echo ERROR: $$p$$file is not writable; fail=1; }; \ done; \ done; \ test "$$fail" && exit 1 || : ; \ else :; \ fi v_etc_file = $(gnulib_dir)/lib/version-etc.c sample-test = tests/sample-test texi = doc/$(PACKAGE).texi # Make sure that the copyright date in $(v_etc_file) is up to date. # Do the same for the $(sample-test) and the main doc/.texi file. sc_copyright_check: @require='enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' \ in_files=$(v_etc_file) \ halt='out of date copyright in $(v_etc_file); update it' \ $(_sc_search_regexp) @require='# Copyright \(C\) '$$(date +%Y)' Free' \ in_vc_files=$(sample-test) \ halt='out of date copyright in $(sample-test); update it' \ $(_sc_search_regexp) @require='Copyright @copyright\{\} .*'$$(date +%Y)' Free' \ in_vc_files=$(texi) \ halt='out of date copyright in $(texi); update it' \ $(_sc_search_regexp) # If tests/help-version exists and seems to be new enough, assume that its # use of init.sh and path_prepend_ is correct, and ensure that every other # use of init.sh is identical. # This is useful because help-version cross-checks prog --version # with $(VERSION), which verifies that its path_prepend_ invocation # sets PATH correctly. This is an inexpensive way to ensure that # the other init.sh-using tests also get it right. _hv_file ?= $(srcdir)/tests/help-version _hv_regex_weak ?= ^ *\. .*/init\.sh" # Fix syntax-highlighters " _hv_regex_strong ?= ^ *\. "\$${srcdir=\.}/init\.sh" sc_cross_check_PATH_usage_in_tests: @if test -f $(_hv_file); then \ grep -l 'VERSION mismatch' $(_hv_file) >/dev/null \ || { echo "$@: skipped: no such file: $(_hv_file)" 1>&2; \ exit 0; }; \ grep -lE '$(_hv_regex_strong)' $(_hv_file) >/dev/null \ || { echo "$@: $(_hv_file) lacks conforming use of init.sh" 1>&2; \ exit 1; }; \ good=$$(grep -E '$(_hv_regex_strong)' $(_hv_file)); \ grep -LFx "$$good" \ $$(grep -lE '$(_hv_regex_weak)' $$($(VC_LIST_EXCEPT))) \ | grep . && \ { echo "$(ME): the above files use path_prepend_ inconsistently" \ 1>&2; exit 1; } || :; \ fi # BRE regex of file contents to identify a test script. _test_script_regex ?= \ # In tests, use "compare expected actual", not the reverse. sc_prohibit_reversed_compare_failure: @prohibit='\ vc-diffs || : $(AM_V_at)if test -s vc-diffs; then \ cat vc-diffs; \ echo "Some files are locally modified:" 1>&2; \ exit 1; \ else \ rm vc-diffs; \ fi rel-files = $(DIST_ARCHIVES) gnulib_dir ?= $(srcdir)/gnulib gnulib-version = $$(cd $(gnulib_dir) && git describe) bootstrap-tools ?= autoconf,automake,gnulib # If it's not already specified, derive the GPG key ID from # the signed tag we've just applied to mark this release. gpg_key_ID ?= \ $$(cd $(srcdir) \ && git cat-file tag v$(VERSION) \ | gpgv --status-fd 1 --keyring /dev/null - - 2>/dev/null \ | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}') translation_project_ ?= coordinator@translationproject.org # Make info-gnu the default only for a stable release. announcement_Cc_stable = $(translation_project_), $(PACKAGE_BUGREPORT) announcement_mail_headers_stable = \ To: info-gnu@gnu.org \ Cc: $(announcement_Cc_) \ Mail-Followup-To: $(PACKAGE_BUGREPORT) announcement_Cc_alpha = $(translation_project_) announcement_mail_headers_alpha = \ To: $(PACKAGE_BUGREPORT) \ Cc: $(announcement_Cc_) announcement_mail_Cc_beta = $(announcement_mail_Cc_alpha) announcement_mail_headers_beta = $(announcement_mail_headers_alpha) announcement_mail_Cc_ ?= $(announcement_mail_Cc_$(release-type)) announcement_mail_headers_ ?= $(announcement_mail_headers_$(release-type)) announcement: NEWS ChangeLog $(rel-files) # Not $(AM_V_GEN) since the output of this command serves as # announcement message: it would start with " GEN announcement". $(AM_V_at)$(srcdir)/$(_build-aux)/announce-gen \ --mail-headers='$(announcement_mail_headers_)' \ --release-type=$(release-type) \ --package=$(PACKAGE) \ --prev=$(PREV_VERSION) \ --curr=$(VERSION) \ --gpg-key-id=$(gpg_key_ID) \ --srcdir=$(srcdir) \ --news=$(srcdir)/NEWS \ --bootstrap-tools=$(bootstrap-tools) \ $$(case ,$(bootstrap-tools), in (*,gnulib,*) \ echo --gnulib-version=$(gnulib-version);; esac) \ --no-print-checksums \ $(addprefix --url-dir=, $(url_dir_list)) .PHONY: release-commit release-commit: $(AM_V_GEN)cd $(srcdir) \ && $(_build-aux)/do-release-commit-and-tag \ -C $(abs_builddir) $(RELEASE) ## ---------------- ## ## Updating files. ## ## ---------------- ## ftp-gnu = ftp://ftp.gnu.org/gnu www-gnu = http://www.gnu.org upload_dest_dir_ ?= $(PACKAGE) upload_command = \ $(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \ --to $(gnu_rel_host):$(upload_dest_dir_) \ $(rel-files) emit_upload_commands: @echo ===================================== @echo ===================================== @echo '$(upload_command)' @echo '# send the ~/announce-$(my_distdir) e-mail' @echo ===================================== @echo ===================================== .PHONY: upload upload: $(AM_V_GEN)$(upload_command) define emit-commit-log printf '%s\n' 'maint: post-release administrivia' '' \ '* NEWS: Add header line for next release.' \ '* .prev-version: Record previous version.' \ '* cfg.mk (old_NEWS_hash): Auto-update.' endef .PHONY: no-submodule-changes no-submodule-changes: $(AM_V_GEN)if test -d $(srcdir)/.git \ && git --version >/dev/null 2>&1; then \ diff=$$(cd $(srcdir) && git submodule -q foreach \ git diff-index --name-only HEAD) \ || exit 1; \ case $$diff in '') ;; \ *) echo '$(ME): submodule files are locally modified:'; \ echo "$$diff"; exit 1;; esac; \ else \ : ; \ fi submodule-checks ?= no-submodule-changes public-submodule-commit # Ensure that each sub-module commit we're using is public. # Without this, it is too easy to tag and release code that # cannot be built from a fresh clone. .PHONY: public-submodule-commit public-submodule-commit: $(AM_V_GEN)if test -d $(srcdir)/.git \ && git --version >/dev/null 2>&1; then \ cd $(srcdir) && \ git submodule --quiet foreach \ test '"$$(git rev-parse "$$sha1")"' \ = '"$$(git merge-base origin "$$sha1")"' \ || { echo '$(ME): found non-public submodule commit' >&2; \ exit 1; }; \ else \ : ; \ fi # This rule has a high enough utility/cost ratio that it should be a # dependent of "check" by default. However, some of us do occasionally # commit a temporary change that deliberately points to a non-public # submodule commit, and want to be able to use rules like "make check". # In that case, run e.g., "make check gl_public_submodule_commit=" # to disable this test. gl_public_submodule_commit ?= public-submodule-commit check: $(gl_public_submodule_commit) .PHONY: alpha beta stable release ALL_RECURSIVE_TARGETS += alpha beta stable alpha beta stable: $(local-check) writable-files $(submodule-checks) $(AM_V_GEN)test $@ = stable \ && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \ || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\ || : $(AM_V_at)$(MAKE) vc-diff-check $(AM_V_at)$(MAKE) news-check $(AM_V_at)$(MAKE) distcheck $(AM_V_at)$(MAKE) dist $(AM_V_at)$(MAKE) $(release-prep-hook) RELEASE_TYPE=$@ $(AM_V_at)$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@ release: $(AM_V_GEN)$(MAKE) $(release-type) # Override this in cfg.mk if you follow different procedures. release-prep-hook ?= release-prep gl_noteworthy_news_ = * Noteworthy changes in release ?.? (????-??-??) [?] .PHONY: release-prep release-prep: $(AM_V_GEN)$(MAKE) --no-print-directory -s announcement \ > ~/announce-$(my_distdir) $(AM_V_at)if test -d $(release_archive_dir); then \ ln $(rel-files) $(release_archive_dir); \ chmod a-w $(rel-files); \ fi $(AM_V_at)echo $(VERSION) > $(prev_version_file) $(AM_V_at)$(MAKE) update-NEWS-hash $(AM_V_at)perl -pi \ -e '$$. == 3 and print "$(gl_noteworthy_news_)\n\n\n"' \ $(srcdir)/NEWS $(AM_V_at)msg=$$($(emit-commit-log)) || exit 1; \ cd $(srcdir) && $(VC) commit -m "$$msg" -a # Override this with e.g., -s $(srcdir)/some_other_name.texi # if the default $(PACKAGE)-derived name doesn't apply. gendocs_options_ ?= .PHONY: web-manual web-manual: $(AM_V_GEN)test -z "$(manual_title)" \ && { echo define manual_title in cfg.mk 1>&2; exit 1; } || : $(AM_V_at)cd '$(srcdir)/doc'; \ $(SHELL) ../$(_build-aux)/gendocs.sh $(gendocs_options_) \ -o '$(abs_builddir)/doc/manual' \ --email $(PACKAGE_BUGREPORT) $(PACKAGE) \ "$(PACKAGE_NAME) - $(manual_title)" $(AM_V_at)echo " *** Upload the doc/manual directory to web-cvs." .PHONY: web-manual-update web-manual-update: $(AM_V_GEN)cd $(srcdir) \ && $(_build-aux)/gnu-web-doc-update -C $(abs_builddir) # Code Coverage init-coverage: $(MAKE) $(AM_MAKEFLAGS) clean lcov --directory . --zerocounters COVERAGE_CCOPTS ?= "-g --coverage" COVERAGE_OUT ?= doc/coverage build-coverage: $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) check mkdir -p $(COVERAGE_OUT) lcov --directory . --output-file $(COVERAGE_OUT)/$(PACKAGE).info \ --capture gen-coverage: genhtml --output-directory $(COVERAGE_OUT) \ $(COVERAGE_OUT)/$(PACKAGE).info \ --highlight --frames --legend \ --title "$(PACKAGE_NAME)" coverage: init-coverage build-coverage gen-coverage # Some projects carry local adjustments for gnulib modules via patches in # a gnulib patch directory whose default name is gl/ (defined in bootstrap # via local_gl_dir=gl). Those patches become stale as the originals evolve # in gnulib. Use this rule to refresh any stale patches. It applies each # patch to the original in $(gnulib_dir) and uses the temporary result to # generate a fuzz-free .diff file. If you customize the name of your local # gnulib patch directory via bootstrap.conf, this rule detects that name. # Run this from a non-VPATH (i.e., srcdir) build directory. .PHONY: refresh-gnulib-patches refresh-gnulib-patches: gl=gl; \ if test -f bootstrap.conf; then \ t=$$(perl -lne '/^\s*local_gl_dir=(\S+)/ and $$d=$$1;' \ -e 'END{defined $$d and print $$d}' bootstrap.conf); \ test -n "$$t" && gl=$$t; \ fi; \ for diff in $$(cd $$gl; git ls-files | grep '\.diff$$'); do \ b=$$(printf %s "$$diff"|sed 's/\.diff$$//'); \ VERSION_CONTROL=none \ patch "$(gnulib_dir)/$$b" "$$gl/$$diff" || exit 1; \ ( cd $(gnulib_dir) || exit 1; \ git diff "$$b" > "../$$gl/$$diff"; \ git checkout $$b ) || exit 1; \ done # Update gettext files. PACKAGE ?= $(shell basename $(PWD)) PO_DOMAIN ?= $(PACKAGE) POURL = http://translationproject.org/latest/$(PO_DOMAIN)/ PODIR ?= po refresh-po: rm -f $(PODIR)/*.po && \ echo "$(ME): getting translations into po (please ignore the robots.txt ERROR 404)..." && \ wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \ echo 'en@boldquot' > $(PODIR)/LINGUAS && \ echo 'en@quot' >> $(PODIR)/LINGUAS && \ ls $(PODIR)/*.po | sed 's/\.po//;s,$(PODIR)/,,' | sort >> $(PODIR)/LINGUAS # Running indent once is not idempotent, but running it twice is. INDENT_SOURCES ?= $(C_SOURCES) .PHONY: indent indent: indent $(INDENT_SOURCES) indent $(INDENT_SOURCES) # If you want to set UPDATE_COPYRIGHT_* environment variables, # put the assignments in this variable. update-copyright-env ?= # Run this rule once per year (usually early in January) # to update all FSF copyright year lists in your project. # If you have an additional project-specific rule, # add it in cfg.mk along with a line 'update-copyright: prereq'. # By default, exclude all variants of COPYING; you can also # add exemptions (such as ChangeLog..* for rotated change logs) # in the file .x-update-copyright. .PHONY: update-copyright update-copyright: $(AM_V_GEN)grep -l -w Copyright \ $$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \ | $(update-copyright-env) xargs $(srcdir)/$(_build-aux)/$@ # This tight_scope test is skipped with a warning if $(_gl_TS_headers) is not # overridden and $(_gl_TS_dir)/Makefile.am does not mention noinst_HEADERS. # NOTE: to override any _gl_TS_* default value, you must # define the variable(s) using "export" in cfg.mk. _gl_TS_dir ?= src ALL_RECURSIVE_TARGETS += sc_tight_scope sc_tight_scope: tight-scope.mk @fail=0; \ if ! grep '^ *export _gl_TS_headers *=' $(srcdir)/cfg.mk \ > /dev/null \ && ! grep -w noinst_HEADERS $(srcdir)/$(_gl_TS_dir)/Makefile.am \ > /dev/null 2>&1; then \ echo '$(ME): skipping $@'; \ else \ $(MAKE) -s -C $(_gl_TS_dir) \ -f Makefile \ -f $(abs_top_srcdir)/cfg.mk \ -f $(abs_top_builddir)/$< \ _gl_tight_scope \ || fail=1; \ fi; \ rm -f $<; \ exit $$fail tight-scope.mk: $(ME) @rm -f $@ $@-t @perl -ne '/^# TS-start/.../^# TS-end/ and print' $(srcdir)/$(ME) > $@-t @chmod a=r $@-t && mv $@-t $@ ifeq (a,b) # TS-start # Most functions should have static scope. # Any that don't must be marked with 'extern', but 'main' # and 'usage' are exceptions: they're always extern, but # do not need to be marked. Symbols matching '__.*' are # reserved by the compiler, so are automatically excluded below. _gl_TS_unmarked_extern_functions ?= main usage _gl_TS_function_match ?= /^(?:$(_gl_TS_extern)) +.*?(\S+) *\(/ # If your project uses a macro like "XTERN", then put # the following in cfg.mk to override this default: # export _gl_TS_extern = extern|XTERN _gl_TS_extern ?= extern # The second nm|grep checks for file-scope variables with 'extern' scope. # Without gnulib's progname module, you might put program_name here. # Symbols matching '__.*' are reserved by the compiler, # so are automatically excluded below. _gl_TS_unmarked_extern_vars ?= # NOTE: the _match variables are perl expressions -- not mere regular # expressions -- so that you can extend them to match other patterns # and easily extract matched variable names. # For example, if your project declares some global variables via # a macro like this: GLOBAL(type, var_name, initializer), then you # can override this definition to automatically extract those names: # export _gl_TS_var_match = \ # /^(?:$(_gl_TS_extern)) .*?\**(\w+)(\[.*?\])?;/ || /\bGLOBAL\(.*?,\s*(.*?),/ _gl_TS_var_match ?= /^(?:$(_gl_TS_extern)) .*?(\w+)(\[.*?\])?;/ # The names of object files in (or relative to) $(_gl_TS_dir). _gl_TS_obj_files ?= *.$(OBJEXT) # Files in which to search for the one-line style extern declarations. # $(_gl_TS_dir)-relative. _gl_TS_headers ?= $(noinst_HEADERS) _gl_TS_other_headers ?= *.h .PHONY: _gl_tight_scope _gl_tight_scope: $(bin_PROGRAMS) t=exceptions-$$$$; \ trap 's=$$?; rm -f $$t; exit $$s' 0; \ for sig in 1 2 3 13 15; do \ eval "trap 'v=`expr $$sig + 128`; (exit $$v); exit $$v' $$sig"; \ done; \ src=`for f in $(SOURCES); do \ test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`; \ hdr=`for f in $(_gl_TS_headers); do \ test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`; \ ( printf '^%s$$\n' '__.*' $(_gl_TS_unmarked_extern_functions); \ grep -h -A1 '^extern .*[^;]$$' $$src \ | grep -vE '^(extern |--)' | sed 's/ .*//'; \ perl -lne \ '$(_gl_TS_function_match) and print "^$$1\$$"' $$hdr; \ ) | sort -u > $$t; \ nm -e $(_gl_TS_obj_files) | sed -n 's/.* T //p'|grep -Ev -f $$t \ && { echo the above functions should have static scope >&2; \ exit 1; } || : ; \ ( printf '^%s$$\n' '__.*' $(_gl_TS_unmarked_extern_vars); \ perl -lne '$(_gl_TS_var_match) and print "^$$1\$$"' \ $$hdr $(_gl_TS_other_headers) \ ) | sort -u > $$t; \ nm -e $(_gl_TS_obj_files) | sed -n 's/.* [BCDGRS] //p' \ | sort -u | grep -Ev -f $$t \ && { echo the above variables should have static scope >&2; \ exit 1; } || : # TS-end endif libtasn1-3.4/src/0000775000000000000000000000000012244722065010641 500000000000000libtasn1-3.4/src/asn1Parser.c0000664000000000000000000001204712244720630012744 00000000000000/* asn1Parser.c -- program to parse a file with ASN1 definitions * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include #include #include #include #include #include #include #include #include /* This feature is available in gcc versions 2.5 and later. */ #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) #define ATTR_NO_RETRUN #else #define ATTR_NO_RETRUN __attribute__ ((__noreturn__)) #endif ATTR_NO_RETRUN static void usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, "Try `%s --help' for more information.\n", program_name); else { printf ("\ Usage: %s [OPTION] FILE\n", program_name); printf ("\ Read FILE with ASN.1 definitions and generate\n\ a C array that is used with libtasn1 functions.\n\ \n"); printf ("\ Mandatory arguments to long options are mandatory for short options too.\n\ -c, --check checks the syntax only\n\ -o, --output=FILE output file\n\ -n, --name=NAME array name\n\ -h, --help display this help and exit\n\ -v, --version output version information and exit\n"); emit_bug_reporting_address (); } exit (status); } int main (int argc, char *argv[]) { static const struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'v'}, {"check", no_argument, 0, 'c'}, {"output", required_argument, 0, 'o'}, {"name", required_argument, 0, 'n'}, {0, 0, 0, 0} }; int option_index = 0; int option_result; char *outputFileName = NULL; char *inputFileName = NULL; char *vectorName = NULL; int checkSyntaxOnly = 0; asn1_node pointer = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int parse_result = ASN1_SUCCESS; set_program_name (argv[0]); opterr = 0; /* disable error messages from getopt */ while (1) { option_result = getopt_long (argc, argv, "hvco:n:", long_options, &option_index); if (option_result == -1) break; switch (option_result) { case 0: fprintf (stderr, "option %s", long_options[option_index].name); if (optarg) fprintf (stderr, " with arg %s", optarg); putc ('\n', stderr); break; case 'h': /* HELP */ free (outputFileName); free (vectorName); usage (EXIT_SUCCESS); break; case 'v': /* VERSION */ version_etc (stdout, program_name, PACKAGE, VERSION, "Fabio Fiorina", NULL); free (outputFileName); free (vectorName); exit (0); break; case 'c': /* CHECK SYNTAX */ checkSyntaxOnly = 1; break; case 'o': /* OUTPUT */ outputFileName = (char *) malloc (strlen (optarg) + 1); strcpy (outputFileName, optarg); break; case 'n': /* VECTOR NAME */ vectorName = (char *) malloc (strlen (optarg) + 1); strcpy (vectorName, optarg); break; case '?': /* UNKNOW OPTION */ fprintf (stderr, "asn1Parser: option '%s' not recognized or without argument.\n\n", argv[optind - 1]); free (outputFileName); free (vectorName); usage (EXIT_FAILURE); break; default: fprintf (stderr, "asn1Parser: ?? getopt returned character code Ox%x ??\n", option_result); } } if (optind == argc) { free (outputFileName); free (vectorName); usage (EXIT_SUCCESS); } else { inputFileName = (char *) malloc (strlen (argv[optind]) + 1); strcpy (inputFileName, argv[optind]); } if (checkSyntaxOnly == 1) { parse_result = asn1_parser2tree (inputFileName, &pointer, errorDescription); asn1_delete_structure (&pointer); } else /* C VECTOR CREATION */ parse_result = asn1_parser2array (inputFileName, outputFileName, vectorName, errorDescription); switch (parse_result) { case ASN1_SUCCESS: fputs ("Done.\n", stderr); break; case ASN1_FILE_NOT_FOUND: fprintf (stderr, "asn1Parser: file %s was not found\n", inputFileName); break; case ASN1_SYNTAX_ERROR: case ASN1_IDENTIFIER_NOT_FOUND: case ASN1_NAME_TOO_LONG: fprintf (stderr, "asn1Parser: %s\n", errorDescription); break; default: fprintf (stderr, "libtasn1 ERROR: %s\n", asn1_strerror (parse_result)); } free (inputFileName); free (outputFileName); free (vectorName); if (parse_result != ASN1_SUCCESS) exit (1); exit (0); } libtasn1-3.4/src/benchmark.h0000664000000000000000000000270012244720630012657 00000000000000/* * Copyright (C) 2011-2013 Free Software Foundation, Inc. * * This file is part of GnuTLS. * * GnuTLS 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. * * GnuTLS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #if defined _WIN32 #include #endif #include "timespec.h" /* gnulib gettime */ typedef void (*sighandler_t) (int); struct benchmark_st { struct timespec start; unsigned long size; sighandler_t old_handler; #if defined _WIN32 HANDLE wtimer; HANDLE wthread; LARGE_INTEGER alarm_timeout; #endif }; extern int benchmark_must_finish; void start_benchmark (struct benchmark_st *st); double stop_benchmark (struct benchmark_st *st, const char *metric); inline static unsigned int timespec_sub_ms (struct timespec *a, struct timespec *b) { return (a->tv_sec * 1000 + a->tv_nsec / (1000 * 1000) - (b->tv_sec * 1000 + b->tv_nsec / (1000 * 1000))); } libtasn1-3.4/src/asn1Coding.c0000664000000000000000000002145512244720630012716 00000000000000/* asn1Coding.c --- program to generate a DER coding of an ASN1 definition. * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include #include #include #include #include #include #include #include #include /* This feature is available in gcc versions 2.5 and later. */ #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) #define ATTR_NO_RETRUN #else #define ATTR_NO_RETRUN __attribute__ ((__noreturn__)) #endif ATTR_NO_RETRUN static void usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, "Try `%s --help' for more information.\n", program_name); else { printf ("\ Usage: %s [OPTION] DEFINITIONS ASSIGNMENTS\n", program_name); printf ("\ Generates a DER encoding of ASN.1 DEFINITIONS file\n\ and ASSIGNMENTS file with value assignments.\n\ \n"); printf ("\ Mandatory arguments to long options are mandatory for short options too.\n\ -c, --check checks the syntax only\n\ -o, --output=FILE output file\n\ -h, --help display this help and exit\n\ -v, --version output version information and exit\n"); emit_bug_reporting_address (); } exit (status); } #define ASSIGNMENT_SUCCESS 1 #define ASSIGNMENT_ERROR 2 #define ASSIGNMENT_EOF 3 static int readAssignment (FILE * file, char *varName, char *value) { int ret; ret = fscanf (file, "%s", varName); if (ret == EOF) return ASSIGNMENT_EOF; if (!strcmp (varName, "''")) varName[0] = 0; ret = fscanf (file, "%s", value); if (ret == EOF) return ASSIGNMENT_ERROR; return ASSIGNMENT_SUCCESS; } static void createFileName (char *inputFileName, char **outputFileName) { char *char_p, *slash_p, *dot_p; /* searching the last '/' and '.' in inputFileAssignmentName */ char_p = inputFileName; slash_p = inputFileName; while ((char_p = strchr (char_p, '/'))) { char_p++; slash_p = char_p; } char_p = slash_p; dot_p = inputFileName + strlen (inputFileName); while ((char_p = strchr (char_p, '.'))) { dot_p = char_p; char_p++; } /* outputFileName= inputFileName + .out */ *outputFileName = (char *) malloc (dot_p - inputFileName + 1 + strlen (".out")); memcpy (*outputFileName, inputFileName, dot_p - inputFileName); (*outputFileName)[dot_p - inputFileName] = 0; strcat (*outputFileName, ".out"); return; } int main (int argc, char *argv[]) { static const struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'v'}, {"check", no_argument, 0, 'c'}, {"output", required_argument, 0, 'o'}, {0, 0, 0, 0} }; int option_index = 0; int option_result; char *outputFileName = NULL; char *inputFileAsnName = NULL; char *inputFileAssignmentName = NULL; int checkSyntaxOnly = 0; asn1_node definitions = NULL; asn1_node structure = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int asn1_result = ASN1_SUCCESS; FILE *outputFile; FILE *inputFile; char varName[1024]; char value[1024]; unsigned char *der = NULL; int der_len; int k; int last_ra; set_program_name (argv[0]); opterr = 0; /* disable error messages from getopt */ while (1) { option_result = getopt_long (argc, argv, "hvco:", long_options, &option_index); if (option_result == -1) break; switch (option_result) { case 'h': /* HELP */ free (outputFileName); usage (EXIT_SUCCESS); break; case 'v': /* VERSION */ version_etc (stdout, program_name, PACKAGE, VERSION, "Fabio Fiorina", NULL); free (outputFileName); exit (0); break; case 'c': /* CHECK SYNTAX */ checkSyntaxOnly = 1; break; case 'o': /* OUTPUT */ outputFileName = (char *) malloc (strlen (optarg) + 1); strcpy (outputFileName, optarg); break; case '?': /* UNKNOW OPTION */ free (outputFileName); fprintf (stderr, "asn1Coding: option '%s' not recognized or without argument.\n\n", argv[optind - 1]); usage (EXIT_FAILURE); break; default: fprintf (stderr, "asn1Coding: ?? getopt returned character code Ox%x ??\n", option_result); } } if (optind == argc || optind == argc - 1) { free (outputFileName); fputs ("asn1Coding: input files missing\n", stderr); usage (EXIT_FAILURE); } inputFileAsnName = (char *) malloc (strlen (argv[optind]) + 1); strcpy (inputFileAsnName, argv[optind]); inputFileAssignmentName = (char *) malloc (strlen (argv[optind + 1]) + 1); strcpy (inputFileAssignmentName, argv[optind + 1]); asn1_result = asn1_parser2tree (inputFileAsnName, &definitions, errorDescription); switch (asn1_result) { case ASN1_SUCCESS: fputs ("Parse: done.\n", stderr); break; case ASN1_FILE_NOT_FOUND: fprintf (stderr, "asn1Coding: FILE %s NOT FOUND\n", inputFileAsnName); break; case ASN1_SYNTAX_ERROR: case ASN1_IDENTIFIER_NOT_FOUND: case ASN1_NAME_TOO_LONG: fprintf (stderr, "asn1Coding: %s\n", errorDescription); break; default: fprintf (stderr, "libtasn1 ERROR: %s\n", asn1_strerror (asn1_result)); } if (asn1_result != ASN1_SUCCESS) { free (inputFileAsnName); free (inputFileAssignmentName); exit (1); } inputFile = fopen (inputFileAssignmentName, "r"); if (inputFile == NULL) { fprintf (stderr, "asn1Coding: file '%s' not found\n", inputFileAssignmentName); free (inputFileAsnName); free (inputFileAssignmentName); exit (1); } putc ('\n', stderr); while ((last_ra = readAssignment (inputFile, varName, value)) == ASSIGNMENT_SUCCESS) { fprintf (stderr, "var=%s, value=%s\n", varName, value); if (structure == NULL) { asn1_result = asn1_create_element (definitions, value, &structure); } else asn1_result = asn1_write_value (structure, varName, value, 0); if (asn1_result != ASN1_SUCCESS) { fprintf (stderr, "libtasn1 ERROR: %s\n", asn1_strerror (asn1_result)); asn1_delete_structure (&definitions); asn1_delete_structure (&structure); free (inputFileAsnName); free (inputFileAssignmentName); fclose (inputFile); exit (1); } } if (last_ra != ASSIGNMENT_EOF) { fprintf (stderr, "asn1Coding: error reading assignment file\n"); exit (1); } fclose (inputFile); putc ('\n', stderr); asn1_print_structure (stderr, structure, "", ASN1_PRINT_NAME_TYPE_VALUE); der_len = 0; asn1_result = asn1_der_coding (structure, "", der, &der_len, errorDescription); if (asn1_result == ASN1_MEM_ERROR) { der = malloc (der_len); asn1_result = asn1_der_coding (structure, "", der, &der_len, errorDescription); } fprintf (stderr, "\nCoding: %s\n\n", asn1_strerror (asn1_result)); if (asn1_result != ASN1_SUCCESS) { fprintf (stderr, "asn1Coding: %s\n", errorDescription); free (der); asn1_delete_structure (&definitions); asn1_delete_structure (&structure); free (inputFileAsnName); free (inputFileAssignmentName); exit (1); } /* Print the 'Certificate1' DER encoding */ fprintf (stderr, "-----------------\nNumber of bytes=%i\n", der_len); for (k = 0; k < der_len; k++) fprintf (stderr, "%02x ", der[k]); fputs ("\n-----------------\n", stderr); asn1_delete_structure (&definitions); asn1_delete_structure (&structure); if (!checkSyntaxOnly) { if (outputFileName == NULL) createFileName (inputFileAssignmentName, &outputFileName); fprintf (stderr, "\nOutputFile=%s\n", outputFileName); outputFile = fopen (outputFileName, "w"); if (outputFile == NULL) { fprintf (stderr, "asn1Coding: output file '%s' not available\n", outputFileName); free (der); free (inputFileAsnName); free (inputFileAssignmentName); free (outputFileName); exit (1); } for (k = 0; k < der_len; k++) fprintf (outputFile, "%c", der[k]); fclose (outputFile); fputs ("\nWriting: done.\n", stderr); } free (der); free (inputFileAsnName); free (inputFileAssignmentName); free (outputFileName); exit (0); } libtasn1-3.4/src/benchmark.c0000664000000000000000000000754512244720630012666 00000000000000/* * Copyright (C) 2011-2013 Free Software Foundation, Inc. * * This file is part of GnuTLS. * * GnuTLS 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. * * GnuTLS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include #include "benchmark.h" int benchmark_must_finish = 0; #if defined _WIN32 #include DWORD WINAPI alarm_handler (LPVOID lpParameter) { HANDLE wtimer = *((HANDLE *) lpParameter); WaitForSingleObject (wtimer, INFINITE); benchmark_must_finish = 1; return 0; } #else static void alarm_handler (int signo) { benchmark_must_finish = 1; } #endif static void value2human (unsigned long bytes, double secs, double *data, double *speed, char *metric) { if (bytes > 1000 && bytes < 1000 * 1000) { *data = ((double) bytes) / 1000; *speed = *data / secs; strcpy (metric, "KB"); return; } else if (bytes >= 1000 * 1000 && bytes < 1000 * 1000 * 1000) { *data = ((double) bytes) / (1000 * 1000); *speed = *data / secs; strcpy (metric, "MB"); return; } else if (bytes >= 1000 * 1000 * 1000) { *data = ((double) bytes) / (1000 * 1000 * 1000); *speed = *data / secs; strcpy (metric, "GB"); return; } else { *data = (double) bytes; *speed = *data / secs; strcpy (metric, "bytes"); return; } } void start_benchmark (struct benchmark_st *st) { memset (st, 0, sizeof (*st)); #ifndef _WIN32 st->old_handler = signal (SIGALRM, alarm_handler); #endif gettime (&st->start); benchmark_must_finish = 0; #if defined _WIN32 st->wtimer = CreateWaitableTimer (NULL, TRUE, NULL); if (st->wtimer == NULL) { fprintf (stderr, "error: CreateWaitableTimer %u\n", GetLastError ()); exit (1); } st->wthread = CreateThread (NULL, 0, alarm_handler, &st->wtimer, 0, NULL); if (st->wthread == NULL) { fprintf (stderr, "error: CreateThread %u\n", GetLastError ()); exit (1); } st->alarm_timeout.QuadPart = (5) * 10000000; if (SetWaitableTimer (st->wtimer, &st->alarm_timeout, 0, NULL, NULL, FALSE) == 0) { fprintf (stderr, "error: SetWaitableTimer %u\n", GetLastError ()); exit (1); } #else alarm (5); #endif } /* returns the elapsed time */ double stop_benchmark (struct benchmark_st *st, const char *metric) { double secs; unsigned long lsecs; struct timespec stop; double dspeed, ddata; char imetric[16]; #if defined _WIN32 if (st->wtimer != NULL) CloseHandle (st->wtimer); if (st->wthread != NULL) CloseHandle (st->wthread); #else signal (SIGALRM, st->old_handler); #endif gettime (&stop); lsecs = (stop.tv_sec * 1000 + stop.tv_nsec / (1000 * 1000) - (st->start.tv_sec * 1000 + st->start.tv_nsec / (1000 * 1000))); secs = lsecs; secs /= 1000; if (metric == NULL) { /* assume bytes/sec */ value2human (st->size, secs, &ddata, &dspeed, imetric); printf (" Processed %.2f %s in %.2f secs: ", ddata, imetric, secs); printf ("%.2f %s/sec\n", dspeed, imetric); } else { ddata = (double) st->size; dspeed = ddata / secs; printf (" Processed %.2f %s in %.2f secs: ", ddata, metric, secs); printf ("%.2f %s/sec\n", dspeed, metric); } return secs; } libtasn1-3.4/src/asn1Decoding.c0000664000000000000000000001656012244720630013230 00000000000000/* asn1Decoding.c --- program to generate an ASN1 type from a DER coding. * Copyright (C) 2002-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include #include #include #include #include #include #include #include #include #include #include "benchmark.h" static int decode (asn1_node definitions, const char *typeName, void *der, int der_len, int benchmark); /* This feature is available in gcc versions 2.5 and later. */ #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) #define ATTR_NO_RETRUN #else #define ATTR_NO_RETRUN __attribute__ ((__noreturn__)) #endif ATTR_NO_RETRUN static void usage (int status) { if (status != EXIT_SUCCESS) fprintf (stderr, "Try `%s --help' for more information.\n", program_name); else { printf ("\ Usage: %s [OPTION] DEFINITIONS ENCODED ASN1TYPE\n", program_name); printf ("\ Decodes DER data in ENCODED file, for the ASN1TYPE element\n\ described in ASN.1 DEFINITIONS file, and print decoded structures.\n\ \n"); printf ("\ -h, --help display this help and exit\n\ -v, --version output version information and exit\n"); emit_bug_reporting_address (); } exit (status); } int main (int argc, char *argv[]) { static const struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'v'}, {0, 0, 0, 0} }; int option_index = 0; int option_result; char *inputFileAsnName = NULL; char *inputFileDerName = NULL; char *typeName = NULL; asn1_node definitions = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int asn1_result = ASN1_SUCCESS; unsigned char *der; int der_len = 0, benchmark = 0; /* FILE *outputFile; */ set_program_name (argv[0]); opterr = 0; /* disable error messages from getopt */ while (1) { option_result = getopt_long (argc, argv, "hbvc", long_options, &option_index); if (option_result == -1) break; switch (option_result) { case 'h': /* HELP */ usage (EXIT_SUCCESS); break; case 'b': benchmark = 1; break; case 'v': /* VERSION */ version_etc (stdout, program_name, PACKAGE, VERSION, "Fabio Fiorina", NULL); exit (0); break; case '?': /* UNKNOW OPTION */ fprintf (stderr, "asn1Decoding: option '%s' not recognized or without argument.\n\n", argv[optind - 1]); usage (EXIT_FAILURE); break; default: fprintf (stderr, "asn1Decoding: ?? getopt returned character code Ox%x ??\n", option_result); } } if (optind == argc || optind == argc - 1 || optind == argc - 2) { fprintf (stderr, "asn1Decoding: input files or ASN.1 type " "name missing\n"); usage (EXIT_FAILURE); } inputFileAsnName = (char *) malloc (strlen (argv[optind]) + 1); strcpy (inputFileAsnName, argv[optind]); inputFileDerName = (char *) malloc (strlen (argv[optind + 1]) + 1); strcpy (inputFileDerName, argv[optind + 1]); typeName = (char *) malloc (strlen (argv[optind + 2]) + 1); strcpy (typeName, argv[optind + 2]); asn1_result = asn1_parser2tree (inputFileAsnName, &definitions, errorDescription); switch (asn1_result) { case ASN1_SUCCESS: fprintf (stderr, "Parse: done.\n"); break; case ASN1_FILE_NOT_FOUND: fprintf (stderr, "asn1Decoding: FILE %s NOT FOUND\n", inputFileAsnName); break; case ASN1_SYNTAX_ERROR: case ASN1_IDENTIFIER_NOT_FOUND: case ASN1_NAME_TOO_LONG: fprintf (stderr, "asn1Decoding: %s\n", errorDescription); break; default: fprintf (stderr, "libtasn1 ERROR: %s\n", asn1_strerror (asn1_result)); } if (asn1_result != ASN1_SUCCESS) { free (inputFileAsnName); free (inputFileDerName); free (typeName); exit (1); } { size_t tmplen; der = (unsigned char *) read_binary_file (inputFileDerName, &tmplen); der_len = tmplen; } if (der == NULL) { fprintf (stderr, "asn1Decoding: could not read '%s'\n", inputFileDerName); asn1_delete_structure (&definitions); free (inputFileAsnName); free (inputFileDerName); free (typeName); exit (1); } /*****************************************/ /* ONLY FOR TEST */ /*****************************************/ /* der_len=0; outputFile=fopen("data.p12","w"); while(fscanf(inputFile,"%c",der+der_len) != EOF){ if((der_len>=0x11) && (der_len<=(0xe70))) fprintf(outputFile,"%c",der[der_len]); der_len++; } fclose(outputFile); fclose(inputFile); */ if (decode (definitions, typeName, der, der_len, benchmark) != ASN1_SUCCESS) { asn1_delete_structure (&definitions); free (inputFileAsnName); free (inputFileDerName); free (typeName); free (der); exit (1); } asn1_delete_structure (&definitions); free (der); free (inputFileAsnName); free (inputFileDerName); free (typeName); if (asn1_result != ASN1_SUCCESS) exit (1); exit (0); } static int simple_decode (asn1_node definitions, const char *typeName, void *der, int der_len, int benchmark) { int asn1_result; asn1_node structure = NULL; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; asn1_result = asn1_create_element (definitions, typeName, &structure); /* asn1_print_structure(stdout,structure,"",ASN1_PRINT_ALL); */ if (asn1_result != ASN1_SUCCESS) { fprintf (stderr, "Structure creation: %s\n", asn1_strerror (asn1_result)); asn1_delete_structure (&structure); return asn1_result; } asn1_result = asn1_der_decoding (&structure, der, der_len, errorDescription); if (!benchmark) fprintf (stderr, "\nDecoding: %s\n", asn1_strerror (asn1_result)); if (asn1_result != ASN1_SUCCESS) { fprintf (stderr, "asn1Decoding: %s\n", errorDescription); asn1_delete_structure (&structure); return asn1_result; } if (!benchmark) { fprintf (stderr, "\nDECODING RESULT:\n"); asn1_print_structure (stdout, structure, "", ASN1_PRINT_NAME_TYPE_VALUE); } asn1_delete_structure (&structure); return ASN1_SUCCESS; } static int decode (asn1_node definitions, const char *typeName, void *der, int der_len, int benchmark) { struct benchmark_st st; if (benchmark == 0) return simple_decode (definitions, typeName, der, der_len, benchmark); else { start_benchmark (&st); do { simple_decode (definitions, typeName, der, der_len, benchmark); st.size++; } while (benchmark_must_finish == 0); stop_benchmark (&st, "structures"); fprintf (stdout, "\n"); } return ASN1_SUCCESS; } libtasn1-3.4/src/Makefile.in0000664000000000000000000012270212244721751012633 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = asn1Parser$(EXEEXT) asn1Coding$(EXEEXT) \ asn1Decoding$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/build-aux/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_asn1Coding_OBJECTS = asn1Coding.$(OBJEXT) asn1Coding_OBJECTS = $(am_asn1Coding_OBJECTS) asn1Coding_LDADD = $(LDADD) asn1Coding_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_asn1Decoding_OBJECTS = asn1Decoding.$(OBJEXT) benchmark.$(OBJEXT) asn1Decoding_OBJECTS = $(am_asn1Decoding_OBJECTS) asn1Decoding_LDADD = $(LDADD) asn1Decoding_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la am_asn1Parser_OBJECTS = asn1Parser.$(OBJEXT) asn1Parser_OBJECTS = $(am_asn1Parser_OBJECTS) asn1Parser_LDADD = $(LDADD) asn1Parser_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = SOURCES = $(asn1Coding_SOURCES) $(asn1Decoding_SOURCES) \ $(asn1Parser_SOURCES) DIST_SOURCES = $(asn1Coding_SOURCES) $(asn1Decoding_SOURCES) \ $(asn1Parser_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) # 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 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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 = $(WARN_CFLAGS) $(WERROR_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_builddir)/gl LDADD = ../lib/libtasn1.la ../gl/libgnu.la asn1Parser_SOURCES = asn1Parser.c asn1Coding_SOURCES = asn1Coding.c asn1Decoding_SOURCES = asn1Decoding.c benchmark.c benchmark.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(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 .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): 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 \ || test -f $$p1 \ ; 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) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(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: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list asn1Coding$(EXEEXT): $(asn1Coding_OBJECTS) $(asn1Coding_DEPENDENCIES) $(EXTRA_asn1Coding_DEPENDENCIES) @rm -f asn1Coding$(EXEEXT) $(AM_V_CCLD)$(LINK) $(asn1Coding_OBJECTS) $(asn1Coding_LDADD) $(LIBS) asn1Decoding$(EXEEXT): $(asn1Decoding_OBJECTS) $(asn1Decoding_DEPENDENCIES) $(EXTRA_asn1Decoding_DEPENDENCIES) @rm -f asn1Decoding$(EXEEXT) $(AM_V_CCLD)$(LINK) $(asn1Decoding_OBJECTS) $(asn1Decoding_LDADD) $(LIBS) asn1Parser$(EXEEXT): $(asn1Parser_OBJECTS) $(asn1Parser_DEPENDENCIES) $(EXTRA_asn1Parser_DEPENDENCIES) @rm -f asn1Parser$(EXEEXT) $(AM_V_CCLD)$(LINK) $(asn1Parser_OBJECTS) $(asn1Parser_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn1Coding.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn1Decoding.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asn1Parser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/benchmark.Po@am__quote@ .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 $< .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 `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs 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-am 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: $(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 $(PROGRAMS) 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-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool 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 mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS # 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: libtasn1-3.4/src/Makefile.am0000664000000000000000000000215512244720630012614 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_builddir)/gl LDADD = ../lib/libtasn1.la ../gl/libgnu.la bin_PROGRAMS = asn1Parser asn1Coding asn1Decoding asn1Parser_SOURCES = asn1Parser.c asn1Coding_SOURCES = asn1Coding.c asn1Decoding_SOURCES = asn1Decoding.c benchmark.c benchmark.h libtasn1-3.4/m4/0000775000000000000000000000000012244722064010371 500000000000000libtasn1-3.4/m4/lt~obsolete.m40000644000000000000000000001375612244721742013141 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # 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. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) libtasn1-3.4/m4/ltsugar.m40000644000000000000000000001042412244721742012235 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # 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. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) libtasn1-3.4/m4/update-header-version.m40000664000000000000000000000160712244720630014747 00000000000000# update-header-version.m4 serial 1 dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # sj_UPDATE_HEADER_VERSION(HEADER-FILE) # ------------- # Update version number in HEADER-FILE. It searches for '_VERSION ".*"' # and replaces the .* part with the $PACKAGE_VERSION. AC_DEFUN([sj_UPDATE_HEADER_VERSION], [ # Update version number in lib/libtasn1.h. if ! sed 's/_VERSION ".*"/_VERSION "'$PACKAGE_VERSION'"/' $1 > fixhdr.tmp; then AC_MSG_ERROR([[*** Failed to update version number in $1...]]) fi if cmp -s $1 fixhdr.tmp 2>/dev/null; then rm -f fixhdr.tmp elif ! mv fixhdr.tmp $1; then AC_MSG_ERROR([[*** Failed to move fixhdr.tmp to $1...]]) fi ]) libtasn1-3.4/m4/ltversion.m40000644000000000000000000000126212244721742012601 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # 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. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) libtasn1-3.4/m4/gtk-doc.m40000664000000000000000000000424112244720630012101 00000000000000dnl -*- mode: autoconf -*- # serial 1 dnl Usage: dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) AC_DEFUN([GTK_DOC_CHECK], [ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first dnl check for tools we added during development AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check]) AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) dnl for overriding the documentation installation directory AC_ARG_WITH([html-dir], AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, [with_html_dir='${datadir}/gtk-doc/html']) HTML_DIR="$with_html_dir" AC_SUBST([HTML_DIR]) dnl enable/disable documentation building AC_ARG_ENABLE([gtk-doc], AS_HELP_STRING([--enable-gtk-doc], [use gtk-doc to build documentation [[default=no]]]),, [enable_gtk_doc=no]) if test x$enable_gtk_doc = xyes; then ifelse([$1],[], [PKG_CHECK_EXISTS([gtk-doc],, AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))], [PKG_CHECK_EXISTS([gtk-doc >= $1],, AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))]) fi AC_MSG_CHECKING([whether to build gtk-doc documentation]) AC_MSG_RESULT($enable_gtk_doc) dnl enable/disable output formats AC_ARG_ENABLE([gtk-doc-html], AS_HELP_STRING([--enable-gtk-doc-html], [build documentation in html format [[default=yes]]]),, [enable_gtk_doc_html=yes]) AC_ARG_ENABLE([gtk-doc-pdf], AS_HELP_STRING([--enable-gtk-doc-pdf], [build documentation in pdf format [[default=no]]]),, [enable_gtk_doc_pdf=no]) if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) ]) libtasn1-3.4/m4/ltoptions.m40000644000000000000000000003007312244721742012611 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # 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. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) libtasn1-3.4/m4/libtool.m40000644000000000000000000105756012244721742012235 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # 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. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool 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. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; powerpcle-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS libtasn1-3.4/m4/pkg.m40000664000000000000000000001214512244720630011334 00000000000000# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # 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. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$PKG_CONFIG"; then if test -n "$$1"; then pkg_cv_[]$1="$$1" else PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) fi else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` else $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES libtasn1-3.4/configure.ac0000664000000000000000000000772112244721732012267 00000000000000dnl Process this file with autoconf to produce a configure script. # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . AC_PREREQ([2.61]) AC_INIT([GNU Libtasn1],[3.4],[help-libtasn1@gnu.org]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS(config.h) AM_INIT_AUTOMAKE([1.10 -Wall -Werror -Wno-override]) AM_SILENT_RULES([yes]) # Library code modified: REVISION++ # Interfaces changed/added/removed: CURRENT++ REVISION=0 # Interfaces added: AGE++ # Interfaces removed: AGE=0 AC_SUBST(LT_CURRENT, 8) AC_SUBST(LT_REVISION, 0) AC_SUBST(LT_AGE, 2) AC_PROG_CC gl_EARLY lgl_EARLY AC_PROG_YACC dnl Checks for programs. AM_MISSING_PROG(HELP2MAN, help2man, $missing_dir) AC_LIBTOOL_WIN32_DLL AM_PROG_AR AM_PROG_LIBTOOL GTK_DOC_CHECK(1.2) AC_CHECK_SIZEOF(unsigned long int, 4) AC_CHECK_SIZEOF(unsigned int, 4) sj_UPDATE_HEADER_VERSION([$srcdir/lib/libtasn1.h]) # For gnulib compatibility modules. gl_INIT lgl_INIT AC_ARG_ENABLE([gcc-warnings], [AS_HELP_STRING([--enable-gcc-warnings], [turn on lots of GCC warnings (for developers)])], [case $enableval in yes|no) ;; *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;; esac gl_gcc_warnings=$enableval], [gl_gcc_warnings=no] ) if test "$gl_gcc_warnings" = yes; then gl_WARN_ADD([-Werror], [WERROR_CFLAGS]) nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings nw="$nw -Wc++-compat" # We don't care strongly about C++ compilers nw="$nw -Wtraditional" # Warns on #elif which we use often nw="$nw -Wtraditional-conversion" # Too many warnings for now nw="$nw -Wconversion" # Too many warnings for now nw="$nw -Wsign-conversion" # Too many warnings for now nw="$nw -Wold-style-definition" # nw="$nw -Wpadded" # Our structs are not padded nw="$nw -Wundef" # nw="$nw -Wunreachable-code" # Too many false positives nw="$nw -Wunused-macros" # Breaks on bison generated ASN1.c nw="$nw -Wswitch-default" # Breaks on bison generated ASN1.c nw="$nw -Wunsafe-loop-optimizations" nw="$nw -Wstrict-overflow" nw="$nw -Wsuggest-attribute=pure" # Is it worth using pure attributes? gl_MANYWARN_ALL_GCC([ws]) gl_MANYWARN_COMPLEMENT(ws, [$ws], [$nw]) for w in $ws; do gl_WARN_ADD([$w]) done gl_WARN_ADD([-Wno-type-limits]) gl_WARN_ADD([-Wno-missing-field-initializers]) gl_WARN_ADD([-Wno-unused-parameter]) gl_WARN_ADD([-Wno-stack-protector]) # Some functions cannot be protected gl_WARN_ADD([-fdiagnostics-show-option]) fi AC_CONFIG_FILES([ Makefile doc/Makefile doc/cyclo/Makefile doc/reference/Makefile doc/reference/version.xml examples/Makefile gl/Makefile lib/Makefile lib/gllib/Makefile lib/libtasn1.pc src/Makefile tests/Makefile ]) AC_OUTPUT AC_MSG_NOTICE([summary of build options: version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE Host type: ${host} Install prefix: ${prefix} Compiler: ${CC} Warning flags: errors: ${WERROR_CFLAGS} warnings: ${WARN_CFLAGS} Library types: Shared=${enable_shared}, Static=${enable_static} Valgrind: ${VALGRIND} Version script: $have_ld_version_script ]) libtasn1-3.4/Makefile.in0000664000000000000000000013537212244721750012052 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in COPYING COPYING.LIB THANKS \ build-aux/ar-lib build-aux/config.guess build-aux/config.sub \ build-aux/depcomp build-aux/install-sh build-aux/mdate-sh \ build-aux/missing build-aux/texinfo.tex build-aux/ylwrap \ build-aux/ltmain.sh $(top_srcdir)/build-aux/ar-lib \ $(top_srcdir)/build-aux/config.guess \ $(top_srcdir)/build-aux/config.sub \ $(top_srcdir)/build-aux/install-sh \ $(top_srcdir)/build-aux/ltmain.sh \ $(top_srcdir)/build-aux/missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = 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 dist dist-all distcheck 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 CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) 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@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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@ DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc EXTRA_DIST = windows/asn1-parser/asn1-parser.vcproj \ windows/asn1-parser/config.h windows/libtasn1.ncb \ windows/libtasn1.sln windows/libtasn1.suo \ windows/gnulib/getopt.h windows/gnulib/gnulib.vcproj \ windows/libtasn1/libtasn1.vcproj \ windows/test-parser/test-parser.vcproj \ windows/test-tree/test-tree.vcproj windows/libtasn14win.mk \ cfg.mk maint.mk .clcopying SUBDIRS = gl lib src examples tests doc ACLOCAL_AMFLAGS = -I m4 -I gl/m4 -I lib/glm4 all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(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 .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # 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 distdir: $(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) | GZIP=$(GZIP_ENV) gzip -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 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -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*) \ GZIP=$(GZIP_ENV) gzip -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*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(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 \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(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 check: check-recursive all-am: Makefile config.h 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 clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool 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 mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool 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-hdr distclean-libtool \ 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 mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am gnulib-update: gnulib-tool --add-import --dir=. --lib=libgnu --source-base=lib/gllib --m4-base=lib/glm4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=2 --no-conditional-dependencies --libtool --macro-prefix=lgl --no-vc-files dist-hook: make -C doc/ compare-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: libtasn1-3.4/gl/0000775000000000000000000000000012244722064010453 500000000000000libtasn1-3.4/gl/msvc-inval.c0000664000000000000000000000750312244720630012620 00000000000000/* Invalid parameter handler for MSVC runtime libraries. Copyright (C) 2011-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 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #include /* Specification. */ #include "msvc-inval.h" #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) /* Get _invalid_parameter_handler type and _set_invalid_parameter_handler declaration. */ # include # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING static void cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { } # else /* Get declarations of the native Windows API functions. */ # define WIN32_LEAN_AND_MEAN # include # if defined _MSC_VER static void cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } # else /* An index to thread-local storage. */ static DWORD tls_index; static int tls_initialized /* = 0 */; /* Used as a fallback only. */ static struct gl_msvc_inval_per_thread not_per_thread; struct gl_msvc_inval_per_thread * gl_msvc_inval_current (void) { if (!tls_initialized) { tls_index = TlsAlloc (); tls_initialized = 1; } if (tls_index == TLS_OUT_OF_INDEXES) /* TlsAlloc had failed. */ return ¬_per_thread; else { struct gl_msvc_inval_per_thread *pointer = (struct gl_msvc_inval_per_thread *) TlsGetValue (tls_index); if (pointer == NULL) { /* First call. Allocate a new 'struct gl_msvc_inval_per_thread'. */ pointer = (struct gl_msvc_inval_per_thread *) malloc (sizeof (struct gl_msvc_inval_per_thread)); if (pointer == NULL) /* Could not allocate memory. Use the global storage. */ pointer = ¬_per_thread; TlsSetValue (tls_index, pointer); } return pointer; } } static void cdecl gl_msvc_invalid_parameter_handler (const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned int line, uintptr_t dummy) { struct gl_msvc_inval_per_thread *current = gl_msvc_inval_current (); if (current->restart_valid) longjmp (current->restart, 1); else /* An invalid parameter notification from outside the gnulib code. Give the caller a chance to intervene. */ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL); } # endif # endif static int gl_msvc_inval_initialized /* = 0 */; void gl_msvc_inval_ensure_handler (void) { if (gl_msvc_inval_initialized == 0) { _set_invalid_parameter_handler (gl_msvc_invalid_parameter_handler); gl_msvc_inval_initialized = 1; } } #endif libtasn1-3.4/gl/sys_stat.in.h0000664000000000000000000004767112244720630013036 00000000000000/* Provide a more complete sys/stat header file. Copyright (C) 2005-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 3, 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 . */ /* Written by Eric Blake, Paul Eggert, and Jim Meyering. */ /* This file is supposed to be used on platforms where is incomplete. It is intended to provide definitions and prototypes needed by an application. Start with what the system provides. */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_sys_stat_h /* Special invocation convention. */ #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_SYS_STAT_H /* Get nlink_t. May also define off_t to a 64-bit type on native Windows. */ #include /* Get struct timespec. */ #include /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_SYS_STAT_H@ #ifndef _@GUARD_PREFIX@_SYS_STAT_H #define _@GUARD_PREFIX@_SYS_STAT_H /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Before doing "#define mkdir rpl_mkdir" below, we need to include all headers that may declare mkdir(). Native Windows platforms declare mkdir in and/or , not in . */ #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # include /* mingw32, mingw64 */ # include /* mingw64, MSVC 9 */ #endif /* Native Windows platforms declare umask() in . */ #if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif /* Large File Support on native Windows. */ #if @WINDOWS_64_BIT_ST_SIZE@ # define stat _stati64 #endif #ifndef S_IFIFO # ifdef _S_IFIFO # define S_IFIFO _S_IFIFO # endif #endif #ifndef S_IFMT # define S_IFMT 0170000 #endif #if STAT_MACROS_BROKEN # undef S_ISBLK # undef S_ISCHR # undef S_ISDIR # undef S_ISFIFO # undef S_ISLNK # undef S_ISNAM # undef S_ISMPB # undef S_ISMPC # undef S_ISNWK # undef S_ISREG # undef S_ISSOCK #endif #ifndef S_ISBLK # ifdef S_IFBLK # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) # else # define S_ISBLK(m) 0 # endif #endif #ifndef S_ISCHR # ifdef S_IFCHR # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) # else # define S_ISCHR(m) 0 # endif #endif #ifndef S_ISDIR # ifdef S_IFDIR # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) # else # define S_ISDIR(m) 0 # endif #endif #ifndef S_ISDOOR /* Solaris 2.5 and up */ # define S_ISDOOR(m) 0 #endif #ifndef S_ISFIFO # ifdef S_IFIFO # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) # else # define S_ISFIFO(m) 0 # endif #endif #ifndef S_ISLNK # ifdef S_IFLNK # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) # else # define S_ISLNK(m) 0 # endif #endif #ifndef S_ISMPB /* V7 */ # ifdef S_IFMPB # define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) # define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) # else # define S_ISMPB(m) 0 # define S_ISMPC(m) 0 # endif #endif #ifndef S_ISMPX /* AIX */ # define S_ISMPX(m) 0 #endif #ifndef S_ISNAM /* Xenix */ # ifdef S_IFNAM # define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) # else # define S_ISNAM(m) 0 # endif #endif #ifndef S_ISNWK /* HP/UX */ # ifdef S_IFNWK # define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) # else # define S_ISNWK(m) 0 # endif #endif #ifndef S_ISPORT /* Solaris 10 and up */ # define S_ISPORT(m) 0 #endif #ifndef S_ISREG # ifdef S_IFREG # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) # else # define S_ISREG(m) 0 # endif #endif #ifndef S_ISSOCK # ifdef S_IFSOCK # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) # else # define S_ISSOCK(m) 0 # endif #endif #ifndef S_TYPEISMQ # define S_TYPEISMQ(p) 0 #endif #ifndef S_TYPEISTMO # define S_TYPEISTMO(p) 0 #endif #ifndef S_TYPEISSEM # ifdef S_INSEM # define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) # else # define S_TYPEISSEM(p) 0 # endif #endif #ifndef S_TYPEISSHM # ifdef S_INSHD # define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) # else # define S_TYPEISSHM(p) 0 # endif #endif /* high performance ("contiguous data") */ #ifndef S_ISCTG # define S_ISCTG(p) 0 #endif /* Cray DMF (data migration facility): off line, with data */ #ifndef S_ISOFD # define S_ISOFD(p) 0 #endif /* Cray DMF (data migration facility): off line, with no data */ #ifndef S_ISOFL # define S_ISOFL(p) 0 #endif /* 4.4BSD whiteout */ #ifndef S_ISWHT # define S_ISWHT(m) 0 #endif /* If any of the following are undefined, define them to their de facto standard values. */ #if !S_ISUID # define S_ISUID 04000 #endif #if !S_ISGID # define S_ISGID 02000 #endif /* S_ISVTX is a common extension to POSIX. */ #ifndef S_ISVTX # define S_ISVTX 01000 #endif #if !S_IRUSR && S_IREAD # define S_IRUSR S_IREAD #endif #if !S_IRUSR # define S_IRUSR 00400 #endif #if !S_IRGRP # define S_IRGRP (S_IRUSR >> 3) #endif #if !S_IROTH # define S_IROTH (S_IRUSR >> 6) #endif #if !S_IWUSR && S_IWRITE # define S_IWUSR S_IWRITE #endif #if !S_IWUSR # define S_IWUSR 00200 #endif #if !S_IWGRP # define S_IWGRP (S_IWUSR >> 3) #endif #if !S_IWOTH # define S_IWOTH (S_IWUSR >> 6) #endif #if !S_IXUSR && S_IEXEC # define S_IXUSR S_IEXEC #endif #if !S_IXUSR # define S_IXUSR 00100 #endif #if !S_IXGRP # define S_IXGRP (S_IXUSR >> 3) #endif #if !S_IXOTH # define S_IXOTH (S_IXUSR >> 6) #endif #if !S_IRWXU # define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) #endif #if !S_IRWXG # define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) #endif #if !S_IRWXO # define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) #endif /* S_IXUGO is a common extension to POSIX. */ #if !S_IXUGO # define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) #endif #ifndef S_IRWXUGO # define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) #endif /* Macros for futimens and utimensat. */ #ifndef UTIME_NOW # define UTIME_NOW (-1) # define UTIME_OMIT (-2) #endif #if @GNULIB_FCHMODAT@ # if !@HAVE_FCHMODAT@ _GL_FUNCDECL_SYS (fchmodat, int, (int fd, char const *file, mode_t mode, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (fchmodat, int, (int fd, char const *file, mode_t mode, int flag)); _GL_CXXALIASWARN (fchmodat); #elif defined GNULIB_POSIXCHECK # undef fchmodat # if HAVE_RAW_DECL_FCHMODAT _GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FSTAT@ # if @REPLACE_FSTAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fstat # define fstat rpl_fstat # endif _GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf)); # else _GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf)); # endif _GL_CXXALIASWARN (fstat); #elif @WINDOWS_64_BIT_ST_SIZE@ /* Above, we define stat to _stati64. */ # define fstat _fstati64 #elif defined GNULIB_POSIXCHECK # undef fstat # if HAVE_RAW_DECL_FSTAT _GL_WARN_ON_USE (fstat, "fstat has portability problems - " "use gnulib module fstat for portability"); # endif #endif #if @GNULIB_FSTATAT@ # if @REPLACE_FSTATAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fstatat # define fstatat rpl_fstatat # endif _GL_FUNCDECL_RPL (fstatat, int, (int fd, char const *name, struct stat *st, int flags) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (fstatat, int, (int fd, char const *name, struct stat *st, int flags)); # else # if !@HAVE_FSTATAT@ _GL_FUNCDECL_SYS (fstatat, int, (int fd, char const *name, struct stat *st, int flags) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (fstatat, int, (int fd, char const *name, struct stat *st, int flags)); # endif _GL_CXXALIASWARN (fstatat); #elif defined GNULIB_POSIXCHECK # undef fstatat # if HAVE_RAW_DECL_FSTATAT _GL_WARN_ON_USE (fstatat, "fstatat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FUTIMENS@ /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens implementation relies on futimesat, which on Solaris 10 makes an invocation to futimens that is meant to invoke the libc's futimens(), not gnulib's futimens(). */ # if @REPLACE_FUTIMENS@ || (!@HAVE_FUTIMENS@ && defined __sun) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef futimens # define futimens rpl_futimens # endif _GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2])); _GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2])); # else # if !@HAVE_FUTIMENS@ _GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2])); # endif _GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2])); # endif # if @HAVE_FUTIMENS@ _GL_CXXALIASWARN (futimens); # endif #elif defined GNULIB_POSIXCHECK # undef futimens # if HAVE_RAW_DECL_FUTIMENS _GL_WARN_ON_USE (futimens, "futimens is not portable - " "use gnulib module futimens for portability"); # endif #endif #if @GNULIB_LCHMOD@ /* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME denotes a symbolic link. */ # if !@HAVE_LCHMOD@ /* The lchmod replacement follows symbolic links. Callers should take this into account; lchmod should be applied only to arguments that are known to not be symbolic links. On hosts that lack lchmod, this can lead to race conditions between the check and the invocation of lchmod, but we know of no workarounds that are reliable in general. You might try requesting support for lchmod from your operating system supplier. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lchmod chmod # endif /* Need to cast, because on mingw, the second parameter of chmod is int mode. */ _GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int, (const char *filename, mode_t mode)); # else # if 0 /* assume already declared */ _GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode)); # endif # if @HAVE_LCHMOD@ _GL_CXXALIASWARN (lchmod); # endif #elif defined GNULIB_POSIXCHECK # undef lchmod # if HAVE_RAW_DECL_LCHMOD _GL_WARN_ON_USE (lchmod, "lchmod is unportable - " "use gnulib module lchmod for portability"); # endif #endif #if @GNULIB_LSTAT@ # if ! @HAVE_LSTAT@ /* mingw does not support symlinks, therefore it does not have lstat. But without links, stat does just fine. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lstat stat # endif _GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf)); # elif @REPLACE_LSTAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lstat # define lstat rpl_lstat # endif _GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf)); # else _GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf)); # endif # if @HAVE_LSTAT@ _GL_CXXALIASWARN (lstat); # endif #elif defined GNULIB_POSIXCHECK # undef lstat # if HAVE_RAW_DECL_LSTAT _GL_WARN_ON_USE (lstat, "lstat is unportable - " "use gnulib module lstat for portability"); # endif #endif #if @REPLACE_MKDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkdir # define mkdir rpl_mkdir # endif _GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); #else /* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. Additionally, it declares _mkdir (and depending on compile flags, an alias mkdir), only in the nonstandard includes and , which are included above. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # if !GNULIB_defined_rpl_mkdir static int rpl_mkdir (char const *name, mode_t mode) { return _mkdir (name); } # define GNULIB_defined_rpl_mkdir 1 # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mkdir rpl_mkdir # endif _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); # else _GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode)); # endif #endif _GL_CXXALIASWARN (mkdir); #if @GNULIB_MKDIRAT@ # if !@HAVE_MKDIRAT@ _GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)); _GL_CXXALIASWARN (mkdirat); #elif defined GNULIB_POSIXCHECK # undef mkdirat # if HAVE_RAW_DECL_MKDIRAT _GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_MKFIFO@ # if @REPLACE_MKFIFO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mkfifo # define mkfifo rpl_mkfifo # endif _GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode)); # else # if !@HAVE_MKFIFO@ _GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode)); # endif _GL_CXXALIASWARN (mkfifo); #elif defined GNULIB_POSIXCHECK # undef mkfifo # if HAVE_RAW_DECL_MKFIFO _GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - " "use gnulib module mkfifo for portability"); # endif #endif #if @GNULIB_MKFIFOAT@ # if !@HAVE_MKFIFOAT@ _GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)); _GL_CXXALIASWARN (mkfifoat); #elif defined GNULIB_POSIXCHECK # undef mkfifoat # if HAVE_RAW_DECL_MKFIFOAT _GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - " "use gnulib module mkfifoat for portability"); # endif #endif #if @GNULIB_MKNOD@ # if @REPLACE_MKNOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mknod # define mknod rpl_mknod # endif _GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)); # else # if !@HAVE_MKNOD@ _GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on OSF/1 5.1, the third parameter is '...'. */ _GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev)); # endif _GL_CXXALIASWARN (mknod); #elif defined GNULIB_POSIXCHECK # undef mknod # if HAVE_RAW_DECL_MKNOD _GL_WARN_ON_USE (mknod, "mknod is not portable - " "use gnulib module mknod for portability"); # endif #endif #if @GNULIB_MKNODAT@ # if !@HAVE_MKNODAT@ _GL_FUNCDECL_SYS (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (mknodat, int, (int fd, char const *file, mode_t mode, dev_t dev)); _GL_CXXALIASWARN (mknodat); #elif defined GNULIB_POSIXCHECK # undef mknodat # if HAVE_RAW_DECL_MKNODAT _GL_WARN_ON_USE (mknodat, "mknodat is not portable - " "use gnulib module mkfifoat for portability"); # endif #endif #if @GNULIB_STAT@ # if @REPLACE_STAT@ /* We can't use the object-like #define stat rpl_stat, because of struct stat. This means that rpl_stat will not be used if the user does (stat)(a,b). Oh well. */ # if defined _AIX && defined stat && defined _LARGE_FILES /* With _LARGE_FILES defined, AIX (only) defines stat to stat64, so we have to replace stat64() instead of stat(). */ # undef stat64 # define stat64(name, st) rpl_stat (name, st) # elif @WINDOWS_64_BIT_ST_SIZE@ /* Above, we define stat to _stati64. */ # if defined __MINGW32__ && defined _stati64 # ifndef _USE_32BIT_TIME_T /* The system headers define _stati64 to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # elif defined _MSC_VER && defined _stati64 # ifdef _USE_32BIT_TIME_T /* The system headers define _stati64 to _stat32i64. */ # undef _stat32i64 # define _stat32i64(name, st) rpl_stat (name, st) # else /* The system headers define _stati64 to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # else # undef _stati64 # define _stati64(name, st) rpl_stat (name, st) # endif # elif defined __MINGW32__ && defined stat # ifdef _USE_32BIT_TIME_T /* The system headers define stat to _stat32i64. */ # undef _stat32i64 # define _stat32i64(name, st) rpl_stat (name, st) # else /* The system headers define stat to _stat64. */ # undef _stat64 # define _stat64(name, st) rpl_stat (name, st) # endif # elif defined _MSC_VER && defined stat # ifdef _USE_32BIT_TIME_T /* The system headers define stat to _stat32. */ # undef _stat32 # define _stat32(name, st) rpl_stat (name, st) # else /* The system headers define stat to _stat64i32. */ # undef _stat64i32 # define _stat64i32(name, st) rpl_stat (name, st) # endif # else /* !(_AIX ||__MINGW32__ || _MSC_VER) */ # undef stat # define stat(name, st) rpl_stat (name, st) # endif /* !_LARGE_FILES */ _GL_EXTERN_C int stat (const char *name, struct stat *buf) _GL_ARG_NONNULL ((1, 2)); # endif #elif defined GNULIB_POSIXCHECK # undef stat # if HAVE_RAW_DECL_STAT _GL_WARN_ON_USE (stat, "stat is unportable - " "use gnulib module stat for portability"); # endif #endif #if @GNULIB_UTIMENSAT@ /* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat implementation relies on futimesat, which on Solaris 10 makes an invocation to utimensat that is meant to invoke the libc's utimensat(), not gnulib's utimensat(). */ # if @REPLACE_UTIMENSAT@ || (!@HAVE_UTIMENSAT@ && defined __sun) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef utimensat # define utimensat rpl_utimensat # endif _GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag)); # else # if !@HAVE_UTIMENSAT@ _GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name, struct timespec const times[2], int flag)); # endif # if @HAVE_UTIMENSAT@ _GL_CXXALIASWARN (utimensat); # endif #elif defined GNULIB_POSIXCHECK # undef utimensat # if HAVE_RAW_DECL_UTIMENSAT _GL_WARN_ON_USE (utimensat, "utimensat is not portable - " "use gnulib module utimensat for portability"); # endif #endif #endif /* _@GUARD_PREFIX@_SYS_STAT_H */ #endif /* _@GUARD_PREFIX@_SYS_STAT_H */ #endif libtasn1-3.4/gl/malloc.c0000664000000000000000000000273212244720630012007 00000000000000/* malloc() function that is glibc compatible. Copyright (C) 1997-1998, 2006-2007, 2009-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 3, 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 . */ /* written by Jim Meyering and Bruno Haible */ #define _GL_USE_STDLIB_ALLOC 1 #include /* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h. */ #ifdef malloc # define NEED_MALLOC_GNU 1 # undef malloc /* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */ #elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU # define NEED_MALLOC_GNU 1 #endif #include #include /* Allocate an N-byte block of memory from the heap. If N is zero, allocate a 1-byte block. */ void * rpl_malloc (size_t n) { void *result; #if NEED_MALLOC_GNU if (n == 0) n = 1; #endif result = malloc (n); #if !HAVE_MALLOC_POSIX if (result == NULL) errno = ENOMEM; #endif return result; } libtasn1-3.4/gl/getopt.c0000664000000000000000000011750412244720630012046 00000000000000/* Getopt for GNU. NOTE: getopt is part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! Copyright (C) 1987-1996, 1998-2004, 2006, 2008-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. 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 . */ #ifndef _LIBC # include #endif #include "getopt.h" #include #include #include #include #ifdef _LIBC # include #else # include "gettext.h" # define _(msgid) gettext (msgid) #endif #if defined _LIBC && defined USE_IN_LIBIO # include #endif /* This version of 'getopt' appears to the caller like standard Unix 'getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As 'getopt_long' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Using 'getopt' or setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt_int.h" /* For communication from 'getopt' to the caller. When 'getopt' finds an option that takes an argument, the argument value is returned here. Also, when 'ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to 'getopt'. On entry to 'getopt', zero means this is the first call; initialize. When 'getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, 'optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ int optind = 1; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Keep a global copy of all internal members of getopt_data. */ static struct _getopt_data getopt_data; #if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV extern char *getenv (); #endif #ifdef _LIBC /* Stored original parameters. XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ extern int __libc_argc; extern char **__libc_argv; /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ # ifdef USE_NONOPTION_FLAGS /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; # endif # ifdef USE_NONOPTION_FLAGS # define SWAP_FLAGS(ch1, ch2) \ if (d->__nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } # else # define SWAP_FLAGS(ch1, ch2) # endif #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. 'first_nonopt' and 'last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ static void exchange (char **argv, struct _getopt_data *d) { int bottom = d->__first_nonopt; int middle = d->__last_nonopt; int top = d->optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS /* First make sure the handling of the '__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ char *new_str = malloc (top + 1); if (new_str == NULL) d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0; else { memset (__mempcpy (new_str, __getopt_nonoption_flags, d->__nonoption_flags_max_len), '\0', top + 1 - d->__nonoption_flags_max_len); d->__nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } } #endif while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; SWAP_FLAGS (bottom + i, middle + i); } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ d->__first_nonopt += (d->optind - d->__last_nonopt); d->__last_nonopt = d->optind; } /* Initialize the internal data when the first call is made. */ static const char * _getopt_initialize (int argc _GL_UNUSED, char **argv _GL_UNUSED, const char *optstring, struct _getopt_data *d, int posixly_correct) { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ d->__first_nonopt = d->__last_nonopt = d->optind; d->__nextchar = NULL; d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { d->__ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { d->__ordering = REQUIRE_ORDER; ++optstring; } else if (d->__posixly_correct) d->__ordering = REQUIRE_ORDER; else d->__ordering = PERMUTE; #if defined _LIBC && defined USE_NONOPTION_FLAGS if (!d->__posixly_correct && argc == __libc_argc && argv == __libc_argv) { if (d->__nonoption_flags_max_len == 0) { if (__getopt_nonoption_flags == NULL || __getopt_nonoption_flags[0] == '\0') d->__nonoption_flags_max_len = -1; else { const char *orig_str = __getopt_nonoption_flags; int len = d->__nonoption_flags_max_len = strlen (orig_str); if (d->__nonoption_flags_max_len < argc) d->__nonoption_flags_max_len = argc; __getopt_nonoption_flags = (char *) malloc (d->__nonoption_flags_max_len); if (__getopt_nonoption_flags == NULL) d->__nonoption_flags_max_len = -1; else memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), '\0', d->__nonoption_flags_max_len - len); } } d->__nonoption_flags_len = d->__nonoption_flags_max_len; } else d->__nonoption_flags_len = 0; #endif return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If 'getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If 'getopt' finds another option character, it returns that character, updating 'optind' and 'nextchar' so that the next call to 'getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, 'getopt' returns -1. Then 'optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set 'opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in 'optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in 'optarg', otherwise 'optarg' is set to zero. If OPTSTRING starts with '-' or '+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with '--' instead of '-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a '=', or else the in next ARGV-element. When 'getopt' finds a long-named option, it returns 0 if that option's 'flag' field is nonzero, the value of the option's 'val' field if the 'flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of 'struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal_r (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, struct _getopt_data *d, int posixly_correct) { int print_errors = d->opterr; if (argc < 1) return -1; d->optarg = NULL; if (d->optind == 0 || !d->__initialized) { if (d->optind == 0) d->optind = 1; /* Don't scan ARGV[0], the program name. */ optstring = _getopt_initialize (argc, argv, optstring, d, posixly_correct); d->__initialized = 1; } else if (optstring[0] == '-' || optstring[0] == '+') optstring++; if (optstring[0] == ':') print_errors = 0; /* Test whether ARGV[optind] points to a non-option argument. Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS # define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \ || (d->optind < d->__nonoption_flags_len \ && __getopt_nonoption_flags[d->optind] == '1')) #else # define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0') #endif if (d->__nextchar == NULL || *d->__nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (d->__last_nonopt > d->optind) d->__last_nonopt = d->optind; if (d->__first_nonopt > d->optind) d->__first_nonopt = d->optind; if (d->__ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (d->__first_nonopt != d->__last_nonopt && d->__last_nonopt != d->optind) exchange ((char **) argv, d); else if (d->__last_nonopt != d->optind) d->__first_nonopt = d->optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (d->optind < argc && NONOPTION_P) d->optind++; d->__last_nonopt = d->optind; } /* The special ARGV-element '--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (d->optind != argc && !strcmp (argv[d->optind], "--")) { d->optind++; if (d->__first_nonopt != d->__last_nonopt && d->__last_nonopt != d->optind) exchange ((char **) argv, d); else if (d->__first_nonopt == d->__last_nonopt) d->__first_nonopt = d->optind; d->__last_nonopt = argc; d->optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (d->optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (d->__first_nonopt != d->__last_nonopt) d->optind = d->__first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (d->__ordering == REQUIRE_ORDER) return -1; d->optarg = argv[d->optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ d->__nextchar = (argv[d->optind] + 1 + (longopts != NULL && argv[d->optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[d->optind][1] == '-' || (long_only && (argv[d->optind][2] || !strchr (optstring, argv[d->optind][1]))))) { char *nameend; unsigned int namelen; const struct option *p; const struct option *pfound = NULL; struct option_list { const struct option *p; struct option_list *next; } *ambig_list = NULL; int exact = 0; int indfound = -1; int option_index; for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; namelen = nameend - d->__nextchar; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, d->__nextchar, namelen)) { if (namelen == (unsigned int) strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val) { /* Second or later nonexact match found. */ struct option_list *newp = malloc (sizeof (*newp)); newp->p = p; newp->next = ambig_list; ambig_list = newp; } } if (ambig_list != NULL && !exact) { if (print_errors) { struct option_list first; first.p = pfound; first.next = ambig_list; ambig_list = &first; #if defined _LIBC && defined USE_IN_LIBIO char *buf = NULL; size_t buflen = 0; FILE *fp = open_memstream (&buf, &buflen); if (fp != NULL) { fprintf (fp, _("%s: option '%s' is ambiguous; possibilities:"), argv[0], argv[d->optind]); do { fprintf (fp, " '--%s'", ambig_list->p->name); ambig_list = ambig_list->next; } while (ambig_list != NULL); fputc_unlocked ('\n', fp); if (__builtin_expect (fclose (fp) != EOF, 1)) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } } #else fprintf (stderr, _("%s: option '%s' is ambiguous; possibilities:"), argv[0], argv[d->optind]); do { fprintf (stderr, " '--%s'", ambig_list->p->name); ambig_list = ambig_list->next; } while (ambig_list != NULL); fputc ('\n', stderr); #endif } d->__nextchar += strlen (d->__nextchar); d->optind++; d->optopt = 0; return '?'; } while (ambig_list != NULL) { struct option_list *pn = ambig_list->next; free (ambig_list); ambig_list = pn; } if (pfound != NULL) { option_index = indfound; d->optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) d->optarg = nameend + 1; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif if (argv[d->optind - 1][1] == '-') { /* --option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("\ %s: option '--%s' doesn't allow an argument\n"), argv[0], pfound->name); #else fprintf (stderr, _("\ %s: option '--%s' doesn't allow an argument\n"), argv[0], pfound->name); #endif } else { /* +option or -option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("\ %s: option '%c%s' doesn't allow an argument\n"), argv[0], argv[d->optind - 1][0], pfound->name); #else fprintf (stderr, _("\ %s: option '%c%s' doesn't allow an argument\n"), argv[0], argv[d->optind - 1][0], pfound->name); #endif } #if defined _LIBC && defined USE_IN_LIBIO if (n >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #endif } d->__nextchar += strlen (d->__nextchar); d->optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (d->optind < argc) d->optarg = argv[d->optind++]; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option '--%s' requires an argument\n"), argv[0], pfound->name) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option '--%s' requires an argument\n"), argv[0], pfound->name); #endif } d->__nextchar += strlen (d->__nextchar); d->optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } d->__nextchar += strlen (d->__nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[d->optind][1] == '-' || strchr (optstring, *d->__nextchar) == NULL) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif if (argv[d->optind][1] == '-') { /* --option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: unrecognized option '--%s'\n"), argv[0], d->__nextchar); #else fprintf (stderr, _("%s: unrecognized option '--%s'\n"), argv[0], d->__nextchar); #endif } else { /* +option or -option */ #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: unrecognized option '%c%s'\n"), argv[0], argv[d->optind][0], d->__nextchar); #else fprintf (stderr, _("%s: unrecognized option '%c%s'\n"), argv[0], argv[d->optind][0], d->__nextchar); #endif } #if defined _LIBC && defined USE_IN_LIBIO if (n >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #endif } d->__nextchar = (char *) ""; d->optind++; d->optopt = 0; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *d->__nextchar++; const char *temp = strchr (optstring, c); /* Increment 'optind' when we start to process its last character. */ if (*d->__nextchar == '\0') ++d->optind; if (temp == NULL || c == ':' || c == ';') { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; int n; #endif #if defined _LIBC && defined USE_IN_LIBIO n = __asprintf (&buf, _("%s: invalid option -- '%c'\n"), argv[0], c); #else fprintf (stderr, _("%s: invalid option -- '%c'\n"), argv[0], c); #endif #if defined _LIBC && defined USE_IN_LIBIO if (n >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #endif } d->optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = 0; int option_index; if (longopts == NULL) goto no_longs; /* This is an option that requires an argument. */ if (*d->__nextchar != '\0') { d->optarg = d->__nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ d->optind++; } else if (d->optind == argc) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("%s: option requires an argument -- '%c'\n"), argv[0], c) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option requires an argument -- '%c'\n"), argv[0], c); #endif } d->optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else /* We already incremented 'd->optind' once; increment it again when taking next ARGV-elt as argument. */ d->optarg = argv[d->optind++]; /* optarg is now the argument, see if it's in the table of longopts. */ for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar)) { if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val) /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("%s: option '-W %s' is ambiguous\n"), argv[0], d->optarg) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option '-W %s' is ambiguous\n"), argv[0], d->optarg); #endif } d->__nextchar += strlen (d->__nextchar); d->optind++; return '?'; } if (pfound != NULL) { option_index = indfound; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) d->optarg = nameend + 1; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option '-W %s' doesn't allow an argument\n"), argv[0], pfound->name) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("\ %s: option '-W %s' doesn't allow an argument\n"), argv[0], pfound->name); #endif } d->__nextchar += strlen (d->__nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (d->optind < argc) d->optarg = argv[d->optind++]; else { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option '-W %s' requires an argument\n"), argv[0], pfound->name) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("\ %s: option '-W %s' requires an argument\n"), argv[0], pfound->name); #endif } d->__nextchar += strlen (d->__nextchar); return optstring[0] == ':' ? ':' : '?'; } } else d->optarg = NULL; d->__nextchar += strlen (d->__nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } no_longs: d->__nextchar = NULL; return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*d->__nextchar != '\0') { d->optarg = d->__nextchar; d->optind++; } else d->optarg = NULL; d->__nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*d->__nextchar != '\0') { d->optarg = d->__nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ d->optind++; } else if (d->optind == argc) { if (print_errors) { #if defined _LIBC && defined USE_IN_LIBIO char *buf; if (__asprintf (&buf, _("\ %s: option requires an argument -- '%c'\n"), argv[0], c) >= 0) { _IO_flockfile (stderr); int old_flags2 = ((_IO_FILE *) stderr)->_flags2; ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL; __fxprintf (NULL, "%s", buf); ((_IO_FILE *) stderr)->_flags2 = old_flags2; _IO_funlockfile (stderr); free (buf); } #else fprintf (stderr, _("%s: option requires an argument -- '%c'\n"), argv[0], c); #endif } d->optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented 'optind' once; increment it again when taking next ARGV-elt as argument. */ d->optarg = argv[d->optind++]; d->__nextchar = NULL; } } return c; } } int _getopt_internal (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, int posixly_correct) { int result; getopt_data.optind = optind; getopt_data.opterr = opterr; result = _getopt_internal_r (argc, argv, optstring, longopts, longind, long_only, &getopt_data, posixly_correct); optind = getopt_data.optind; optarg = getopt_data.optarg; optopt = getopt_data.optopt; return result; } /* glibc gets a LSB-compliant getopt. Standalone applications get a POSIX-compliant getopt. */ #if _LIBC enum { POSIXLY_CORRECT = 0 }; #else enum { POSIXLY_CORRECT = 1 }; #endif int getopt (int argc, char *const *argv, const char *optstring) { return _getopt_internal (argc, (char **) argv, optstring, (const struct option *) 0, (int *) 0, 0, POSIXLY_CORRECT); } #ifdef _LIBC int __posix_getopt (int argc, char *const *argv, const char *optstring) { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0, 1); } #endif #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of 'getopt'. */ int main (int argc, char **argv) { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value '%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ libtasn1-3.4/gl/progname.h0000664000000000000000000000373712244720630012363 00000000000000/* Program name management. Copyright (C) 2001-2004, 2006, 2009-2013 Free Software Foundation, Inc. Written by Bruno Haible , 2001. 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 . */ #ifndef _PROGNAME_H #define _PROGNAME_H /* Programs using this file should do the following in main(): set_program_name (argv[0]); */ #ifdef __cplusplus extern "C" { #endif /* String containing name the program is called with. */ extern const char *program_name; /* Set program_name, based on argv[0]. argv0 must be a string allocated with indefinite extent, and must not be modified after this call. */ extern void set_program_name (const char *argv0); #if ENABLE_RELOCATABLE /* Set program_name, based on argv[0], and original installation prefix and directory, for relocatability. */ extern void set_program_name_and_installdir (const char *argv0, const char *orig_installprefix, const char *orig_installdir); #undef set_program_name #define set_program_name(ARG0) \ set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR) /* Return the full pathname of the current executable, based on the earlier call to set_program_name_and_installdir. Return NULL if unknown. */ extern char *get_full_program_name (void); #endif #ifdef __cplusplus } #endif #endif /* _PROGNAME_H */ libtasn1-3.4/gl/timespec.c0000664000000000000000000000013012244720630012337 00000000000000#include #define _GL_TIMESPEC_INLINE _GL_EXTERN_INLINE #include "timespec.h" libtasn1-3.4/gl/stdint.in.h0000664000000000000000000004461012244720630012460 00000000000000/* Copyright (C) 2001-2002, 2004-2013 Free Software Foundation, Inc. Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. This file is part of gnulib. 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, 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 . */ /* * ISO C 99 for platforms that lack it. * */ #ifndef _@GUARD_PREFIX@_STDINT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* When including a system file that in turn includes , use the system , not our substitute. This avoids problems with (for example) VMS, whose includes . */ #define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* On Android (Bionic libc), includes this file before having defined 'time_t'. Therefore in this case avoid including other system header files; just include the system's . Ideally we should test __BIONIC__ here, but it is only defined after has been included; hence test __ANDROID__ instead. */ #if defined __ANDROID__ \ && defined _SYS_TYPES_H_ && !defined __need_size_t # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #else /* Get those types that are already defined in other system include files, so that we can "#define int8_t signed char" below without worrying about a later system include file containing a "typedef signed char int8_t;" that will get messed up by our macro. Our macros should all be consistent with the system versions, except for the "fast" types and macros, which we recommend against using in public interfaces due to compiler differences. */ #if @HAVE_STDINT_H@ # if defined __sgi && ! defined __c99 /* Bypass IRIX's if in C89 mode, since it merely annoys users with "This header file is to be used only for c99 mode compilations" diagnostics. */ # define __STDINT_H__ # endif /* Some pre-C++11 implementations need this. */ # ifdef __cplusplus # ifndef __STDC_CONSTANT_MACROS # define __STDC_CONSTANT_MACROS 1 # endif # ifndef __STDC_LIMIT_MACROS # define __STDC_LIMIT_MACROS 1 # endif # endif /* Other systems may have an incomplete or buggy . Include it before , since any "#include " in would reinclude us, skipping our contents because _@GUARD_PREFIX@_STDINT_H is defined. The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDINT_H@ #endif #if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H #define _@GUARD_PREFIX@_STDINT_H /* defines some of the stdint.h types as well, on glibc, IRIX 6.5, and OpenBSD 3.8 (via ). AIX 5.2 isn't needed and causes troubles. Mac OS X 10.4.6 includes (which is us), but relies on the system definitions, so include after @NEXT_STDINT_H@. */ #if @HAVE_SYS_TYPES_H@ && ! defined _AIX # include #endif /* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, LONG_MIN, LONG_MAX, ULONG_MAX. */ #include #if @HAVE_INTTYPES_H@ /* In OpenBSD 3.8, includes , which defines int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. also defines intptr_t and uintptr_t. */ # include #elif @HAVE_SYS_INTTYPES_H@ /* Solaris 7 has the types except the *_fast*_t types, and the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ # include #endif #if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__ /* Linux libc4 >= 4.6.7 and libc5 have a that defines int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is included by . */ # include #endif #undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H /* Minimum and maximum values for an integer type under the usual assumption. Return an unspecified value if BITS == 0, adding a check to pacify picky compilers. */ #define _STDINT_MIN(signed, bits, zero) \ ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero)) #define _STDINT_MAX(signed, bits, zero) \ ((signed) \ ? ~ _STDINT_MIN (signed, bits, zero) \ : /* The expression for the unsigned case. The subtraction of (signed) \ is a nop in the unsigned case and avoids "signed integer overflow" \ warnings in the signed case. */ \ ((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) #if !GNULIB_defined_stdint_types /* 7.18.1.1. Exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef int8_t #undef uint8_t typedef signed char gl_int8_t; typedef unsigned char gl_uint8_t; #define int8_t gl_int8_t #define uint8_t gl_uint8_t #undef int16_t #undef uint16_t typedef short int gl_int16_t; typedef unsigned short int gl_uint16_t; #define int16_t gl_int16_t #define uint16_t gl_uint16_t #undef int32_t #undef uint32_t typedef int gl_int32_t; typedef unsigned int gl_uint32_t; #define int32_t gl_int32_t #define uint32_t gl_uint32_t /* If the system defines INT64_MAX, assume int64_t works. That way, if the underlying platform defines int64_t to be a 64-bit long long int, the code below won't mistakenly define it to be a 64-bit long int, which would mess up C++ name mangling. We must use #ifdef rather than #if, to avoid an error with HP-UX 10.20 cc. */ #ifdef INT64_MAX # define GL_INT64_T #else /* Do not undefine int64_t if gnulib is not being used with 64-bit types, since otherwise it breaks platforms like Tandem/NSK. */ # if LONG_MAX >> 31 >> 31 == 1 # undef int64_t typedef long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif defined _MSC_VER # undef int64_t typedef __int64 gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # elif @HAVE_LONG_LONG_INT@ # undef int64_t typedef long long int gl_int64_t; # define int64_t gl_int64_t # define GL_INT64_T # endif #endif #ifdef UINT64_MAX # define GL_UINT64_T #else # if ULONG_MAX >> 31 >> 31 >> 1 == 1 # undef uint64_t typedef unsigned long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif defined _MSC_VER # undef uint64_t typedef unsigned __int64 gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # elif @HAVE_UNSIGNED_LONG_LONG_INT@ # undef uint64_t typedef unsigned long long int gl_uint64_t; # define uint64_t gl_uint64_t # define GL_UINT64_T # endif #endif /* Avoid collision with Solaris 2.5.1 etc. */ #define _UINT8_T #define _UINT32_T #define _UINT64_T /* 7.18.1.2. Minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef int_least8_t #undef uint_least8_t #undef int_least16_t #undef uint_least16_t #undef int_least32_t #undef uint_least32_t #undef int_least64_t #undef uint_least64_t #define int_least8_t int8_t #define uint_least8_t uint8_t #define int_least16_t int16_t #define uint_least16_t uint16_t #define int_least32_t int32_t #define uint_least32_t uint32_t #ifdef GL_INT64_T # define int_least64_t int64_t #endif #ifdef GL_UINT64_T # define uint_least64_t uint64_t #endif /* 7.18.1.3. Fastest minimum-width integer types */ /* Note: Other substitutes may define these types differently. It is not recommended to use these types in public header files. */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. The following code normally uses types consistent with glibc, as that lessens the chance of incompatibility with older GNU hosts. */ #undef int_fast8_t #undef uint_fast8_t #undef int_fast16_t #undef uint_fast16_t #undef int_fast32_t #undef uint_fast32_t #undef int_fast64_t #undef uint_fast64_t typedef signed char gl_int_fast8_t; typedef unsigned char gl_uint_fast8_t; #ifdef __sun /* Define types compatible with SunOS 5.10, so that code compiled under earlier SunOS versions works with code compiled under SunOS 5.10. */ typedef int gl_int_fast32_t; typedef unsigned int gl_uint_fast32_t; #else typedef long int gl_int_fast32_t; typedef unsigned long int gl_uint_fast32_t; #endif typedef gl_int_fast32_t gl_int_fast16_t; typedef gl_uint_fast32_t gl_uint_fast16_t; #define int_fast8_t gl_int_fast8_t #define uint_fast8_t gl_uint_fast8_t #define int_fast16_t gl_int_fast16_t #define uint_fast16_t gl_uint_fast16_t #define int_fast32_t gl_int_fast32_t #define uint_fast32_t gl_uint_fast32_t #ifdef GL_INT64_T # define int_fast64_t int64_t #endif #ifdef GL_UINT64_T # define uint_fast64_t uint64_t #endif /* 7.18.1.4. Integer types capable of holding object pointers */ #undef intptr_t #undef uintptr_t typedef long int gl_intptr_t; typedef unsigned long int gl_uintptr_t; #define intptr_t gl_intptr_t #define uintptr_t gl_uintptr_t /* 7.18.1.5. Greatest-width integer types */ /* Note: These types are compiler dependent. It may be unwise to use them in public header files. */ /* If the system defines INTMAX_MAX, assume that intmax_t works, and similarly for UINTMAX_MAX and uintmax_t. This avoids problems with assuming one type where another is used by the system. */ #ifndef INTMAX_MAX # undef INTMAX_C # undef intmax_t # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 typedef long long int gl_intmax_t; # define intmax_t gl_intmax_t # elif defined GL_INT64_T # define intmax_t int64_t # else typedef long int gl_intmax_t; # define intmax_t gl_intmax_t # endif #endif #ifndef UINTMAX_MAX # undef UINTMAX_C # undef uintmax_t # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 typedef unsigned long long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # elif defined GL_UINT64_T # define uintmax_t uint64_t # else typedef unsigned long int gl_uintmax_t; # define uintmax_t gl_uintmax_t # endif #endif /* Verify that intmax_t and uintmax_t have the same size. Too much code breaks if this is not the case. If this check fails, the reason is likely to be found in the autoconf macros. */ typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) ? 1 : -1]; #define GNULIB_defined_stdint_types 1 #endif /* !GNULIB_defined_stdint_types */ /* 7.18.2. Limits of specified-width integer types */ /* 7.18.2.1. Limits of exact-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. */ #undef INT8_MIN #undef INT8_MAX #undef UINT8_MAX #define INT8_MIN (~ INT8_MAX) #define INT8_MAX 127 #define UINT8_MAX 255 #undef INT16_MIN #undef INT16_MAX #undef UINT16_MAX #define INT16_MIN (~ INT16_MAX) #define INT16_MAX 32767 #define UINT16_MAX 65535 #undef INT32_MIN #undef INT32_MAX #undef UINT32_MAX #define INT32_MIN (~ INT32_MAX) #define INT32_MAX 2147483647 #define UINT32_MAX 4294967295U #if defined GL_INT64_T && ! defined INT64_MAX /* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 evaluates the latter incorrectly in preprocessor expressions. */ # define INT64_MIN (- INTMAX_C (1) << 63) # define INT64_MAX INTMAX_C (9223372036854775807) #endif #if defined GL_UINT64_T && ! defined UINT64_MAX # define UINT64_MAX UINTMAX_C (18446744073709551615) #endif /* 7.18.2.2. Limits of minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types are the same as the corresponding N_t types. */ #undef INT_LEAST8_MIN #undef INT_LEAST8_MAX #undef UINT_LEAST8_MAX #define INT_LEAST8_MIN INT8_MIN #define INT_LEAST8_MAX INT8_MAX #define UINT_LEAST8_MAX UINT8_MAX #undef INT_LEAST16_MIN #undef INT_LEAST16_MAX #undef UINT_LEAST16_MAX #define INT_LEAST16_MIN INT16_MIN #define INT_LEAST16_MAX INT16_MAX #define UINT_LEAST16_MAX UINT16_MAX #undef INT_LEAST32_MIN #undef INT_LEAST32_MAX #undef UINT_LEAST32_MAX #define INT_LEAST32_MIN INT32_MIN #define INT_LEAST32_MAX INT32_MAX #define UINT_LEAST32_MAX UINT32_MAX #undef INT_LEAST64_MIN #undef INT_LEAST64_MAX #ifdef GL_INT64_T # define INT_LEAST64_MIN INT64_MIN # define INT_LEAST64_MAX INT64_MAX #endif #undef UINT_LEAST64_MAX #ifdef GL_UINT64_T # define UINT_LEAST64_MAX UINT64_MAX #endif /* 7.18.2.3. Limits of fastest minimum-width integer types */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types are taken from the same list of types. */ #undef INT_FAST8_MIN #undef INT_FAST8_MAX #undef UINT_FAST8_MAX #define INT_FAST8_MIN SCHAR_MIN #define INT_FAST8_MAX SCHAR_MAX #define UINT_FAST8_MAX UCHAR_MAX #undef INT_FAST16_MIN #undef INT_FAST16_MAX #undef UINT_FAST16_MAX #define INT_FAST16_MIN INT_FAST32_MIN #define INT_FAST16_MAX INT_FAST32_MAX #define UINT_FAST16_MAX UINT_FAST32_MAX #undef INT_FAST32_MIN #undef INT_FAST32_MAX #undef UINT_FAST32_MAX #ifdef __sun # define INT_FAST32_MIN INT_MIN # define INT_FAST32_MAX INT_MAX # define UINT_FAST32_MAX UINT_MAX #else # define INT_FAST32_MIN LONG_MIN # define INT_FAST32_MAX LONG_MAX # define UINT_FAST32_MAX ULONG_MAX #endif #undef INT_FAST64_MIN #undef INT_FAST64_MAX #ifdef GL_INT64_T # define INT_FAST64_MIN INT64_MIN # define INT_FAST64_MAX INT64_MAX #endif #undef UINT_FAST64_MAX #ifdef GL_UINT64_T # define UINT_FAST64_MAX UINT64_MAX #endif /* 7.18.2.4. Limits of integer types capable of holding object pointers */ #undef INTPTR_MIN #undef INTPTR_MAX #undef UINTPTR_MAX #define INTPTR_MIN LONG_MIN #define INTPTR_MAX LONG_MAX #define UINTPTR_MAX ULONG_MAX /* 7.18.2.5. Limits of greatest-width integer types */ #ifndef INTMAX_MAX # undef INTMAX_MIN # ifdef INT64_MAX # define INTMAX_MIN INT64_MIN # define INTMAX_MAX INT64_MAX # else # define INTMAX_MIN INT32_MIN # define INTMAX_MAX INT32_MAX # endif #endif #ifndef UINTMAX_MAX # ifdef UINT64_MAX # define UINTMAX_MAX UINT64_MAX # else # define UINTMAX_MAX UINT32_MAX # endif #endif /* 7.18.3. Limits of other integer types */ /* ptrdiff_t limits */ #undef PTRDIFF_MIN #undef PTRDIFF_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l) # define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) # else # define PTRDIFF_MIN _STDINT_MIN (1, 32, 0) # define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) # endif #else # define PTRDIFF_MIN \ _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) # define PTRDIFF_MAX \ _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@) #endif /* sig_atomic_t limits */ #undef SIG_ATOMIC_MIN #undef SIG_ATOMIC_MAX #define SIG_ATOMIC_MIN \ _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) #define SIG_ATOMIC_MAX \ _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \ 0@SIG_ATOMIC_T_SUFFIX@) /* size_t limit */ #undef SIZE_MAX #if @APPLE_UNIVERSAL_BUILD@ # ifdef _LP64 # define SIZE_MAX _STDINT_MAX (0, 64, 0ul) # else # define SIZE_MAX _STDINT_MAX (0, 32, 0ul) # endif #else # define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@) #endif /* wchar_t limits */ /* Get WCHAR_MIN, WCHAR_MAX. This include is not on the top, above, because on OSF/1 4.0 we have a sequence of nested includes -> -> -> , and the latter includes and assumes its types are already defined. */ #if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX) /* BSD/OS 4.0.1 has a bug: , and must be included before . */ # include # include # include # define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H # include # undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H #endif #undef WCHAR_MIN #undef WCHAR_MAX #define WCHAR_MIN \ _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) #define WCHAR_MAX \ _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@) /* wint_t limits */ #undef WINT_MIN #undef WINT_MAX #define WINT_MIN \ _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) #define WINT_MAX \ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@) /* 7.18.4. Macros for integer constants */ /* 7.18.4.1. Macros for minimum-width integer constants */ /* According to ISO C 99 Technical Corrigendum 1 */ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ #undef INT8_C #undef UINT8_C #define INT8_C(x) x #define UINT8_C(x) x #undef INT16_C #undef UINT16_C #define INT16_C(x) x #define UINT16_C(x) x #undef INT32_C #undef UINT32_C #define INT32_C(x) x #define UINT32_C(x) x ## U #undef INT64_C #undef UINT64_C #if LONG_MAX >> 31 >> 31 == 1 # define INT64_C(x) x##L #elif defined _MSC_VER # define INT64_C(x) x##i64 #elif @HAVE_LONG_LONG_INT@ # define INT64_C(x) x##LL #endif #if ULONG_MAX >> 31 >> 31 >> 1 == 1 # define UINT64_C(x) x##UL #elif defined _MSC_VER # define UINT64_C(x) x##ui64 #elif @HAVE_UNSIGNED_LONG_LONG_INT@ # define UINT64_C(x) x##ULL #endif /* 7.18.4.2. Macros for greatest-width integer constants */ #ifndef INTMAX_C # if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 # define INTMAX_C(x) x##LL # elif defined GL_INT64_T # define INTMAX_C(x) INT64_C(x) # else # define INTMAX_C(x) x##L # endif #endif #ifndef UINTMAX_C # if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1 # define UINTMAX_C(x) x##ULL # elif defined GL_UINT64_T # define UINTMAX_C(x) UINT64_C(x) # else # define UINTMAX_C(x) x##UL # endif #endif #endif /* _@GUARD_PREFIX@_STDINT_H */ #endif /* !(defined __ANDROID__ && ...) */ #endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ libtasn1-3.4/gl/gettime.c0000664000000000000000000000231512244720630012173 00000000000000/* gettime -- get the system clock Copyright (C) 2002, 2004-2007, 2009-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 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 . */ /* Written by Paul Eggert. */ #include #include "timespec.h" #include /* Get the system time into *TS. */ void gettime (struct timespec *ts) { #if HAVE_NANOTIME nanotime (ts); #else # if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME if (clock_gettime (CLOCK_REALTIME, ts) == 0) return; # endif { struct timeval tv; gettimeofday (&tv, NULL); ts->tv_sec = tv.tv_sec; ts->tv_nsec = tv.tv_usec * 1000; } #endif } libtasn1-3.4/gl/errno.in.h0000664000000000000000000001646312244720630012305 00000000000000/* A POSIX-like . Copyright (C) 2008-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 3, 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 . */ #ifndef _@GUARD_PREFIX@_ERRNO_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_ERRNO_H@ #ifndef _@GUARD_PREFIX@_ERRNO_H #define _@GUARD_PREFIX@_ERRNO_H /* On native Windows platforms, many macros are not defined. */ # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* These are the same values as defined by MSVC 10, for interoperability. */ # ifndef ENOMSG # define ENOMSG 122 # define GNULIB_defined_ENOMSG 1 # endif # ifndef EIDRM # define EIDRM 111 # define GNULIB_defined_EIDRM 1 # endif # ifndef ENOLINK # define ENOLINK 121 # define GNULIB_defined_ENOLINK 1 # endif # ifndef EPROTO # define EPROTO 134 # define GNULIB_defined_EPROTO 1 # endif # ifndef EBADMSG # define EBADMSG 104 # define GNULIB_defined_EBADMSG 1 # endif # ifndef EOVERFLOW # define EOVERFLOW 132 # define GNULIB_defined_EOVERFLOW 1 # endif # ifndef ENOTSUP # define ENOTSUP 129 # define GNULIB_defined_ENOTSUP 1 # endif # ifndef ENETRESET # define ENETRESET 117 # define GNULIB_defined_ENETRESET 1 # endif # ifndef ECONNABORTED # define ECONNABORTED 106 # define GNULIB_defined_ECONNABORTED 1 # endif # ifndef ECANCELED # define ECANCELED 105 # define GNULIB_defined_ECANCELED 1 # endif # ifndef EOWNERDEAD # define EOWNERDEAD 133 # define GNULIB_defined_EOWNERDEAD 1 # endif # ifndef ENOTRECOVERABLE # define ENOTRECOVERABLE 127 # define GNULIB_defined_ENOTRECOVERABLE 1 # endif # ifndef EINPROGRESS # define EINPROGRESS 112 # define EALREADY 103 # define ENOTSOCK 128 # define EDESTADDRREQ 109 # define EMSGSIZE 115 # define EPROTOTYPE 136 # define ENOPROTOOPT 123 # define EPROTONOSUPPORT 135 # define EOPNOTSUPP 130 # define EAFNOSUPPORT 102 # define EADDRINUSE 100 # define EADDRNOTAVAIL 101 # define ENETDOWN 116 # define ENETUNREACH 118 # define ECONNRESET 108 # define ENOBUFS 119 # define EISCONN 113 # define ENOTCONN 126 # define ETIMEDOUT 138 # define ECONNREFUSED 107 # define ELOOP 114 # define EHOSTUNREACH 110 # define EWOULDBLOCK 140 # define GNULIB_defined_ESOCK 1 # endif # ifndef ETXTBSY # define ETXTBSY 139 # define ENODATA 120 /* not required by POSIX */ # define ENOSR 124 /* not required by POSIX */ # define ENOSTR 125 /* not required by POSIX */ # define ETIME 137 /* not required by POSIX */ # define EOTHER 131 /* not required by POSIX */ # define GNULIB_defined_ESTREAMS 1 # endif /* These are intentionally the same values as the WSA* error numbers, defined in . */ # define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ # define EPFNOSUPPORT 10046 /* not required by POSIX */ # define ESHUTDOWN 10058 /* not required by POSIX */ # define ETOOMANYREFS 10059 /* not required by POSIX */ # define EHOSTDOWN 10064 /* not required by POSIX */ # define EPROCLIM 10067 /* not required by POSIX */ # define EUSERS 10068 /* not required by POSIX */ # define EDQUOT 10069 # define ESTALE 10070 # define EREMOTE 10071 /* not required by POSIX */ # define GNULIB_defined_EWINSOCK 1 # endif /* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ # if @EMULTIHOP_HIDDEN@ # define EMULTIHOP @EMULTIHOP_VALUE@ # define GNULIB_defined_EMULTIHOP 1 # endif # if @ENOLINK_HIDDEN@ # define ENOLINK @ENOLINK_VALUE@ # define GNULIB_defined_ENOLINK 1 # endif # if @EOVERFLOW_HIDDEN@ # define EOVERFLOW @EOVERFLOW_VALUE@ # define GNULIB_defined_EOVERFLOW 1 # endif /* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. Likewise, on NonStop Kernel, EDQUOT is not defined. Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. Note: When one of these systems defines some of these macros some day, binaries will have to be recompiled so that they recognizes the new errno values from the system. */ # ifndef ENOMSG # define ENOMSG 2000 # define GNULIB_defined_ENOMSG 1 # endif # ifndef EIDRM # define EIDRM 2001 # define GNULIB_defined_EIDRM 1 # endif # ifndef ENOLINK # define ENOLINK 2002 # define GNULIB_defined_ENOLINK 1 # endif # ifndef EPROTO # define EPROTO 2003 # define GNULIB_defined_EPROTO 1 # endif # ifndef EMULTIHOP # define EMULTIHOP 2004 # define GNULIB_defined_EMULTIHOP 1 # endif # ifndef EBADMSG # define EBADMSG 2005 # define GNULIB_defined_EBADMSG 1 # endif # ifndef EOVERFLOW # define EOVERFLOW 2006 # define GNULIB_defined_EOVERFLOW 1 # endif # ifndef ENOTSUP # define ENOTSUP 2007 # define GNULIB_defined_ENOTSUP 1 # endif # ifndef ENETRESET # define ENETRESET 2011 # define GNULIB_defined_ENETRESET 1 # endif # ifndef ECONNABORTED # define ECONNABORTED 2012 # define GNULIB_defined_ECONNABORTED 1 # endif # ifndef ESTALE # define ESTALE 2009 # define GNULIB_defined_ESTALE 1 # endif # ifndef EDQUOT # define EDQUOT 2010 # define GNULIB_defined_EDQUOT 1 # endif # ifndef ECANCELED # define ECANCELED 2008 # define GNULIB_defined_ECANCELED 1 # endif /* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not defined. */ # ifndef EOWNERDEAD # if defined __sun /* Use the same values as defined for Solaris >= 8, for interoperability. */ # define EOWNERDEAD 58 # define ENOTRECOVERABLE 59 # elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* We have a conflict here: pthreads-win32 defines these values differently than MSVC 10. It's hairy to decide which one to use. */ # if defined __MINGW32__ && !defined USE_WINDOWS_THREADS /* Use the same values as defined by pthreads-win32, for interoperability. */ # define EOWNERDEAD 43 # define ENOTRECOVERABLE 44 # else /* Use the same values as defined by MSVC 10, for interoperability. */ # define EOWNERDEAD 133 # define ENOTRECOVERABLE 127 # endif # else # define EOWNERDEAD 2013 # define ENOTRECOVERABLE 2014 # endif # define GNULIB_defined_EOWNERDEAD 1 # define GNULIB_defined_ENOTRECOVERABLE 1 # endif # ifndef EILSEQ # define EILSEQ 2015 # define GNULIB_defined_EILSEQ 1 # endif #endif /* _@GUARD_PREFIX@_ERRNO_H */ #endif /* _@GUARD_PREFIX@_ERRNO_H */ libtasn1-3.4/gl/unistd.c0000664000000000000000000000012412244720630012037 00000000000000#include #define _GL_UNISTD_INLINE _GL_EXTERN_INLINE #include "unistd.h" libtasn1-3.4/gl/progname.c0000664000000000000000000000615012244720630012346 00000000000000/* Program name management. Copyright (C) 2001-2003, 2005-2013 Free Software Foundation, Inc. Written by Bruno Haible , 2001. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include /* Specification. */ #undef ENABLE_RELOCATABLE /* avoid defining set_program_name as a macro */ #include "progname.h" #include /* get program_invocation_name declaration */ #include #include #include /* String containing name the program is called with. To be initialized by main(). */ const char *program_name = NULL; /* Set program_name, based on argv[0]. argv0 must be a string allocated with indefinite extent, and must not be modified after this call. */ void set_program_name (const char *argv0) { /* libtool creates a temporary executable whose name is sometimes prefixed with "lt-" (depends on the platform). It also makes argv[0] absolute. But the name of the temporary executable is a detail that should not be visible to the end user and to the test suite. Remove this "/.libs/" or "/.libs/lt-" prefix here. */ const char *slash; const char *base; /* Sanity check. POSIX requires the invoking process to pass a non-NULL argv[0]. */ if (argv0 == NULL) { /* It's a bug in the invoking program. Help diagnosing it. */ fputs ("A NULL argv[0] was passed through an exec system call.\n", stderr); abort (); } slash = strrchr (argv0, '/'); base = (slash != NULL ? slash + 1 : argv0); if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0) { argv0 = base; if (strncmp (base, "lt-", 3) == 0) { argv0 = base + 3; /* On glibc systems, remove the "lt-" prefix from the variable program_invocation_short_name. */ #if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME program_invocation_short_name = (char *) argv0; #endif } } /* But don't strip off a leading / in general, because when the user runs /some/hidden/place/bin/cp foo foo he should get the error message /some/hidden/place/bin/cp: `foo' and `foo' are the same file not cp: `foo' and `foo' are the same file */ program_name = argv0; /* On glibc systems, the error() function comes from libc and uses the variable program_invocation_name, not program_name. So set this variable as well. */ #if HAVE_DECL_PROGRAM_INVOCATION_NAME program_invocation_name = (char *) argv0; #endif } libtasn1-3.4/gl/gettext.h0000664000000000000000000002341612244720630012233 00000000000000/* Convenience header for conditional use of GNU . Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-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 3, 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 . */ #ifndef _LIBGETTEXT_H #define _LIBGETTEXT_H 1 /* NLS can be disabled through the configure --disable-nls option. */ #if ENABLE_NLS /* Get declarations of GNU message catalog functions. */ # include /* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by the gettext() and ngettext() macros. This is an alternative to calling textdomain(), and is useful for libraries. */ # ifdef DEFAULT_TEXT_DOMAIN # undef gettext # define gettext(Msgid) \ dgettext (DEFAULT_TEXT_DOMAIN, Msgid) # undef ngettext # define ngettext(Msgid1, Msgid2, N) \ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N) # endif #else /* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. We don't include as well because people using "gettext.h" will not include , and also including would fail on SunOS 4, whereas is OK. */ #if defined(__sun) # include #endif /* Many header files from the libstdc++ coming with g++ 3.3 or newer include , which chokes if dcgettext is defined as a macro. So include it now, to make later inclusions of a NOP. */ #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3) # include # if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H # include # endif #endif /* Disabled NLS. The casts to 'const char *' serve the purpose of producing warnings for invalid uses of the value returned from these functions. On pre-ANSI systems without 'const', the config.h file is supposed to contain "#define const". */ # undef gettext # define gettext(Msgid) ((const char *) (Msgid)) # undef dgettext # define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid)) # undef dcgettext # define dcgettext(Domainname, Msgid, Category) \ ((void) (Category), dgettext (Domainname, Msgid)) # undef ngettext # define ngettext(Msgid1, Msgid2, N) \ ((N) == 1 \ ? ((void) (Msgid2), (const char *) (Msgid1)) \ : ((void) (Msgid1), (const char *) (Msgid2))) # undef dngettext # define dngettext(Domainname, Msgid1, Msgid2, N) \ ((void) (Domainname), ngettext (Msgid1, Msgid2, N)) # undef dcngettext # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N)) # undef textdomain # define textdomain(Domainname) ((const char *) (Domainname)) # undef bindtextdomain # define bindtextdomain(Domainname, Dirname) \ ((void) (Domainname), (const char *) (Dirname)) # undef bind_textdomain_codeset # define bind_textdomain_codeset(Domainname, Codeset) \ ((void) (Domainname), (const char *) (Codeset)) #endif /* Prefer gnulib's setlocale override over libintl's setlocale override. */ #ifdef GNULIB_defined_setlocale # undef setlocale # define setlocale rpl_setlocale #endif /* A pseudo function call that serves as a marker for the automated extraction of messages, but does not call gettext(). The run-time translation is done at a different place in the code. The argument, String, should be a literal string. Concatenated strings and other string expressions won't work. The macro's expansion is not parenthesized, so that it is suitable as initializer for static 'char[]' or 'const char[]' variables. */ #define gettext_noop(String) String /* The separator between msgctxt and msgid in a .mo file. */ #define GETTEXT_CONTEXT_GLUE "\004" /* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be short and rarely need to change. The letter 'p' stands for 'particular' or 'special'. */ #ifdef DEFAULT_TEXT_DOMAIN # define pgettext(Msgctxt, Msgid) \ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #else # define pgettext(Msgctxt, Msgid) \ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #endif #define dpgettext(Domainname, Msgctxt, Msgid) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES) #define dcpgettext(Domainname, Msgctxt, Msgid, Category) \ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category) #ifdef DEFAULT_TEXT_DOMAIN # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #else # define npgettext(Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #endif #define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES) #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * pgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, int category) { const char *translation = dcgettext (domain, msg_ctxt_id, category); if (translation == msg_ctxt_id) return msgid; else return translation; } #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * npgettext_aux (const char *domain, const char *msg_ctxt_id, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { const char *translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); if (translation == msg_ctxt_id || translation == msgid_plural) return (n == 1 ? msgid : msgid_plural); else return translation; } /* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID can be arbitrary expressions. But for string literals these macros are less efficient than those above. */ #include #if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ /* || __STDC_VERSION__ >= 199901L */ ) # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 #else # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 #endif #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS #include #endif #define pgettext_expr(Msgctxt, Msgid) \ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES) #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcgettext (domain, msg_ctxt_id, category); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (translation != msg_ctxt_id) return translation; } return msgid; } #define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static const char * dcnpgettext_expr (const char *domain, const char *msgctxt, const char *msgid, const char *msgid_plural, unsigned long int n, int category) { size_t msgctxt_len = strlen (msgctxt) + 1; size_t msgid_len = strlen (msgid) + 1; const char *translation; #if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS char msg_ctxt_id[msgctxt_len + msgid_len]; #else char buf[1024]; char *msg_ctxt_id = (msgctxt_len + msgid_len <= sizeof (buf) ? buf : (char *) malloc (msgctxt_len + msgid_len)); if (msg_ctxt_id != NULL) #endif { memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); msg_ctxt_id[msgctxt_len - 1] = '\004'; memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS if (msg_ctxt_id != buf) free (msg_ctxt_id); #endif if (!(translation == msg_ctxt_id || translation == msgid_plural)) return translation; } return (n == 1 ? msgid : msgid_plural); } #endif /* _LIBGETTEXT_H */ libtasn1-3.4/gl/ftell.c0000664000000000000000000000215512244720630011645 00000000000000/* An ftell() function that works around platform bugs. Copyright (C) 2007-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 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include /* Specification. */ #include #include #include long ftell (FILE *fp) { /* Use the replacement ftello function with all its workarounds. */ off_t offset = ftello (fp); if (LONG_MIN <= offset && offset <= LONG_MAX) return /* (long) */ offset; else { errno = EOVERFLOW; return -1; } } libtasn1-3.4/gl/sys_time.in.h0000664000000000000000000001665712244720630013021 00000000000000/* Provide a more complete sys/time.h. Copyright (C) 2007-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 3, 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 . */ /* Written by Paul Eggert. */ #ifndef _@GUARD_PREFIX@_SYS_TIME_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* On Cygwin, includes itself recursively via . Simply delegate to the system's header in this case; it is a no-op. Without this extra ifdef, the C++ gettimeofday declaration below would be a forward declaration in gnulib's nested . */ #ifdef _CYGWIN_SYS_TIME_H # @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@ #else /* The include_next requires a split double-inclusion guard. */ #if @HAVE_SYS_TIME_H@ # @INCLUDE_NEXT@ @NEXT_SYS_TIME_H@ #endif #ifndef _@GUARD_PREFIX@_SYS_TIME_H #define _@GUARD_PREFIX@_SYS_TIME_H #if ! @HAVE_SYS_TIME_H@ # include #endif /* On native Windows with MSVC, get the 'struct timeval' type. Also, on native Windows with a 64-bit time_t, where we are overriding the 'struct timeval' type, get all declarations of system functions whose signature contains 'struct timeval'. */ #if (defined _MSC_VER || @REPLACE_STRUCT_TIMEVAL@) && @HAVE_WINSOCK2_H@ && !defined _GL_INCLUDING_WINSOCK2_H # define _GL_INCLUDING_WINSOCK2_H # include # undef _GL_INCLUDING_WINSOCK2_H #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ #ifdef __cplusplus extern "C" { #endif #if !@HAVE_STRUCT_TIMEVAL@ || @REPLACE_STRUCT_TIMEVAL@ # if @REPLACE_STRUCT_TIMEVAL@ # define timeval rpl_timeval # endif # if !GNULIB_defined_struct_timeval struct timeval { time_t tv_sec; long int tv_usec; }; # define GNULIB_defined_struct_timeval 1 # endif #endif #ifdef __cplusplus } #endif #if @GNULIB_GETTIMEOFDAY@ # if @REPLACE_GETTIMEOFDAY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gettimeofday # define gettimeofday rpl_gettimeofday # endif _GL_FUNCDECL_RPL (gettimeofday, int, (struct timeval *restrict, void *restrict) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gettimeofday, int, (struct timeval *restrict, void *restrict)); # else # if !@HAVE_GETTIMEOFDAY@ _GL_FUNCDECL_SYS (gettimeofday, int, (struct timeval *restrict, void *restrict) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on glibc systems, by default, the second argument is struct timezone *. */ _GL_CXXALIAS_SYS_CAST (gettimeofday, int, (struct timeval *restrict, void *restrict)); # endif _GL_CXXALIASWARN (gettimeofday); #elif defined GNULIB_POSIXCHECK # undef gettimeofday # if HAVE_RAW_DECL_GETTIMEOFDAY _GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - " "use gnulib module gettimeofday for portability"); # endif #endif /* Hide some function declarations from . */ #if defined _MSC_VER && @HAVE_WINSOCK2_H@ # if !defined _@GUARD_PREFIX@_UNISTD_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef close # define close close_used_without_including_unistd_h # else _GL_WARN_ON_USE (close, "close() used without including "); # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gethostname # define gethostname gethostname_used_without_including_unistd_h # else _GL_WARN_ON_USE (gethostname, "gethostname() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SOCKET_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef socket # define socket socket_used_without_including_sys_socket_h # undef connect # define connect connect_used_without_including_sys_socket_h # undef accept # define accept accept_used_without_including_sys_socket_h # undef bind # define bind bind_used_without_including_sys_socket_h # undef getpeername # define getpeername getpeername_used_without_including_sys_socket_h # undef getsockname # define getsockname getsockname_used_without_including_sys_socket_h # undef getsockopt # define getsockopt getsockopt_used_without_including_sys_socket_h # undef listen # define listen listen_used_without_including_sys_socket_h # undef recv # define recv recv_used_without_including_sys_socket_h # undef send # define send send_used_without_including_sys_socket_h # undef recvfrom # define recvfrom recvfrom_used_without_including_sys_socket_h # undef sendto # define sendto sendto_used_without_including_sys_socket_h # undef setsockopt # define setsockopt setsockopt_used_without_including_sys_socket_h # undef shutdown # define shutdown shutdown_used_without_including_sys_socket_h # else _GL_WARN_ON_USE (socket, "socket() used without including "); _GL_WARN_ON_USE (connect, "connect() used without including "); _GL_WARN_ON_USE (accept, "accept() used without including "); _GL_WARN_ON_USE (bind, "bind() used without including "); _GL_WARN_ON_USE (getpeername, "getpeername() used without including "); _GL_WARN_ON_USE (getsockname, "getsockname() used without including "); _GL_WARN_ON_USE (getsockopt, "getsockopt() used without including "); _GL_WARN_ON_USE (listen, "listen() used without including "); _GL_WARN_ON_USE (recv, "recv() used without including "); _GL_WARN_ON_USE (send, "send() used without including "); _GL_WARN_ON_USE (recvfrom, "recvfrom() used without including "); _GL_WARN_ON_USE (sendto, "sendto() used without including "); _GL_WARN_ON_USE (setsockopt, "setsockopt() used without including "); _GL_WARN_ON_USE (shutdown, "shutdown() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SELECT_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef select # define select select_used_without_including_sys_select_h # else _GL_WARN_ON_USE (select, "select() used without including "); # endif # endif #endif #endif /* _@GUARD_PREFIX@_SYS_TIME_H */ #endif /* _CYGWIN_SYS_TIME_H */ #endif /* _@GUARD_PREFIX@_SYS_TIME_H */ libtasn1-3.4/gl/msvc-nothrow.c0000664000000000000000000000243412244720630013205 00000000000000/* Wrappers that don't throw invalid parameter notifications with MSVC runtime libraries. Copyright (C) 2011-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 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #include /* Specification. */ #include "msvc-nothrow.h" /* Get declarations of the native Windows API functions. */ #define WIN32_LEAN_AND_MEAN #include #include "msvc-inval.h" #undef _get_osfhandle #if HAVE_MSVC_INVALID_PARAMETER_HANDLER intptr_t _gl_nothrow_get_osfhandle (int fd) { intptr_t result; TRY_MSVC_INVAL { result = _get_osfhandle (fd); } CATCH_MSVC_INVAL { result = (intptr_t) INVALID_HANDLE_VALUE; } DONE_MSVC_INVAL; return result; } #endif libtasn1-3.4/gl/stdarg.in.h0000664000000000000000000000216212244720630012433 00000000000000/* Substitute for and wrapper around . Copyright (C) 2008-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 3, 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 . */ #ifndef _@GUARD_PREFIX@_STDARG_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDARG_H@ #ifndef _@GUARD_PREFIX@_STDARG_H #define _@GUARD_PREFIX@_STDARG_H #ifndef va_copy # define va_copy(a,b) ((a) = (b)) #endif #endif /* _@GUARD_PREFIX@_STDARG_H */ #endif /* _@GUARD_PREFIX@_STDARG_H */ libtasn1-3.4/gl/stdio-impl.h0000664000000000000000000001022112244720630012616 00000000000000/* Implementation details of FILE streams. Copyright (C) 2007-2008, 2010-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 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 . */ /* Many stdio implementations have the same logic and therefore can share the same implementation of stdio extension API, except that some fields have different naming conventions, or their access requires some casts. */ /* BSD stdio derived implementations. */ #if defined __NetBSD__ /* NetBSD */ /* Get __NetBSD_Version__. */ # include #endif #include /* For detecting Plan9. */ #if defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin */ # if defined __DragonFly__ /* DragonFly */ /* See . */ # define fp_ ((struct { struct __FILE_public pub; \ struct { unsigned char *_base; int _size; } _bf; \ void *cookie; \ void *_close; \ void *_read; \ void *_seek; \ void *_write; \ struct { unsigned char *_base; int _size; } _ub; \ int _ur; \ unsigned char _ubuf[3]; \ unsigned char _nbuf[1]; \ struct { unsigned char *_base; int _size; } _lb; \ int _blksize; \ fpos_t _offset; \ /* More fields, not relevant here. */ \ } *) fp) /* See . */ # define _p pub._p # define _flags pub._flags # define _r pub._r # define _w pub._w # else # define fp_ fp # endif # if (defined __NetBSD__ && __NetBSD_Version__ >= 105270000) || defined __OpenBSD__ /* NetBSD >= 1.5ZA, OpenBSD */ /* See and */ struct __sfileext { struct __sbuf _ub; /* ungetc buffer */ /* More fields, not relevant here. */ }; # define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub # else /* FreeBSD, NetBSD <= 1.5Z, DragonFly, Mac OS X, Cygwin */ # define fp_ub fp_->_ub # endif # define HASUB(fp) (fp_ub._base != NULL) #endif /* SystemV derived implementations. */ #ifdef __TANDEM /* NonStop Kernel */ # ifndef _IOERR /* These values were determined by the program 'stdioext-flags' at . */ # define _IOERR 0x40 # define _IOREAD 0x80 # define _IOWRT 0x4 # define _IORW 0x100 # endif #endif #if defined _IOERR # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ # define fp_ ((struct { unsigned char *_ptr; \ unsigned char *_base; \ unsigned char *_end; \ long _cnt; \ int _file; \ unsigned int _flag; \ } *) fp) # else # define fp_ fp # endif # if defined _SCO_DS /* OpenServer */ # define _cnt __cnt # define _ptr __ptr # define _base __base # define _flag __flag # endif #endif libtasn1-3.4/gl/version-etc.c0000664000000000000000000002176512244720630013005 00000000000000/* Print --version and bug-reporting information in a consistent format. 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 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 . */ /* Written by Jim Meyering. */ #include /* Specification. */ #include "version-etc.h" #include #include #include #if USE_UNLOCKED_IO # include "unlocked-io.h" #endif #include "gettext.h" #define _(msgid) gettext (msgid) /* If you use AM_INIT_AUTOMAKE's no-define option, PACKAGE is not defined. Use PACKAGE_TARNAME instead. */ #if ! defined PACKAGE && defined PACKAGE_TARNAME # define PACKAGE PACKAGE_TARNAME #endif enum { COPYRIGHT_YEAR = 2013 }; /* The three functions below display the --version information the standard way. If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of the program. The formats are therefore: PACKAGE VERSION or COMMAND_NAME (PACKAGE) VERSION. The functions differ in the way they are passed author names. */ /* Display the --version information the standard way. Author names are given in the array AUTHORS. N_AUTHORS is the number of elements in the array. */ void version_etc_arn (FILE *stream, const char *command_name, const char *package, const char *version, const char * const * authors, size_t n_authors) { if (command_name) fprintf (stream, "%s (%s) %s\n", command_name, package, version); else fprintf (stream, "%s %s\n", package, version); #ifdef PACKAGE_PACKAGER # ifdef PACKAGE_PACKAGER_VERSION fprintf (stream, _("Packaged by %s (%s)\n"), PACKAGE_PACKAGER, PACKAGE_PACKAGER_VERSION); # else fprintf (stream, _("Packaged by %s\n"), PACKAGE_PACKAGER); # endif #endif /* TRANSLATORS: Translate "(C)" to the copyright symbol (C-in-a-circle), if this symbol is available in the user's locale. Otherwise, do not translate "(C)"; leave it as-is. */ fprintf (stream, version_etc_copyright, _("(C)"), COPYRIGHT_YEAR); fputs (_("\ \n\ License GPLv3+: GNU GPL version 3 or later .\n\ This is free software: you are free to change and redistribute it.\n\ There is NO WARRANTY, to the extent permitted by law.\n\ \n\ "), stream); switch (n_authors) { case 0: /* The caller must provide at least one author name. */ abort (); case 1: /* TRANSLATORS: %s denotes an author name. */ fprintf (stream, _("Written by %s.\n"), authors[0]); break; case 2: /* TRANSLATORS: Each %s denotes an author name. */ fprintf (stream, _("Written by %s and %s.\n"), authors[0], authors[1]); break; case 3: /* TRANSLATORS: Each %s denotes an author name. */ fprintf (stream, _("Written by %s, %s, and %s.\n"), authors[0], authors[1], authors[2]); break; case 4: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("Written by %s, %s, %s,\nand %s.\n"), authors[0], authors[1], authors[2], authors[3]); break; case 5: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("Written by %s, %s, %s,\n%s, and %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4]); break; case 6: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("Written by %s, %s, %s,\n%s, %s, and %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5]); break; case 7: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("Written by %s, %s, %s,\n%s, %s, %s, and %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5], authors[6]); break; case 8: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("\ Written by %s, %s, %s,\n%s, %s, %s, %s,\nand %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5], authors[6], authors[7]); break; case 9: /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("\ Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, and %s.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5], authors[6], authors[7], authors[8]); break; default: /* 10 or more authors. Use an abbreviation, since the human reader will probably not want to read the entire list anyway. */ /* TRANSLATORS: Each %s denotes an author name. You can use line breaks, estimating that each author name occupies ca. 16 screen columns and that a screen line has ca. 80 columns. */ fprintf (stream, _("\ Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, %s, and others.\n"), authors[0], authors[1], authors[2], authors[3], authors[4], authors[5], authors[6], authors[7], authors[8]); break; } } /* Display the --version information the standard way. See the initial comment to this module, for more information. Author names are given in the NULL-terminated array AUTHORS. */ void version_etc_ar (FILE *stream, const char *command_name, const char *package, const char *version, const char * const * authors) { size_t n_authors; for (n_authors = 0; authors[n_authors]; n_authors++) ; version_etc_arn (stream, command_name, package, version, authors, n_authors); } /* Display the --version information the standard way. See the initial comment to this module, for more information. Author names are given in the NULL-terminated va_list AUTHORS. */ void version_etc_va (FILE *stream, const char *command_name, const char *package, const char *version, va_list authors) { size_t n_authors; const char *authtab[10]; for (n_authors = 0; n_authors < 10 && (authtab[n_authors] = va_arg (authors, const char *)) != NULL; n_authors++) ; version_etc_arn (stream, command_name, package, version, authtab, n_authors); } /* Display the --version information the standard way. If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of the program. The formats are therefore: PACKAGE VERSION or COMMAND_NAME (PACKAGE) VERSION. The authors names are passed as separate arguments, with an additional NULL argument at the end. */ void version_etc (FILE *stream, const char *command_name, const char *package, const char *version, /* const char *author1, ...*/ ...) { va_list authors; va_start (authors, version); version_etc_va (stream, command_name, package, version, authors); va_end (authors); } void emit_bug_reporting_address (void) { /* TRANSLATORS: The placeholder indicates the bug-reporting address for this package. Please add _another line_ saying "Report translation bugs to <...>\n" with the address for translation bugs (typically your translation team's web or email address). */ printf (_("\nReport bugs to: %s\n"), PACKAGE_BUGREPORT); #ifdef PACKAGE_PACKAGER_BUG_REPORTS printf (_("Report %s bugs to: %s\n"), PACKAGE_PACKAGER, PACKAGE_PACKAGER_BUG_REPORTS); #endif #ifdef PACKAGE_URL printf (_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL); #else printf (_("%s home page: \n"), PACKAGE_NAME, PACKAGE); #endif fputs (_("General help using GNU software: \n"), stdout); } libtasn1-3.4/gl/ftello.c0000664000000000000000000000461012244720630012022 00000000000000/* An ftello() function that works around platform bugs. Copyright (C) 2007, 2009-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 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include /* Specification. */ #include /* Get lseek. */ #include #include "stdio-impl.h" off_t ftello (FILE *fp) #undef ftello #if !HAVE_FTELLO # undef ftell # define ftello ftell #endif #if _GL_WINDOWS_64_BIT_OFF_T # undef ftello # if HAVE__FTELLI64 /* msvc, mingw64 */ # define ftello _ftelli64 # else /* mingw */ # define ftello ftello64 # endif #endif { #if LSEEK_PIPE_BROKEN /* mingw gives bogus answers rather than failure on non-seekable files. */ if (lseek (fileno (fp), 0, SEEK_CUR) == -1) return -1; #endif #if FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE /* Solaris */ /* The Solaris stdio leaves the _IOREAD flag set after reading from a file reaches EOF and the program then starts writing to the file. ftello gets confused by this. */ if (fp_->_flag & _IOWRT) { off_t pos; /* Call ftello nevertheless, for the side effects that it does on fp. */ ftello (fp); /* Compute the file position ourselves. */ pos = lseek (fileno (fp), (off_t) 0, SEEK_CUR); if (pos >= 0) { if ((fp_->_flag & _IONBF) == 0 && fp_->_base != NULL) pos += fp_->_ptr - fp_->_base; } return pos; } #endif #if defined __SL64 && defined __SCLE /* Cygwin */ if ((fp->_flags & __SL64) == 0) { /* Cygwin 1.5.0 through 1.5.24 failed to open stdin in 64-bit mode; but has an ftello that requires 64-bit mode. */ FILE *tmp = fopen ("/dev/null", "r"); if (!tmp) return -1; fp->_flags |= __SL64; fp->_seek64 = tmp->_seek64; fclose (tmp); } #endif return ftello (fp); } libtasn1-3.4/gl/timespec.h0000664000000000000000000000622112244720630012353 00000000000000/* timespec -- System time interface Copyright (C) 2000, 2002, 2004-2005, 2007, 2009-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 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #if ! defined TIMESPEC_H # define TIMESPEC_H # include _GL_INLINE_HEADER_BEGIN #ifndef _GL_TIMESPEC_INLINE # define _GL_TIMESPEC_INLINE _GL_INLINE #endif /* Return negative, zero, positive if A < B, A == B, A > B, respectively. For each time stamp T, this code assumes that either: * T.tv_nsec is in the range 0..999999999; or * T.tv_sec corresponds to a valid leap second on a host that supports leap seconds, and T.tv_nsec is in the range 1000000000..1999999999; or * T.tv_sec is the minimum time_t value and T.tv_nsec is -1; or T.tv_sec is the maximum time_t value and T.tv_nsec is 2000000000. This allows for special struct timespec values that are less or greater than all possible valid time stamps. In all these cases, it is safe to subtract two tv_nsec values and convert the result to integer without worrying about overflow on any platform of interest to the GNU project, since all such platforms have 32-bit int or wider. Replacing "(int) (a.tv_nsec - b.tv_nsec)" with something like "a.tv_nsec < b.tv_nsec ? -1 : a.tv_nsec > b.tv_nsec" would cause this function to work in some cases where the above assumption is violated, but not in all cases (e.g., a.tv_sec==1, a.tv_nsec==-2, b.tv_sec==0, b.tv_nsec==999999999) and is arguably not worth the extra instructions. Using a subtraction has the advantage of detecting some invalid cases on platforms that detect integer overflow. The (int) cast avoids a gcc -Wconversion warning. */ _GL_TIMESPEC_INLINE int timespec_cmp (struct timespec a, struct timespec b) { return (a.tv_sec < b.tv_sec ? -1 : a.tv_sec > b.tv_sec ? 1 : (int) (a.tv_nsec - b.tv_nsec)); } /* Return -1, 0, 1, depending on the sign of A. A.tv_nsec must be nonnegative. */ _GL_TIMESPEC_INLINE int timespec_sign (struct timespec a) { return a.tv_sec < 0 ? -1 : a.tv_sec || a.tv_nsec; } struct timespec timespec_add (struct timespec, struct timespec) _GL_ATTRIBUTE_CONST; struct timespec timespec_sub (struct timespec, struct timespec) _GL_ATTRIBUTE_CONST; struct timespec dtotimespec (double) _GL_ATTRIBUTE_CONST; /* Return an approximation to A, of type 'double'. */ _GL_TIMESPEC_INLINE double timespectod (struct timespec a) { return a.tv_sec + a.tv_nsec / 1e9; } void gettime (struct timespec *); int settime (struct timespec const *); _GL_INLINE_HEADER_END #endif libtasn1-3.4/gl/stdlib.in.h0000664000000000000000000010045612244720630012435 00000000000000/* A GNU-like . Copyright (C) 1995, 2001-2004, 2006-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 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_system_stdlib_h || defined __need_malloc_and_calloc /* Special invocation conventions inside some gnulib header files, and inside some glibc header files, respectively. */ #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_STDLIB_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDLIB_H@ #ifndef _@GUARD_PREFIX@_STDLIB_H #define _@GUARD_PREFIX@_STDLIB_H /* NetBSD 5.0 mis-defines NULL. */ #include /* MirBSD 10 defines WEXITSTATUS in , not in . */ #if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS # include #endif /* Solaris declares getloadavg() in . */ #if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@ # include #endif /* Native Windows platforms declare mktemp() in . */ #if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif #if @GNULIB_RANDOM_R@ /* OSF/1 5.1 declares 'struct random_data' in , which is included from if _REENTRANT is defined. Include it whenever we need 'struct random_data'. */ # if @HAVE_RANDOM_H@ # include # endif # if !@HAVE_STRUCT_RANDOM_DATA@ || @REPLACE_RANDOM_R@ || !@HAVE_RANDOM_R@ # include # endif # if !@HAVE_STRUCT_RANDOM_DATA@ /* Define 'struct random_data'. But allow multiple gnulib generated replacements to coexist. */ # if !GNULIB_defined_struct_random_data struct random_data { int32_t *fptr; /* Front pointer. */ int32_t *rptr; /* Rear pointer. */ int32_t *state; /* Array of state values. */ int rand_type; /* Type of random number generator. */ int rand_deg; /* Degree of random number generator. */ int rand_sep; /* Distance between front and rear. */ int32_t *end_ptr; /* Pointer behind state table. */ }; # define GNULIB_defined_struct_random_data 1 # endif # endif #endif #if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) /* On Mac OS X 10.3, only declares mkstemp. */ /* On Mac OS X 10.5, only declares mkstemps. */ /* On Cygwin 1.7.1, only declares getsubopt. */ /* But avoid namespace pollution on glibc systems and native Windows. */ # include #endif /* The __attribute__ feature is available in gcc versions 2.5 and later. The attribute __pure__ was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The definition of _Noreturn is copied here. */ /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Some systems do not define EXIT_*, despite otherwise supporting C89. */ #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 #endif /* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere with proper operation of xargs. */ #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #elif EXIT_FAILURE != 1 # undef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #if @GNULIB__EXIT@ /* Terminate the current process with the given return code, without running the 'atexit' handlers. */ # if !@HAVE__EXIT@ _GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status)); # endif _GL_CXXALIAS_SYS (_Exit, void, (int status)); _GL_CXXALIASWARN (_Exit); #elif defined GNULIB_POSIXCHECK # undef _Exit # if HAVE_RAW_DECL__EXIT _GL_WARN_ON_USE (_Exit, "_Exit is unportable - " "use gnulib module _Exit for portability"); # endif #endif #if @GNULIB_ATOLL@ /* Parse a signed decimal integer. Returns the value of the integer. Errors are not detected. */ # if !@HAVE_ATOLL@ _GL_FUNCDECL_SYS (atoll, long long, (const char *string) _GL_ATTRIBUTE_PURE _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (atoll, long long, (const char *string)); _GL_CXXALIASWARN (atoll); #elif defined GNULIB_POSIXCHECK # undef atoll # if HAVE_RAW_DECL_ATOLL _GL_WARN_ON_USE (atoll, "atoll is unportable - " "use gnulib module atoll for portability"); # endif #endif #if @GNULIB_CALLOC_POSIX@ # if @REPLACE_CALLOC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef calloc # define calloc rpl_calloc # endif _GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size)); _GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size)); # else _GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size)); # endif _GL_CXXALIASWARN (calloc); #elif defined GNULIB_POSIXCHECK # undef calloc /* Assume calloc is always declared. */ _GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - " "use gnulib module calloc-posix for portability"); #endif #if @GNULIB_CANONICALIZE_FILE_NAME@ # if @REPLACE_CANONICALIZE_FILE_NAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define canonicalize_file_name rpl_canonicalize_file_name # endif _GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name)); # else # if !@HAVE_CANONICALIZE_FILE_NAME@ _GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name)); # endif _GL_CXXALIASWARN (canonicalize_file_name); #elif defined GNULIB_POSIXCHECK # undef canonicalize_file_name # if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME _GL_WARN_ON_USE (canonicalize_file_name, "canonicalize_file_name is unportable - " "use gnulib module canonicalize-lgpl for portability"); # endif #endif #if @GNULIB_GETLOADAVG@ /* Store max(NELEM,3) load average numbers in LOADAVG[]. The three numbers are the load average of the last 1 minute, the last 5 minutes, and the last 15 minutes, respectively. LOADAVG is an array of NELEM numbers. */ # if !@HAVE_DECL_GETLOADAVG@ _GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem)); _GL_CXXALIASWARN (getloadavg); #elif defined GNULIB_POSIXCHECK # undef getloadavg # if HAVE_RAW_DECL_GETLOADAVG _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - " "use gnulib module getloadavg for portability"); # endif #endif #if @GNULIB_GETSUBOPT@ /* Assuming *OPTIONP is a comma separated list of elements of the form "token" or "token=value", getsubopt parses the first of these elements. If the first element refers to a "token" that is member of the given NULL-terminated array of tokens: - It replaces the comma with a NUL byte, updates *OPTIONP to point past the first option and the comma, sets *VALUEP to the value of the element (or NULL if it doesn't contain an "=" sign), - It returns the index of the "token" in the given array of tokens. Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. For more details see the POSIX:2001 specification. http://www.opengroup.org/susv3xsh/getsubopt.html */ # if !@HAVE_GETSUBOPT@ _GL_FUNCDECL_SYS (getsubopt, int, (char **optionp, char *const *tokens, char **valuep) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (getsubopt, int, (char **optionp, char *const *tokens, char **valuep)); _GL_CXXALIASWARN (getsubopt); #elif defined GNULIB_POSIXCHECK # undef getsubopt # if HAVE_RAW_DECL_GETSUBOPT _GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - " "use gnulib module getsubopt for portability"); # endif #endif #if @GNULIB_GRANTPT@ /* Change the ownership and access permission of the slave side of the pseudo-terminal whose master side is specified by FD. */ # if !@HAVE_GRANTPT@ _GL_FUNCDECL_SYS (grantpt, int, (int fd)); # endif _GL_CXXALIAS_SYS (grantpt, int, (int fd)); _GL_CXXALIASWARN (grantpt); #elif defined GNULIB_POSIXCHECK # undef grantpt # if HAVE_RAW_DECL_GRANTPT _GL_WARN_ON_USE (grantpt, "grantpt is not portable - " "use gnulib module grantpt for portability"); # endif #endif /* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not rely on GNU or POSIX semantics for malloc and realloc (for example, by never specifying a zero size), so it does not need malloc or realloc to be redefined. */ #if @GNULIB_MALLOC_POSIX@ # if @REPLACE_MALLOC@ # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ || _GL_USE_STDLIB_ALLOC) # undef malloc # define malloc rpl_malloc # endif _GL_FUNCDECL_RPL (malloc, void *, (size_t size)); _GL_CXXALIAS_RPL (malloc, void *, (size_t size)); # else _GL_CXXALIAS_SYS (malloc, void *, (size_t size)); # endif _GL_CXXALIASWARN (malloc); #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC # undef malloc /* Assume malloc is always declared. */ _GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - " "use gnulib module malloc-posix for portability"); #endif /* Convert a multibyte character to a wide character. */ #if @GNULIB_MBTOWC@ # if @REPLACE_MBTOWC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef mbtowc # define mbtowc rpl_mbtowc # endif _GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); _GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); # else _GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); # endif _GL_CXXALIASWARN (mbtowc); #endif #if @GNULIB_MKDTEMP@ /* Create a unique temporary directory from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the directory name unique. Returns TEMPLATE, or a null pointer if it cannot get a unique name. The directory is created mode 700. */ # if !@HAVE_MKDTEMP@ _GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/)); _GL_CXXALIASWARN (mkdtemp); #elif defined GNULIB_POSIXCHECK # undef mkdtemp # if HAVE_RAW_DECL_MKDTEMP _GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - " "use gnulib module mkdtemp for portability"); # endif #endif #if @GNULIB_MKOSTEMP@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). The file is then created, with the specified flags, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKOSTEMP@ _GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)); _GL_CXXALIASWARN (mkostemp); #elif defined GNULIB_POSIXCHECK # undef mkostemp # if HAVE_RAW_DECL_MKOSTEMP _GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - " "use gnulib module mkostemp for portability"); # endif #endif #if @GNULIB_MKOSTEMPS@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE before a suffix of length SUFFIXLEN must be "XXXXXX"; they are replaced with a string that makes the file name unique. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). The file is then created, with the specified flags, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKOSTEMPS@ _GL_FUNCDECL_SYS (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkostemps, int, (char * /*template*/, int /*suffixlen*/, int /*flags*/)); _GL_CXXALIASWARN (mkostemps); #elif defined GNULIB_POSIXCHECK # undef mkostemps # if HAVE_RAW_DECL_MKOSTEMPS _GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - " "use gnulib module mkostemps for portability"); # endif #endif #if @GNULIB_MKSTEMP@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. The file is then created, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if @REPLACE_MKSTEMP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mkstemp rpl_mkstemp # endif _GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/)); # else # if ! @HAVE_MKSTEMP@ _GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/)); # endif _GL_CXXALIASWARN (mkstemp); #elif defined GNULIB_POSIXCHECK # undef mkstemp # if HAVE_RAW_DECL_MKSTEMP _GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - " "use gnulib module mkstemp for portability"); # endif #endif #if @GNULIB_MKSTEMPS@ /* Create a unique temporary file from TEMPLATE. The last six characters of TEMPLATE prior to a suffix of length SUFFIXLEN must be "XXXXXX"; they are replaced with a string that makes the file name unique. The file is then created, ensuring it didn't exist before. The file is created read-write (mask at least 0600 & ~umask), but it may be world-readable and world-writable (mask 0666 & ~umask), depending on the implementation. Returns the open file descriptor if successful, otherwise -1 and errno set. */ # if !@HAVE_MKSTEMPS@ _GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)); _GL_CXXALIASWARN (mkstemps); #elif defined GNULIB_POSIXCHECK # undef mkstemps # if HAVE_RAW_DECL_MKSTEMPS _GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - " "use gnulib module mkstemps for portability"); # endif #endif #if @GNULIB_POSIX_OPENPT@ /* Return an FD open to the master side of a pseudo-terminal. Flags should include O_RDWR, and may also include O_NOCTTY. */ # if !@HAVE_POSIX_OPENPT@ _GL_FUNCDECL_SYS (posix_openpt, int, (int flags)); # endif _GL_CXXALIAS_SYS (posix_openpt, int, (int flags)); _GL_CXXALIASWARN (posix_openpt); #elif defined GNULIB_POSIXCHECK # undef posix_openpt # if HAVE_RAW_DECL_POSIX_OPENPT _GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " "use gnulib module posix_openpt for portability"); # endif #endif #if @GNULIB_PTSNAME@ /* Return the pathname of the pseudo-terminal slave associated with the master FD is open on, or NULL on errors. */ # if @REPLACE_PTSNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ptsname # define ptsname rpl_ptsname # endif _GL_FUNCDECL_RPL (ptsname, char *, (int fd)); _GL_CXXALIAS_RPL (ptsname, char *, (int fd)); # else # if !@HAVE_PTSNAME@ _GL_FUNCDECL_SYS (ptsname, char *, (int fd)); # endif _GL_CXXALIAS_SYS (ptsname, char *, (int fd)); # endif _GL_CXXALIASWARN (ptsname); #elif defined GNULIB_POSIXCHECK # undef ptsname # if HAVE_RAW_DECL_PTSNAME _GL_WARN_ON_USE (ptsname, "ptsname is not portable - " "use gnulib module ptsname for portability"); # endif #endif #if @GNULIB_PTSNAME_R@ /* Set the pathname of the pseudo-terminal slave associated with the master FD is open on and return 0, or set errno and return non-zero on errors. */ # if @REPLACE_PTSNAME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ptsname_r # define ptsname_r rpl_ptsname_r # endif _GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); _GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); # else # if !@HAVE_PTSNAME_R@ _GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); # endif _GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); # endif _GL_CXXALIASWARN (ptsname_r); #elif defined GNULIB_POSIXCHECK # undef ptsname_r # if HAVE_RAW_DECL_PTSNAME_R _GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - " "use gnulib module ptsname_r for portability"); # endif #endif #if @GNULIB_PUTENV@ # if @REPLACE_PUTENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putenv # define putenv rpl_putenv # endif _GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (putenv, int, (char *string)); # else _GL_CXXALIAS_SYS (putenv, int, (char *string)); # endif _GL_CXXALIASWARN (putenv); #endif #if @GNULIB_RANDOM_R@ # if !@HAVE_RANDOM_R@ # ifndef RAND_MAX # define RAND_MAX 2147483647 # endif # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (random, long, (void)); # endif _GL_CXXALIAS_SYS (random, long, (void)); _GL_CXXALIASWARN (random); #elif defined GNULIB_POSIXCHECK # undef random # if HAVE_RAW_DECL_RANDOM _GL_WARN_ON_USE (random, "random is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (srandom, void, (unsigned int seed)); # endif _GL_CXXALIAS_SYS (srandom, void, (unsigned int seed)); _GL_CXXALIASWARN (srandom); #elif defined GNULIB_POSIXCHECK # undef srandom # if HAVE_RAW_DECL_SRANDOM _GL_WARN_ON_USE (srandom, "srandom is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (initstate, char *, (unsigned int seed, char *buf, size_t buf_size) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (initstate, char *, (unsigned int seed, char *buf, size_t buf_size)); _GL_CXXALIASWARN (initstate); #elif defined GNULIB_POSIXCHECK # undef initstate # if HAVE_RAW_DECL_INITSTATE_R _GL_WARN_ON_USE (initstate, "initstate is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM@ # if !@HAVE_RANDOM@ _GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (setstate, char *, (char *arg_state)); _GL_CXXALIASWARN (setstate); #elif defined GNULIB_POSIXCHECK # undef setstate # if HAVE_RAW_DECL_SETSTATE_R _GL_WARN_ON_USE (setstate, "setstate is unportable - " "use gnulib module random for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef random_r # define random_r rpl_random_r # endif _GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result)); # endif _GL_CXXALIASWARN (random_r); #elif defined GNULIB_POSIXCHECK # undef random_r # if HAVE_RAW_DECL_RANDOM_R _GL_WARN_ON_USE (random_r, "random_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef srandom_r # define srandom_r rpl_srandom_r # endif _GL_FUNCDECL_RPL (srandom_r, int, (unsigned int seed, struct random_data *rand_state) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (srandom_r, int, (unsigned int seed, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (srandom_r, int, (unsigned int seed, struct random_data *rand_state) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (srandom_r, int, (unsigned int seed, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (srandom_r); #elif defined GNULIB_POSIXCHECK # undef srandom_r # if HAVE_RAW_DECL_SRANDOM_R _GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef initstate_r # define initstate_r rpl_initstate_r # endif _GL_FUNCDECL_RPL (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (initstate_r, int, (unsigned int seed, char *buf, size_t buf_size, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (initstate_r); #elif defined GNULIB_POSIXCHECK # undef initstate_r # if HAVE_RAW_DECL_INITSTATE_R _GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_RANDOM_R@ # if @REPLACE_RANDOM_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setstate_r # define setstate_r rpl_setstate_r # endif _GL_FUNCDECL_RPL (setstate_r, int, (char *arg_state, struct random_data *rand_state) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (setstate_r, int, (char *arg_state, struct random_data *rand_state)); # else # if !@HAVE_RANDOM_R@ _GL_FUNCDECL_SYS (setstate_r, int, (char *arg_state, struct random_data *rand_state) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (setstate_r, int, (char *arg_state, struct random_data *rand_state)); # endif _GL_CXXALIASWARN (setstate_r); #elif defined GNULIB_POSIXCHECK # undef setstate_r # if HAVE_RAW_DECL_SETSTATE_R _GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - " "use gnulib module random_r for portability"); # endif #endif #if @GNULIB_REALLOC_POSIX@ # if @REPLACE_REALLOC@ # if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ || _GL_USE_STDLIB_ALLOC) # undef realloc # define realloc rpl_realloc # endif _GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size)); _GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size)); # else _GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size)); # endif _GL_CXXALIASWARN (realloc); #elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC # undef realloc /* Assume realloc is always declared. */ _GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - " "use gnulib module realloc-posix for portability"); #endif #if @GNULIB_REALPATH@ # if @REPLACE_REALPATH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define realpath rpl_realpath # endif _GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved)); # else # if !@HAVE_REALPATH@ _GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved)); # endif _GL_CXXALIASWARN (realpath); #elif defined GNULIB_POSIXCHECK # undef realpath # if HAVE_RAW_DECL_REALPATH _GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module " "canonicalize or canonicalize-lgpl for portability"); # endif #endif #if @GNULIB_RPMATCH@ /* Test a user response to a question. Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */ # if !@HAVE_RPMATCH@ _GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (rpmatch, int, (const char *response)); _GL_CXXALIASWARN (rpmatch); #elif defined GNULIB_POSIXCHECK # undef rpmatch # if HAVE_RAW_DECL_RPMATCH _GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - " "use gnulib module rpmatch for portability"); # endif #endif #if @GNULIB_SECURE_GETENV@ /* Look up NAME in the environment, returning 0 in insecure situations. */ # if !@HAVE_SECURE_GETENV@ _GL_FUNCDECL_SYS (secure_getenv, char *, (char const *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name)); _GL_CXXALIASWARN (secure_getenv); #elif defined GNULIB_POSIXCHECK # undef secure_getenv # if HAVE_RAW_DECL_SECURE_GETENV _GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - " "use gnulib module secure_getenv for portability"); # endif #endif #if @GNULIB_SETENV@ /* Set NAME to VALUE in the environment. If REPLACE is nonzero, overwrite an existing value. */ # if @REPLACE_SETENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef setenv # define setenv rpl_setenv # endif _GL_FUNCDECL_RPL (setenv, int, (const char *name, const char *value, int replace) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (setenv, int, (const char *name, const char *value, int replace)); # else # if !@HAVE_DECL_SETENV@ _GL_FUNCDECL_SYS (setenv, int, (const char *name, const char *value, int replace) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (setenv, int, (const char *name, const char *value, int replace)); # endif # if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@) _GL_CXXALIASWARN (setenv); # endif #elif defined GNULIB_POSIXCHECK # undef setenv # if HAVE_RAW_DECL_SETENV _GL_WARN_ON_USE (setenv, "setenv is unportable - " "use gnulib module setenv for portability"); # endif #endif #if @GNULIB_STRTOD@ /* Parse a double from STRING, updating ENDP if appropriate. */ # if @REPLACE_STRTOD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define strtod rpl_strtod # endif _GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp)); # else # if !@HAVE_STRTOD@ _GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp)); # endif _GL_CXXALIASWARN (strtod); #elif defined GNULIB_POSIXCHECK # undef strtod # if HAVE_RAW_DECL_STRTOD _GL_WARN_ON_USE (strtod, "strtod is unportable - " "use gnulib module strtod for portability"); # endif #endif #if @GNULIB_STRTOLL@ /* Parse a signed integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set to ERANGE. */ # if !@HAVE_STRTOLL@ _GL_FUNCDECL_SYS (strtoll, long long, (const char *string, char **endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoll, long long, (const char *string, char **endptr, int base)); _GL_CXXALIASWARN (strtoll); #elif defined GNULIB_POSIXCHECK # undef strtoll # if HAVE_RAW_DECL_STRTOLL _GL_WARN_ON_USE (strtoll, "strtoll is unportable - " "use gnulib module strtoll for portability"); # endif #endif #if @GNULIB_STRTOULL@ /* Parse an unsigned integer whose textual representation starts at STRING. The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, it may be decimal or octal (with prefix "0") or hexadecimal (with prefix "0x"). If ENDPTR is not NULL, the address of the first byte after the integer is stored in *ENDPTR. Upon overflow, the return value is ULLONG_MAX, and errno is set to ERANGE. */ # if !@HAVE_STRTOULL@ _GL_FUNCDECL_SYS (strtoull, unsigned long long, (const char *string, char **endptr, int base) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (strtoull, unsigned long long, (const char *string, char **endptr, int base)); _GL_CXXALIASWARN (strtoull); #elif defined GNULIB_POSIXCHECK # undef strtoull # if HAVE_RAW_DECL_STRTOULL _GL_WARN_ON_USE (strtoull, "strtoull is unportable - " "use gnulib module strtoull for portability"); # endif #endif #if @GNULIB_UNLOCKPT@ /* Unlock the slave side of the pseudo-terminal whose master side is specified by FD, so that it can be opened. */ # if !@HAVE_UNLOCKPT@ _GL_FUNCDECL_SYS (unlockpt, int, (int fd)); # endif _GL_CXXALIAS_SYS (unlockpt, int, (int fd)); _GL_CXXALIASWARN (unlockpt); #elif defined GNULIB_POSIXCHECK # undef unlockpt # if HAVE_RAW_DECL_UNLOCKPT _GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - " "use gnulib module unlockpt for portability"); # endif #endif #if @GNULIB_UNSETENV@ /* Remove the variable NAME from the environment. */ # if @REPLACE_UNSETENV@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unsetenv # define unsetenv rpl_unsetenv # endif _GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (unsetenv, int, (const char *name)); # else # if !@HAVE_DECL_UNSETENV@ _GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (unsetenv, int, (const char *name)); # endif # if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@) _GL_CXXALIASWARN (unsetenv); # endif #elif defined GNULIB_POSIXCHECK # undef unsetenv # if HAVE_RAW_DECL_UNSETENV _GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - " "use gnulib module unsetenv for portability"); # endif #endif /* Convert a wide character to a multibyte character. */ #if @GNULIB_WCTOMB@ # if @REPLACE_WCTOMB@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef wctomb # define wctomb rpl_wctomb # endif _GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc)); _GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc)); # else _GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc)); # endif _GL_CXXALIASWARN (wctomb); #endif #endif /* _@GUARD_PREFIX@_STDLIB_H */ #endif /* _@GUARD_PREFIX@_STDLIB_H */ #endif libtasn1-3.4/gl/msvc-nothrow.h0000664000000000000000000000301012244720630013201 00000000000000/* Wrappers that don't throw invalid parameter notifications with MSVC runtime libraries. Copyright (C) 2011-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 3, 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 . */ #ifndef _MSVC_NOTHROW_H #define _MSVC_NOTHROW_H /* With MSVC runtime libraries with the "invalid parameter handler" concept, functions like fprintf(), dup2(), or close() crash when the caller passes an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) instead. This file defines wrappers that turn such an invalid parameter notification into an error code. */ #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Get original declaration of _get_osfhandle. */ # include # if HAVE_MSVC_INVALID_PARAMETER_HANDLER /* Override _get_osfhandle. */ extern intptr_t _gl_nothrow_get_osfhandle (int fd); # define _get_osfhandle _gl_nothrow_get_osfhandle # endif #endif #endif /* _MSVC_NOTHROW_H */ libtasn1-3.4/gl/read-file.c0000664000000000000000000001164312244720630012371 00000000000000/* read-file.c -- read file contents into a string Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc. Written by Simon Josefsson and Bruno Haible. 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, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #include #include "read-file.h" /* Get fstat. */ #include /* Get ftello. */ #include /* Get SIZE_MAX. */ #include /* Get malloc, realloc, free. */ #include /* Get errno. */ #include /* Read a STREAM and return a newly allocated string with the content, and set *LENGTH to the length of the string. The string is zero-terminated, but the terminating zero byte is not counted in *LENGTH. On errors, *LENGTH is undefined, errno preserves the values set by system functions (if any), and NULL is returned. */ char * fread_file (FILE *stream, size_t *length) { char *buf = NULL; size_t alloc = BUFSIZ; /* For a regular file, allocate a buffer that has exactly the right size. This avoids the need to do dynamic reallocations later. */ { struct stat st; if (fstat (fileno (stream), &st) >= 0 && S_ISREG (st.st_mode)) { off_t pos = ftello (stream); if (pos >= 0 && pos < st.st_size) { off_t alloc_off = st.st_size - pos; /* '1' below, accounts for the trailing NUL. */ if (SIZE_MAX - 1 < alloc_off) { errno = ENOMEM; return NULL; } alloc = alloc_off + 1; } } } if (!(buf = malloc (alloc))) return NULL; /* errno is ENOMEM. */ { size_t size = 0; /* number of bytes read so far */ int save_errno; for (;;) { /* This reads 1 more than the size of a regular file so that we get eof immediately. */ size_t requested = alloc - size; size_t count = fread (buf + size, 1, requested, stream); size += count; if (count != requested) { save_errno = errno; if (ferror (stream)) break; /* Shrink the allocated memory if possible. */ if (size < alloc - 1) { char *smaller_buf = realloc (buf, size + 1); if (smaller_buf != NULL) buf = smaller_buf; } buf[size] = '\0'; *length = size; return buf; } { char *new_buf; if (alloc == SIZE_MAX) { save_errno = ENOMEM; break; } if (alloc < SIZE_MAX - alloc / 2) alloc = alloc + alloc / 2; else alloc = SIZE_MAX; if (!(new_buf = realloc (buf, alloc))) { save_errno = errno; break; } buf = new_buf; } } free (buf); errno = save_errno; return NULL; } } static char * internal_read_file (const char *filename, size_t *length, const char *mode) { FILE *stream = fopen (filename, mode); char *out; int save_errno; if (!stream) return NULL; out = fread_file (stream, length); save_errno = errno; if (fclose (stream) != 0) { if (out) { save_errno = errno; free (out); } errno = save_errno; return NULL; } return out; } /* Open and read the contents of FILENAME, and return a newly allocated string with the content, and set *LENGTH to the length of the string. The string is zero-terminated, but the terminating zero byte is not counted in *LENGTH. On errors, *LENGTH is undefined, errno preserves the values set by system functions (if any), and NULL is returned. */ char * read_file (const char *filename, size_t *length) { return internal_read_file (filename, length, "r"); } /* Open (on non-POSIX systems, in binary mode) and read the contents of FILENAME, and return a newly allocated string with the content, and set LENGTH to the length of the string. The string is zero-terminated, but the terminating zero byte is not counted in the LENGTH variable. On errors, *LENGTH is undefined, errno preserves the values set by system functions (if any), and NULL is returned. */ char * read_binary_file (const char *filename, size_t *length) { return internal_read_file (filename, length, "rb"); } libtasn1-3.4/gl/read-file.h0000664000000000000000000000213512244720630012372 00000000000000/* read-file.h -- read file contents into a string Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc. Written by Simon Josefsson. 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, 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 . */ #ifndef READ_FILE_H #define READ_FILE_H /* Get size_t. */ #include /* Get FILE. */ #include extern char *fread_file (FILE * stream, size_t * length); extern char *read_file (const char *filename, size_t * length); extern char *read_binary_file (const char *filename, size_t * length); #endif /* READ_FILE_H */ libtasn1-3.4/gl/msvc-inval.h0000664000000000000000000002113512244720630012622 00000000000000/* Invalid parameter handler for MSVC runtime libraries. Copyright (C) 2011-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 3, 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 . */ #ifndef _MSVC_INVAL_H #define _MSVC_INVAL_H /* With MSVC runtime libraries with the "invalid parameter handler" concept, functions like fprintf(), dup2(), or close() crash when the caller passes an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF) instead. This file defines macros that turn such an invalid parameter notification into a non-local exit. An error code can then be produced at the target of this exit. You can thus write code like TRY_MSVC_INVAL { } CATCH_MSVC_INVAL { } DONE_MSVC_INVAL; This entire block expands to a single statement. The handling of invalid parameters can be done in three ways: * The default way, which is reasonable for programs (not libraries): AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [DEFAULT_HANDLING]) * The way for libraries that make "hairy" calls (like close(-1), or fclose(fp) where fileno(fp) is closed, or simply getdtablesize()): AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [HAIRY_LIBRARY_HANDLING]) * The way for libraries that make no "hairy" calls: AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [SANE_LIBRARY_HANDLING]) */ #define DEFAULT_HANDLING 0 #define HAIRY_LIBRARY_HANDLING 1 #define SANE_LIBRARY_HANDLING 2 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER \ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING) /* A native Windows platform with the "invalid parameter handler" concept, and either DEFAULT_HANDLING or HAIRY_LIBRARY_HANDLING. */ # if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING /* Default handling. */ # ifdef __cplusplus extern "C" { # endif /* Ensure that the invalid parameter handler in installed that just returns. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ gl_msvc_inval_ensure_handler (); \ if (1) # define CATCH_MSVC_INVAL \ else # define DONE_MSVC_INVAL \ } \ while (0) # else /* Handling for hairy libraries. */ # include /* Gnulib can define its own status codes, as described in the page "Raising Software Exceptions" on microsoft.com . Our status codes are composed of - 0xE0000000, mandatory for all user-defined status codes, - 0x474E550, a API identifier ("GNU"), - 0, 1, 2, ..., used to distinguish different status codes from the same API. */ # define STATUS_GNULIB_INVALID_PARAMETER (0xE0000000 + 0x474E550 + 0) # if defined _MSC_VER /* A compiler that supports __try/__except, as described in the page "try-except statement" on microsoft.com . With __try/__except, we can use the multithread-safe exception handling. */ # ifdef __cplusplus extern "C" { # endif /* Ensure that the invalid parameter handler in installed that raises a software exception with code STATUS_GNULIB_INVALID_PARAMETER. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ gl_msvc_inval_ensure_handler (); \ __try # define CATCH_MSVC_INVAL \ __except (GetExceptionCode () == STATUS_GNULIB_INVALID_PARAMETER \ ? EXCEPTION_EXECUTE_HANDLER \ : EXCEPTION_CONTINUE_SEARCH) # define DONE_MSVC_INVAL \ } \ while (0) # else /* Any compiler. We can only use setjmp/longjmp. */ # include # ifdef __cplusplus extern "C" { # endif struct gl_msvc_inval_per_thread { /* The restart that will resume execution at the code between CATCH_MSVC_INVAL and DONE_MSVC_INVAL. It is enabled only between TRY_MSVC_INVAL and CATCH_MSVC_INVAL. */ jmp_buf restart; /* Tells whether the contents of restart is valid. */ int restart_valid; }; /* Ensure that the invalid parameter handler in installed that passes control to the gl_msvc_inval_restart if it is valid, or raises a software exception with code STATUS_GNULIB_INVALID_PARAMETER otherwise. Because we assume no other part of the program installs a different invalid parameter handler, this solution is multithread-safe. */ extern void gl_msvc_inval_ensure_handler (void); /* Return a pointer to the per-thread data for the current thread. */ extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (void); # ifdef __cplusplus } # endif # define TRY_MSVC_INVAL \ do \ { \ struct gl_msvc_inval_per_thread *msvc_inval_current; \ gl_msvc_inval_ensure_handler (); \ msvc_inval_current = gl_msvc_inval_current (); \ /* First, initialize gl_msvc_inval_restart. */ \ if (setjmp (msvc_inval_current->restart) == 0) \ { \ /* Then, mark it as valid. */ \ msvc_inval_current->restart_valid = 1; # define CATCH_MSVC_INVAL \ /* Execution completed. \ Mark gl_msvc_inval_restart as invalid. */ \ msvc_inval_current->restart_valid = 0; \ } \ else \ { \ /* Execution triggered an invalid parameter notification. \ Mark gl_msvc_inval_restart as invalid. */ \ msvc_inval_current->restart_valid = 0; # define DONE_MSVC_INVAL \ } \ } \ while (0) # endif # endif #else /* A platform that does not need to the invalid parameter handler, or when SANE_LIBRARY_HANDLING is desired. */ /* The braces here avoid GCC warnings like "warning: suggest explicit braces to avoid ambiguous 'else'". */ # define TRY_MSVC_INVAL \ do \ { \ if (1) # define CATCH_MSVC_INVAL \ else # define DONE_MSVC_INVAL \ } \ while (0) #endif #endif /* _MSVC_INVAL_H */ libtasn1-3.4/gl/unistd.in.h0000664000000000000000000014535012244720630012464 00000000000000/* Substitute for and wrapper around . Copyright (C) 2003-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 3, 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 . */ #ifndef _@GUARD_PREFIX@_UNISTD_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #if @HAVE_UNISTD_H@ # @INCLUDE_NEXT@ @NEXT_UNISTD_H@ #endif /* Get all possible declarations of gethostname(). */ #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \ && !defined _GL_INCLUDING_WINSOCK2_H # define _GL_INCLUDING_WINSOCK2_H # include # undef _GL_INCLUDING_WINSOCK2_H #endif #if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H #define _@GUARD_PREFIX@_UNISTD_H /* NetBSD 5.0 mis-defines NULL. Also get size_t. */ #include /* mingw doesn't define the SEEK_* or *_FILENO macros in . */ /* Cygwin 1.7.1 declares symlinkat in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \ && defined __CYGWIN__)) \ && ! defined __GLIBC__ # include #endif /* Cygwin 1.7.1 declares unlinkat in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \ && ! defined __GLIBC__ # include #endif /* mingw fails to declare _exit in . */ /* mingw, MSVC, BeOS, Haiku declare environ in , not in . */ /* Solaris declares getcwd not only in but also in . */ /* OSF Tru64 Unix cannot see gnulib rpl_strtod when system is included here. */ /* But avoid namespace pollution on glibc systems. */ #if !defined __GLIBC__ && !defined __osf__ # define __need_system_stdlib_h # include # undef __need_system_stdlib_h #endif /* Native Windows platforms declare chdir, getcwd, rmdir in and/or , not in . They also declare access(), chmod(), close(), dup(), dup2(), isatty(), lseek(), read(), unlink(), write() in . */ #if ((@GNULIB_CHDIR@ || @GNULIB_GETCWD@ || @GNULIB_RMDIR@ \ || defined GNULIB_POSIXCHECK) \ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) # include /* mingw32, mingw64 */ # include /* mingw64, MSVC 9 */ #elif (@GNULIB_CLOSE@ || @GNULIB_DUP@ || @GNULIB_DUP2@ || @GNULIB_ISATTY@ \ || @GNULIB_LSEEK@ || @GNULIB_READ@ || @GNULIB_UNLINK@ || @GNULIB_WRITE@ \ || defined GNULIB_POSIXCHECK) \ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) # include #endif /* AIX and OSF/1 5.1 declare getdomainname in , not in . NonStop Kernel declares gethostname in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \ || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \ && !defined __GLIBC__ # include #endif /* MSVC defines off_t in . May also define off_t to a 64-bit type on native Windows. */ #if !@HAVE_UNISTD_H@ || @WINDOWS_64_BIT_OFF_T@ /* Get off_t. */ # include #endif #if (@GNULIB_READ@ || @GNULIB_WRITE@ \ || @GNULIB_READLINK@ || @GNULIB_READLINKAT@ \ || @GNULIB_PREAD@ || @GNULIB_PWRITE@ || defined GNULIB_POSIXCHECK) /* Get ssize_t. */ # include #endif /* Get getopt(), optarg, optind, opterr, optopt. But avoid namespace pollution on glibc systems. */ #if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT # define __need_getopt # include #endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_UNISTD_INLINE # define _GL_UNISTD_INLINE _GL_INLINE #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Hide some function declarations from . */ #if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ # if !defined _@GUARD_PREFIX@_SYS_SOCKET_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef socket # define socket socket_used_without_including_sys_socket_h # undef connect # define connect connect_used_without_including_sys_socket_h # undef accept # define accept accept_used_without_including_sys_socket_h # undef bind # define bind bind_used_without_including_sys_socket_h # undef getpeername # define getpeername getpeername_used_without_including_sys_socket_h # undef getsockname # define getsockname getsockname_used_without_including_sys_socket_h # undef getsockopt # define getsockopt getsockopt_used_without_including_sys_socket_h # undef listen # define listen listen_used_without_including_sys_socket_h # undef recv # define recv recv_used_without_including_sys_socket_h # undef send # define send send_used_without_including_sys_socket_h # undef recvfrom # define recvfrom recvfrom_used_without_including_sys_socket_h # undef sendto # define sendto sendto_used_without_including_sys_socket_h # undef setsockopt # define setsockopt setsockopt_used_without_including_sys_socket_h # undef shutdown # define shutdown shutdown_used_without_including_sys_socket_h # else _GL_WARN_ON_USE (socket, "socket() used without including "); _GL_WARN_ON_USE (connect, "connect() used without including "); _GL_WARN_ON_USE (accept, "accept() used without including "); _GL_WARN_ON_USE (bind, "bind() used without including "); _GL_WARN_ON_USE (getpeername, "getpeername() used without including "); _GL_WARN_ON_USE (getsockname, "getsockname() used without including "); _GL_WARN_ON_USE (getsockopt, "getsockopt() used without including "); _GL_WARN_ON_USE (listen, "listen() used without including "); _GL_WARN_ON_USE (recv, "recv() used without including "); _GL_WARN_ON_USE (send, "send() used without including "); _GL_WARN_ON_USE (recvfrom, "recvfrom() used without including "); _GL_WARN_ON_USE (sendto, "sendto() used without including "); _GL_WARN_ON_USE (setsockopt, "setsockopt() used without including "); _GL_WARN_ON_USE (shutdown, "shutdown() used without including "); # endif # endif # if !defined _@GUARD_PREFIX@_SYS_SELECT_H # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef select # define select select_used_without_including_sys_select_h # else _GL_WARN_ON_USE (select, "select() used without including "); # endif # endif #endif /* OS/2 EMX lacks these macros. */ #ifndef STDIN_FILENO # define STDIN_FILENO 0 #endif #ifndef STDOUT_FILENO # define STDOUT_FILENO 1 #endif #ifndef STDERR_FILENO # define STDERR_FILENO 2 #endif /* Ensure *_OK macros exist. */ #ifndef F_OK # define F_OK 0 # define X_OK 1 # define W_OK 2 # define R_OK 4 #endif /* Declare overridden functions. */ #if defined GNULIB_POSIXCHECK /* The access() function is a security risk. */ _GL_WARN_ON_USE (access, "the access function is a security risk - " "use the gnulib module faccessat instead"); #endif #if @GNULIB_CHDIR@ _GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1))); _GL_CXXALIASWARN (chdir); #elif defined GNULIB_POSIXCHECK # undef chdir # if HAVE_RAW_DECL_CHDIR _GL_WARN_ON_USE (chown, "chdir is not always in - " "use gnulib module chdir for portability"); # endif #endif #if @GNULIB_CHOWN@ /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE to GID (if GID is not -1). Follow symbolic links. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_DUP2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dup2 rpl_dup2 # endif _GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); _GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); # else # if !@HAVE_DUP2@ _GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd)); # endif _GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); # endif _GL_CXXALIASWARN (dup2); #elif defined GNULIB_POSIXCHECK # undef dup2 # if HAVE_RAW_DECL_DUP2 _GL_WARN_ON_USE (dup2, "dup2 is unportable - " "use gnulib module dup2 for portability"); # endif #endif #if @GNULIB_DUP3@ /* Copy the file descriptor OLDFD into file descriptor NEWFD, with the specified flags. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). Close NEWFD first if it is open. Return newfd if successful, otherwise -1 and errno set. See the Linux man page at . */ # if @HAVE_DUP3@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dup3 rpl_dup3 # endif _GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); _GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); # else _GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); _GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); # endif _GL_CXXALIASWARN (dup3); #elif defined GNULIB_POSIXCHECK # undef dup3 # if HAVE_RAW_DECL_DUP3 _GL_WARN_ON_USE (dup3, "dup3 is unportable - " "use gnulib module dup3 for portability"); # endif #endif #if @GNULIB_ENVIRON@ # if !@HAVE_DECL_ENVIRON@ /* Set of environment variables and values. An array of strings of the form "VARIABLE=VALUE", terminated with a NULL. */ # if defined __APPLE__ && defined __MACH__ # include # define environ (*_NSGetEnviron ()) # else # ifdef __cplusplus extern "C" { # endif extern char **environ; # ifdef __cplusplus } # endif # endif # endif #elif defined GNULIB_POSIXCHECK # if HAVE_RAW_DECL_ENVIRON _GL_UNISTD_INLINE char *** rpl_environ (void) { return &environ; } _GL_WARN_ON_USE (rpl_environ, "environ is unportable - " "use gnulib module environ for portability"); # undef environ # define environ (*rpl_environ ()) # endif #endif #if @GNULIB_EUIDACCESS@ /* Like access(), except that it uses the effective user id and group id of the current process. */ # if !@HAVE_EUIDACCESS@ _GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); _GL_CXXALIASWARN (euidaccess); # if defined GNULIB_POSIXCHECK /* Like access(), this function is a security risk. */ _GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " "use the gnulib module faccessat instead"); # endif #elif defined GNULIB_POSIXCHECK # undef euidaccess # if HAVE_RAW_DECL_EUIDACCESS _GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " "use gnulib module euidaccess for portability"); # endif #endif #if @GNULIB_FACCESSAT@ # if !@HAVE_FACCESSAT@ _GL_FUNCDECL_SYS (faccessat, int, (int fd, char const *file, int mode, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (faccessat, int, (int fd, char const *file, int mode, int flag)); _GL_CXXALIASWARN (faccessat); #elif defined GNULIB_POSIXCHECK # undef faccessat # if HAVE_RAW_DECL_FACCESSAT _GL_WARN_ON_USE (faccessat, "faccessat is not portable - " "use gnulib module faccessat for portability"); # endif #endif #if @GNULIB_FCHDIR@ /* Change the process' current working directory to the directory on which the given file descriptor is open. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if ! @HAVE_FCHDIR@ _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); /* Gnulib internal hooks needed to maintain the fchdir metadata. */ _GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) _GL_ARG_NONNULL ((2)); _GL_EXTERN_C void _gl_unregister_fd (int fd); _GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); _GL_EXTERN_C const char *_gl_directory_name (int fd); # else # if !@HAVE_DECL_FCHDIR@ _GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); # endif # endif _GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); _GL_CXXALIASWARN (fchdir); #elif defined GNULIB_POSIXCHECK # undef fchdir # if HAVE_RAW_DECL_FCHDIR _GL_WARN_ON_USE (fchdir, "fchdir is unportable - " "use gnulib module fchdir for portability"); # endif #endif #if @GNULIB_FCHOWNAT@ # if @REPLACE_FCHOWNAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fchownat # define fchownat rpl_fchownat # endif _GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag)); # else # if !@HAVE_FCHOWNAT@ _GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, uid_t owner, gid_t group, int flag)); # endif _GL_CXXALIASWARN (fchownat); #elif defined GNULIB_POSIXCHECK # undef fchownat # if HAVE_RAW_DECL_FCHOWNAT _GL_WARN_ON_USE (fchownat, "fchownat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_FDATASYNC@ /* Synchronize changes to a file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@ _GL_FUNCDECL_SYS (fdatasync, int, (int fd)); # endif _GL_CXXALIAS_SYS (fdatasync, int, (int fd)); _GL_CXXALIASWARN (fdatasync); #elif defined GNULIB_POSIXCHECK # undef fdatasync # if HAVE_RAW_DECL_FDATASYNC _GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - " "use gnulib module fdatasync for portability"); # endif #endif #if @GNULIB_FSYNC@ /* Synchronize changes, including metadata, to a file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if !@HAVE_FSYNC@ _GL_FUNCDECL_SYS (fsync, int, (int fd)); # endif _GL_CXXALIAS_SYS (fsync, int, (int fd)); _GL_CXXALIASWARN (fsync); #elif defined GNULIB_POSIXCHECK # undef fsync # if HAVE_RAW_DECL_FSYNC _GL_WARN_ON_USE (fsync, "fsync is unportable - " "use gnulib module fsync for portability"); # endif #endif #if @GNULIB_FTRUNCATE@ /* Change the size of the file to which FD is opened to become equal to LENGTH. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_FTRUNCATE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftruncate # define ftruncate rpl_ftruncate # endif _GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length)); _GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length)); # else # if !@HAVE_FTRUNCATE@ _GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); # endif _GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); # endif _GL_CXXALIASWARN (ftruncate); #elif defined GNULIB_POSIXCHECK # undef ftruncate # if HAVE_RAW_DECL_FTRUNCATE _GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " "use gnulib module ftruncate for portability"); # endif #endif #if @GNULIB_GETCWD@ /* Get the name of the current working directory, and put it in SIZE bytes of BUF. Return BUF if successful, or NULL if the directory couldn't be determined or SIZE was too small. See the POSIX:2008 specification . Additionally, the gnulib module 'getcwd' guarantees the following GNU extension: If BUF is NULL, an array is allocated with 'malloc'; the array is SIZE bytes long, unless SIZE == 0, in which case it is as big as necessary. */ # if @REPLACE_GETCWD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getcwd rpl_getcwd # endif _GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); _GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); # else /* Need to cast, because on mingw, the second parameter is int size. */ _GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); # endif _GL_CXXALIASWARN (getcwd); #elif defined GNULIB_POSIXCHECK # undef getcwd # if HAVE_RAW_DECL_GETCWD _GL_WARN_ON_USE (getcwd, "getcwd is unportable - " "use gnulib module getcwd for portability"); # endif #endif #if @GNULIB_GETDOMAINNAME@ /* Return the NIS domain name of the machine. WARNING! The NIS domain name is unrelated to the fully qualified host name of the machine. It is also unrelated to email addresses. WARNING! The NIS domain name is usually the empty string or "(none)" when not using NIS. Put up to LEN bytes of the NIS domain name into NAME. Null terminate it if the name is shorter than LEN. If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. Return 0 if successful, otherwise set errno and return -1. */ # if @REPLACE_GETDOMAINNAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdomainname # define getdomainname rpl_getdomainname # endif _GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); # else # if !@HAVE_DECL_GETDOMAINNAME@ _GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); # endif _GL_CXXALIASWARN (getdomainname); #elif defined GNULIB_POSIXCHECK # undef getdomainname # if HAVE_RAW_DECL_GETDOMAINNAME _GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " "use gnulib module getdomainname for portability"); # endif #endif #if @GNULIB_GETDTABLESIZE@ /* Return the maximum number of file descriptors in the current process. In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ # if !@HAVE_GETDTABLESIZE@ _GL_FUNCDECL_SYS (getdtablesize, int, (void)); # endif _GL_CXXALIAS_SYS (getdtablesize, int, (void)); _GL_CXXALIASWARN (getdtablesize); #elif defined GNULIB_POSIXCHECK # undef getdtablesize # if HAVE_RAW_DECL_GETDTABLESIZE _GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " "use gnulib module getdtablesize for portability"); # endif #endif #if @GNULIB_GETGROUPS@ /* Return the supplemental groups that the current process belongs to. It is unspecified whether the effective group id is in the list. If N is 0, return the group count; otherwise, N describes how many entries are available in GROUPS. Return -1 and set errno if N is not 0 and not large enough. Fails with ENOSYS on some systems. */ # if @REPLACE_GETGROUPS@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getgroups # define getgroups rpl_getgroups # endif _GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); _GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); # else # if !@HAVE_GETGROUPS@ _GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); # endif _GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); # endif _GL_CXXALIASWARN (getgroups); #elif defined GNULIB_POSIXCHECK # undef getgroups # if HAVE_RAW_DECL_GETGROUPS _GL_WARN_ON_USE (getgroups, "getgroups is unportable - " "use gnulib module getgroups for portability"); # endif #endif #if @GNULIB_GETHOSTNAME@ /* Return the standard host name of the machine. WARNING! The host name may or may not be fully qualified. Put up to LEN bytes of the host name into NAME. Null terminate it if the name is shorter than LEN. If the host name is longer than LEN, set errno = EINVAL and return -1. Return 0 if successful, otherwise set errno and return -1. */ # if @UNISTD_H_HAVE_WINSOCK2_H@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gethostname # define gethostname rpl_gethostname # endif _GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); # else # if !@HAVE_GETHOSTNAME@ _GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second parameter is int len. */ _GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); # endif _GL_CXXALIASWARN (gethostname); #elif @UNISTD_H_HAVE_WINSOCK2_H@ # undef gethostname # define gethostname gethostname_used_without_requesting_gnulib_module_gethostname #elif defined GNULIB_POSIXCHECK # undef gethostname # if HAVE_RAW_DECL_GETHOSTNAME _GL_WARN_ON_USE (gethostname, "gethostname is unportable - " "use gnulib module gethostname for portability"); # endif #endif #if @GNULIB_GETLOGIN@ /* Returns the user's login name, or NULL if it cannot be found. Upon error, returns NULL with errno set. See . Most programs don't need to use this function, because the information is available through environment variables: ${LOGNAME-$USER} on Unix platforms, $USERNAME on native Windows platforms. */ # if !@HAVE_GETLOGIN@ _GL_FUNCDECL_SYS (getlogin, char *, (void)); # endif _GL_CXXALIAS_SYS (getlogin, char *, (void)); _GL_CXXALIASWARN (getlogin); #elif defined GNULIB_POSIXCHECK # undef getlogin # if HAVE_RAW_DECL_GETLOGIN _GL_WARN_ON_USE (getlogin, "getlogin is unportable - " "use gnulib module getlogin for portability"); # endif #endif #if @GNULIB_GETLOGIN_R@ /* Copies the user's login name to NAME. The array pointed to by NAME has room for SIZE bytes. Returns 0 if successful. Upon error, an error number is returned, or -1 in the case that the login name cannot be found but no specific error is provided (this case is hopefully rare but is left open by the POSIX spec). See . Most programs don't need to use this function, because the information is available through environment variables: ${LOGNAME-$USER} on Unix platforms, $USERNAME on native Windows platforms. */ # if @REPLACE_GETLOGIN_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getlogin_r rpl_getlogin_r # endif _GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); # else # if !@HAVE_DECL_GETLOGIN_R@ _GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 10 systems, the second argument is int size. */ _GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); # endif _GL_CXXALIASWARN (getlogin_r); #elif defined GNULIB_POSIXCHECK # undef getlogin_r # if HAVE_RAW_DECL_GETLOGIN_R _GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " "use gnulib module getlogin_r for portability"); # endif #endif #if @GNULIB_GETPAGESIZE@ # if @REPLACE_GETPAGESIZE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getpagesize rpl_getpagesize # endif _GL_FUNCDECL_RPL (getpagesize, int, (void)); _GL_CXXALIAS_RPL (getpagesize, int, (void)); # else # if !@HAVE_GETPAGESIZE@ # if !defined getpagesize /* This is for POSIX systems. */ # if !defined _gl_getpagesize && defined _SC_PAGESIZE # if ! (defined __VMS && __VMS_VER < 70000000) # define _gl_getpagesize() sysconf (_SC_PAGESIZE) # endif # endif /* This is for older VMS. */ # if !defined _gl_getpagesize && defined __VMS # ifdef __ALPHA # define _gl_getpagesize() 8192 # else # define _gl_getpagesize() 512 # endif # endif /* This is for BeOS. */ # if !defined _gl_getpagesize && @HAVE_OS_H@ # include # if defined B_PAGE_SIZE # define _gl_getpagesize() B_PAGE_SIZE # endif # endif /* This is for AmigaOS4.0. */ # if !defined _gl_getpagesize && defined __amigaos4__ # define _gl_getpagesize() 2048 # endif /* This is for older Unix systems. */ # if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@ # include # ifdef EXEC_PAGESIZE # define _gl_getpagesize() EXEC_PAGESIZE # else # ifdef NBPG # ifndef CLSIZE # define CLSIZE 1 # endif # define _gl_getpagesize() (NBPG * CLSIZE) # else # ifdef NBPC # define _gl_getpagesize() NBPC # endif # endif # endif # endif # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define getpagesize() _gl_getpagesize () # else # if !GNULIB_defined_getpagesize_function _GL_UNISTD_INLINE int getpagesize () { return _gl_getpagesize (); } # define GNULIB_defined_getpagesize_function 1 # endif # endif # endif # endif /* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ _GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); # endif # if @HAVE_DECL_GETPAGESIZE@ _GL_CXXALIASWARN (getpagesize); # endif #elif defined GNULIB_POSIXCHECK # undef getpagesize # if HAVE_RAW_DECL_GETPAGESIZE _GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " "use gnulib module getpagesize for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Return the next valid login shell on the system, or NULL when the end of the list has been reached. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (getusershell, char *, (void)); # endif _GL_CXXALIAS_SYS (getusershell, char *, (void)); _GL_CXXALIASWARN (getusershell); #elif defined GNULIB_POSIXCHECK # undef getusershell # if HAVE_RAW_DECL_GETUSERSHELL _GL_WARN_ON_USE (getusershell, "getusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Rewind to pointer that is advanced at each getusershell() call. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (setusershell, void, (void)); # endif _GL_CXXALIAS_SYS (setusershell, void, (void)); _GL_CXXALIASWARN (setusershell); #elif defined GNULIB_POSIXCHECK # undef setusershell # if HAVE_RAW_DECL_SETUSERSHELL _GL_WARN_ON_USE (setusershell, "setusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GETUSERSHELL@ /* Free the pointer that is advanced at each getusershell() call and associated resources. */ # if !@HAVE_DECL_GETUSERSHELL@ _GL_FUNCDECL_SYS (endusershell, void, (void)); # endif _GL_CXXALIAS_SYS (endusershell, void, (void)); _GL_CXXALIASWARN (endusershell); #elif defined GNULIB_POSIXCHECK # undef endusershell # if HAVE_RAW_DECL_ENDUSERSHELL _GL_WARN_ON_USE (endusershell, "endusershell is unportable - " "use gnulib module getusershell for portability"); # endif #endif #if @GNULIB_GROUP_MEMBER@ /* Determine whether group id is in calling user's group list. */ # if !@HAVE_GROUP_MEMBER@ _GL_FUNCDECL_SYS (group_member, int, (gid_t gid)); # endif _GL_CXXALIAS_SYS (group_member, int, (gid_t gid)); _GL_CXXALIASWARN (group_member); #elif defined GNULIB_POSIXCHECK # undef group_member # if HAVE_RAW_DECL_GROUP_MEMBER _GL_WARN_ON_USE (group_member, "group_member is unportable - " "use gnulib module group-member for portability"); # endif #endif #if @GNULIB_ISATTY@ # if @REPLACE_ISATTY@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef isatty # define isatty rpl_isatty # endif _GL_FUNCDECL_RPL (isatty, int, (int fd)); _GL_CXXALIAS_RPL (isatty, int, (int fd)); # else _GL_CXXALIAS_SYS (isatty, int, (int fd)); # endif _GL_CXXALIASWARN (isatty); #elif defined GNULIB_POSIXCHECK # undef isatty # if HAVE_RAW_DECL_ISATTY _GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - " "use gnulib module isatty for portability"); # endif #endif #if @GNULIB_LCHOWN@ /* Change the owner of FILE to UID (if UID is not -1) and the group of FILE to GID (if GID is not -1). Do not follow symbolic links. Return 0 if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_LCHOWN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef lchown # define lchown rpl_lchown # endif _GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); # else # if !@HAVE_LCHOWN@ _GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); # endif _GL_CXXALIASWARN (lchown); #elif defined GNULIB_POSIXCHECK # undef lchown # if HAVE_RAW_DECL_LCHOWN _GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " "use gnulib module lchown for portability"); # endif #endif #if @GNULIB_LINK@ /* Create a new hard link for an existing file. Return 0 if successful, otherwise -1 and errno set. See POSIX:2008 specification . */ # if @REPLACE_LINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define link rpl_link # endif _GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); # else # if !@HAVE_LINK@ _GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); # endif _GL_CXXALIASWARN (link); #elif defined GNULIB_POSIXCHECK # undef link # if HAVE_RAW_DECL_LINK _GL_WARN_ON_USE (link, "link is unportable - " "use gnulib module link for portability"); # endif #endif #if @GNULIB_LINKAT@ /* Create a new hard link for an existing file, relative to two directories. FLAG controls whether symlinks are followed. Return 0 if successful, otherwise -1 and errno set. */ # if @REPLACE_LINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef linkat # define linkat rpl_linkat # endif _GL_FUNCDECL_RPL (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag)); # else # if !@HAVE_LINKAT@ _GL_FUNCDECL_SYS (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (linkat, int, (int fd1, const char *path1, int fd2, const char *path2, int flag)); # endif _GL_CXXALIASWARN (linkat); #elif defined GNULIB_POSIXCHECK # undef linkat # if HAVE_RAW_DECL_LINKAT _GL_WARN_ON_USE (linkat, "linkat is unportable - " "use gnulib module linkat for portability"); # endif #endif #if @GNULIB_LSEEK@ /* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. Return the new offset if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_LSEEK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define lseek rpl_lseek # endif _GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); _GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); # else _GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); # endif _GL_CXXALIASWARN (lseek); #elif defined GNULIB_POSIXCHECK # undef lseek # if HAVE_RAW_DECL_LSEEK _GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " "systems - use gnulib module lseek for portability"); # endif #endif #if @GNULIB_PIPE@ /* Create a pipe, defaulting to O_BINARY mode. Store the read-end as fd[0] and the write-end as fd[1]. Return 0 upon success, or -1 with errno set upon failure. */ # if !@HAVE_PIPE@ _GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (pipe, int, (int fd[2])); _GL_CXXALIASWARN (pipe); #elif defined GNULIB_POSIXCHECK # undef pipe # if HAVE_RAW_DECL_PIPE _GL_WARN_ON_USE (pipe, "pipe is unportable - " "use gnulib module pipe-posix for portability"); # endif #endif #if @GNULIB_PIPE2@ /* Create a pipe, applying the given flags when opening the read-end of the pipe and the write-end of the pipe. The flags are a bitmask, possibly including O_CLOEXEC (defined in ) and O_TEXT, O_BINARY (defined in "binary-io.h"). Store the read-end as fd[0] and the write-end as fd[1]. Return 0 upon success, or -1 with errno set upon failure. See also the Linux man page at . */ # if @HAVE_PIPE2@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define pipe2 rpl_pipe2 # endif _GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); # else _GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); # endif _GL_CXXALIASWARN (pipe2); #elif defined GNULIB_POSIXCHECK # undef pipe2 # if HAVE_RAW_DECL_PIPE2 _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " "use gnulib module pipe2 for portability"); # endif #endif #if @GNULIB_PREAD@ /* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. Return the number of bytes placed into BUF if successful, otherwise set errno and return -1. 0 indicates EOF. See the POSIX:2008 specification . */ # if @REPLACE_PREAD@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pread # define pread rpl_pread # endif _GL_FUNCDECL_RPL (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset)); # else # if !@HAVE_PREAD@ _GL_FUNCDECL_SYS (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (pread, ssize_t, (int fd, void *buf, size_t bufsize, off_t offset)); # endif _GL_CXXALIASWARN (pread); #elif defined GNULIB_POSIXCHECK # undef pread # if HAVE_RAW_DECL_PREAD _GL_WARN_ON_USE (pread, "pread is unportable - " "use gnulib module pread for portability"); # endif #endif #if @GNULIB_PWRITE@ /* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. Return the number of bytes written if successful, otherwise set errno and return -1. 0 indicates nothing written. See the POSIX:2008 specification . */ # if @REPLACE_PWRITE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef pwrite # define pwrite rpl_pwrite # endif _GL_FUNCDECL_RPL (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset)); # else # if !@HAVE_PWRITE@ _GL_FUNCDECL_SYS (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (pwrite, ssize_t, (int fd, const void *buf, size_t bufsize, off_t offset)); # endif _GL_CXXALIASWARN (pwrite); #elif defined GNULIB_POSIXCHECK # undef pwrite # if HAVE_RAW_DECL_PWRITE _GL_WARN_ON_USE (pwrite, "pwrite is unportable - " "use gnulib module pwrite for portability"); # endif #endif #if @GNULIB_READ@ /* Read up to COUNT bytes from file descriptor FD into the buffer starting at BUF. See the POSIX:2008 specification . */ # if @REPLACE_READ@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef read # define read rpl_read # endif _GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count)); # else /* Need to cast, because on mingw, the third parameter is unsigned int count and the return type is 'int'. */ _GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count)); # endif _GL_CXXALIASWARN (read); #endif #if @GNULIB_READLINK@ /* Read the contents of the symbolic link FILE and place the first BUFSIZE bytes of it into BUF. Return the number of bytes placed into BUF if successful, otherwise -1 and errno set. See the POSIX:2008 specification . */ # if @REPLACE_READLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define readlink rpl_readlink # endif _GL_FUNCDECL_RPL (readlink, ssize_t, (const char *file, char *buf, size_t bufsize) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (readlink, ssize_t, (const char *file, char *buf, size_t bufsize)); # else # if !@HAVE_READLINK@ _GL_FUNCDECL_SYS (readlink, ssize_t, (const char *file, char *buf, size_t bufsize) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (readlink, ssize_t, (const char *file, char *buf, size_t bufsize)); # endif _GL_CXXALIASWARN (readlink); #elif defined GNULIB_POSIXCHECK # undef readlink # if HAVE_RAW_DECL_READLINK _GL_WARN_ON_USE (readlink, "readlink is unportable - " "use gnulib module readlink for portability"); # endif #endif #if @GNULIB_READLINKAT@ # if !@HAVE_READLINKAT@ _GL_FUNCDECL_SYS (readlinkat, ssize_t, (int fd, char const *file, char *buf, size_t len) _GL_ARG_NONNULL ((2, 3))); # endif _GL_CXXALIAS_SYS (readlinkat, ssize_t, (int fd, char const *file, char *buf, size_t len)); _GL_CXXALIASWARN (readlinkat); #elif defined GNULIB_POSIXCHECK # undef readlinkat # if HAVE_RAW_DECL_READLINKAT _GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " "use gnulib module readlinkat for portability"); # endif #endif #if @GNULIB_RMDIR@ /* Remove the directory DIR. */ # if @REPLACE_RMDIR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define rmdir rpl_rmdir # endif _GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (rmdir, int, (char const *name)); # else _GL_CXXALIAS_SYS (rmdir, int, (char const *name)); # endif _GL_CXXALIASWARN (rmdir); #elif defined GNULIB_POSIXCHECK # undef rmdir # if HAVE_RAW_DECL_RMDIR _GL_WARN_ON_USE (rmdir, "rmdir is unportable - " "use gnulib module rmdir for portability"); # endif #endif #if @GNULIB_SETHOSTNAME@ /* Set the host name of the machine. The host name may or may not be fully qualified. Put LEN bytes of NAME into the host name. Return 0 if successful, otherwise, set errno and return -1. Platforms with no ability to set the hostname return -1 and set errno = ENOSYS. */ # if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@ _GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len) _GL_ARG_NONNULL ((1))); # endif /* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5 and FreeBSD 6.4 the second parameter is int. On Solaris 11 2011-10, the first parameter is not const. */ _GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len)); _GL_CXXALIASWARN (sethostname); #elif defined GNULIB_POSIXCHECK # undef sethostname # if HAVE_RAW_DECL_SETHOSTNAME _GL_WARN_ON_USE (sethostname, "sethostname is unportable - " "use gnulib module sethostname for portability"); # endif #endif #if @GNULIB_SLEEP@ /* Pause the execution of the current thread for N seconds. Returns the number of seconds left to sleep. See the POSIX:2008 specification . */ # if @REPLACE_SLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef sleep # define sleep rpl_sleep # endif _GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); _GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); # else # if !@HAVE_SLEEP@ _GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); # endif _GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); # endif _GL_CXXALIASWARN (sleep); #elif defined GNULIB_POSIXCHECK # undef sleep # if HAVE_RAW_DECL_SLEEP _GL_WARN_ON_USE (sleep, "sleep is unportable - " "use gnulib module sleep for portability"); # endif #endif #if @GNULIB_SYMLINK@ # if @REPLACE_SYMLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef symlink # define symlink rpl_symlink # endif _GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); # else # if !@HAVE_SYMLINK@ _GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); # endif _GL_CXXALIASWARN (symlink); #elif defined GNULIB_POSIXCHECK # undef symlink # if HAVE_RAW_DECL_SYMLINK _GL_WARN_ON_USE (symlink, "symlink is not portable - " "use gnulib module symlink for portability"); # endif #endif #if @GNULIB_SYMLINKAT@ # if !@HAVE_SYMLINKAT@ _GL_FUNCDECL_SYS (symlinkat, int, (char const *contents, int fd, char const *file) _GL_ARG_NONNULL ((1, 3))); # endif _GL_CXXALIAS_SYS (symlinkat, int, (char const *contents, int fd, char const *file)); _GL_CXXALIASWARN (symlinkat); #elif defined GNULIB_POSIXCHECK # undef symlinkat # if HAVE_RAW_DECL_SYMLINKAT _GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " "use gnulib module symlinkat for portability"); # endif #endif #if @GNULIB_TTYNAME_R@ /* Store at most BUFLEN characters of the pathname of the terminal FD is open on in BUF. Return 0 on success, otherwise an error number. */ # if @REPLACE_TTYNAME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ttyname_r # define ttyname_r rpl_ttyname_r # endif _GL_FUNCDECL_RPL (ttyname_r, int, (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (ttyname_r, int, (int fd, char *buf, size_t buflen)); # else # if !@HAVE_DECL_TTYNAME_R@ _GL_FUNCDECL_SYS (ttyname_r, int, (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (ttyname_r, int, (int fd, char *buf, size_t buflen)); # endif _GL_CXXALIASWARN (ttyname_r); #elif defined GNULIB_POSIXCHECK # undef ttyname_r # if HAVE_RAW_DECL_TTYNAME_R _GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " "use gnulib module ttyname_r for portability"); # endif #endif #if @GNULIB_UNLINK@ # if @REPLACE_UNLINK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlink # define unlink rpl_unlink # endif _GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (unlink, int, (char const *file)); # else _GL_CXXALIAS_SYS (unlink, int, (char const *file)); # endif _GL_CXXALIASWARN (unlink); #elif defined GNULIB_POSIXCHECK # undef unlink # if HAVE_RAW_DECL_UNLINK _GL_WARN_ON_USE (unlink, "unlink is not portable - " "use gnulib module unlink for portability"); # endif #endif #if @GNULIB_UNLINKAT@ # if @REPLACE_UNLINKAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef unlinkat # define unlinkat rpl_unlinkat # endif _GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); # else # if !@HAVE_UNLINKAT@ _GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); # endif _GL_CXXALIASWARN (unlinkat); #elif defined GNULIB_POSIXCHECK # undef unlinkat # if HAVE_RAW_DECL_UNLINKAT _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " "use gnulib module openat for portability"); # endif #endif #if @GNULIB_USLEEP@ /* Pause the execution of the current thread for N microseconds. Returns 0 on completion, or -1 on range error. See the POSIX:2001 specification . */ # if @REPLACE_USLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef usleep # define usleep rpl_usleep # endif _GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); _GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); # else # if !@HAVE_USLEEP@ _GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); # endif _GL_CXXALIAS_SYS (usleep, int, (useconds_t n)); # endif _GL_CXXALIASWARN (usleep); #elif defined GNULIB_POSIXCHECK # undef usleep # if HAVE_RAW_DECL_USLEEP _GL_WARN_ON_USE (usleep, "usleep is unportable - " "use gnulib module usleep for portability"); # endif #endif #if @GNULIB_WRITE@ /* Write up to COUNT bytes starting at BUF to file descriptor FD. See the POSIX:2008 specification . */ # if @REPLACE_WRITE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef write # define write rpl_write # endif _GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); # else /* Need to cast, because on mingw, the third parameter is unsigned int count and the return type is 'int'. */ _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); # endif _GL_CXXALIASWARN (write); #endif _GL_INLINE_HEADER_END #endif /* _@GUARD_PREFIX@_UNISTD_H */ #endif /* _@GUARD_PREFIX@_UNISTD_H */ libtasn1-3.4/gl/m4/0000775000000000000000000000000012244722064010773 500000000000000libtasn1-3.4/gl/m4/sys_time_h.m40000664000000000000000000000734112244720630013322 00000000000000# Configure a replacement for . # serial 8 # Copyright (C) 2007, 2009-2013 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. # Written by Paul Eggert and Martin Lambers. AC_DEFUN([gl_HEADER_SYS_TIME_H], [ dnl Use AC_REQUIRE here, so that the REPLACE_GETTIMEOFDAY=0 statement dnl below is expanded once only, before all REPLACE_GETTIMEOFDAY=1 dnl statements that occur in other macros. AC_REQUIRE([gl_HEADER_SYS_TIME_H_BODY]) ]) AC_DEFUN([gl_HEADER_SYS_TIME_H_BODY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) AC_CHECK_HEADERS_ONCE([sys/time.h]) gl_CHECK_NEXT_HEADERS([sys/time.h]) if test $ac_cv_header_sys_time_h != yes; then HAVE_SYS_TIME_H=0 fi dnl On native Windows with MSVC, 'struct timeval' is defined in dnl only. So include that header in the list. gl_PREREQ_SYS_H_WINSOCK2 AC_CACHE_CHECK([for struct timeval], [gl_cv_sys_struct_timeval], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif ]], [[static struct timeval x; x.tv_sec = x.tv_usec;]])], [gl_cv_sys_struct_timeval=yes], [gl_cv_sys_struct_timeval=no]) ]) if test $gl_cv_sys_struct_timeval != yes; then HAVE_STRUCT_TIMEVAL=0 else dnl On native Windows with a 64-bit 'time_t', 'struct timeval' is defined dnl (in and for mingw64, in only dnl for MSVC) with a tv_sec field of type 'long' (32-bit!), which is dnl smaller than the 'time_t' type mandated by POSIX. dnl On OpenBSD 5.1 amd64, tv_sec is 64 bits and time_t 32 bits, but dnl that is good enough. AC_CACHE_CHECK([for wide-enough struct timeval.tv_sec member], [gl_cv_sys_struct_timeval_tv_sec], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if HAVE_SYS_TIME_H #include #endif #include #if HAVE_WINSOCK2_H # include #endif ]], [[static struct timeval x; typedef int verify_tv_sec_type[ sizeof (time_t) <= sizeof x.tv_sec ? 1 : -1 ]; ]])], [gl_cv_sys_struct_timeval_tv_sec=yes], [gl_cv_sys_struct_timeval_tv_sec=no]) ]) if test $gl_cv_sys_struct_timeval_tv_sec != yes; then REPLACE_STRUCT_TIMEVAL=1 fi fi dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #if HAVE_SYS_TIME_H # include #endif #include ]], [gettimeofday]) ]) AC_DEFUN([gl_SYS_TIME_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_HEADER_SYS_TIME_H_DEFAULTS], [ GNULIB_GETTIMEOFDAY=0; AC_SUBST([GNULIB_GETTIMEOFDAY]) dnl Assume POSIX behavior unless another module says otherwise. HAVE_GETTIMEOFDAY=1; AC_SUBST([HAVE_GETTIMEOFDAY]) HAVE_STRUCT_TIMEVAL=1; AC_SUBST([HAVE_STRUCT_TIMEVAL]) HAVE_SYS_TIME_H=1; AC_SUBST([HAVE_SYS_TIME_H]) REPLACE_GETTIMEOFDAY=0; AC_SUBST([REPLACE_GETTIMEOFDAY]) REPLACE_STRUCT_TIMEVAL=0; AC_SUBST([REPLACE_STRUCT_TIMEVAL]) ]) libtasn1-3.4/gl/m4/wchar_t.m40000664000000000000000000000146212244720630012604 00000000000000# wchar_t.m4 serial 4 (gettext-0.18.2) dnl Copyright (C) 2002-2003, 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether has the 'wchar_t' type. dnl Prerequisite: AC_PROG_CC AC_DEFUN([gt_TYPE_WCHAR_T], [ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include wchar_t foo = (wchar_t)'\0';]], [[]])], [gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])]) if test $gt_cv_c_wchar_t = yes; then AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.]) fi ]) libtasn1-3.4/gl/m4/fstat.m40000664000000000000000000000164612244720630012302 00000000000000# fstat.m4 serial 4 dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FSTAT], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_REQUIRE([gl_MSVC_INVAL]) if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then REPLACE_FSTAT=1 fi AC_REQUIRE([gl_HEADER_SYS_STAT_H]) if test $WINDOWS_64_BIT_ST_SIZE = 1; then REPLACE_FSTAT=1 fi dnl Replace fstat() for supporting the gnulib-defined open() on directories. m4_ifdef([gl_FUNC_FCHDIR], [ gl_TEST_FCHDIR if test $HAVE_FCHDIR = 0; then case "$gl_cv_func_open_directory_works" in *yes) ;; *) REPLACE_FSTAT=1 ;; esac fi ]) ]) # Prerequisites of lib/fstat.c. AC_DEFUN([gl_PREREQ_FSTAT], [:]) libtasn1-3.4/gl/m4/ssize_t.m40000664000000000000000000000146312244720630012636 00000000000000# ssize_t.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2001-2003, 2006, 2010-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Test whether ssize_t is defined. AC_DEFUN([gt_TYPE_SSIZE_T], [ AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[int x = sizeof (ssize_t *) + sizeof (ssize_t); return !x;]])], [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])]) if test $gt_cv_ssize_t = no; then AC_DEFINE([ssize_t], [int], [Define as a signed type of the same size as size_t.]) fi ]) libtasn1-3.4/gl/m4/time_h.m40000664000000000000000000001020612244720630012416 00000000000000# Configure a more-standard replacement for . # Copyright (C) 2000-2001, 2003-2007, 2009-2013 Free Software Foundation, Inc. # serial 7 # 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. # Written by Paul Eggert and Jim Meyering. AC_DEFUN([gl_HEADER_TIME_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_HEADER_TIME_H_BODY]) ]) AC_DEFUN([gl_HEADER_TIME_H_BODY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) gl_NEXT_HEADERS([time.h]) AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC]) ]) dnl Check whether 'struct timespec' is declared dnl in time.h, sys/time.h, or pthread.h. AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], [ AC_CHECK_HEADERS_ONCE([sys/time.h]) AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_time_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_time_h=yes], [gl_cv_sys_struct_timespec_in_time_h=no])]) TIME_H_DEFINES_STRUCT_TIMESPEC=0 SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 if test $gl_cv_sys_struct_timespec_in_time_h = yes; then TIME_H_DEFINES_STRUCT_TIMESPEC=1 else AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_sys_time_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_sys_time_h=yes], [gl_cv_sys_struct_timespec_in_sys_time_h=no])]) if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1 else AC_CACHE_CHECK([for struct timespec in ], [gl_cv_sys_struct_timespec_in_pthread_h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], [gl_cv_sys_struct_timespec_in_pthread_h=yes], [gl_cv_sys_struct_timespec_in_pthread_h=no])]) if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 fi fi fi AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) ]) AC_DEFUN([gl_TIME_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS], [ GNULIB_MKTIME=0; AC_SUBST([GNULIB_MKTIME]) GNULIB_NANOSLEEP=0; AC_SUBST([GNULIB_NANOSLEEP]) GNULIB_STRPTIME=0; AC_SUBST([GNULIB_STRPTIME]) GNULIB_TIMEGM=0; AC_SUBST([GNULIB_TIMEGM]) GNULIB_TIME_R=0; AC_SUBST([GNULIB_TIME_R]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_LOCALTIME_R=1; AC_SUBST([HAVE_DECL_LOCALTIME_R]) HAVE_NANOSLEEP=1; AC_SUBST([HAVE_NANOSLEEP]) HAVE_STRPTIME=1; AC_SUBST([HAVE_STRPTIME]) HAVE_TIMEGM=1; AC_SUBST([HAVE_TIMEGM]) dnl If another module says to replace or to not replace, do that. dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK; dnl this lets maintainers check for portability. REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R]) REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME]) REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP]) REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM]) ]) libtasn1-3.4/gl/m4/ftello.m40000664000000000000000000000732712244720630012450 00000000000000# ftello.m4 serial 11 dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FTELLO], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([gl_STDIN_LARGE_OFFSET]) AC_REQUIRE([gl_SYS_TYPES_H]) dnl Persuade glibc to declare ftello(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_CHECK_DECLS_ONCE([ftello]) if test $ac_cv_have_decl_ftello = no; then HAVE_DECL_FTELLO=0 fi AC_CACHE_CHECK([for ftello], [gl_cv_func_ftello], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[ftello (stdin);]])], [gl_cv_func_ftello=yes], [gl_cv_func_ftello=no]) ]) if test $gl_cv_func_ftello = no; then HAVE_FTELLO=0 else if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_FTELLO=1 fi if test $gl_cv_var_stdin_large_offset = no; then REPLACE_FTELLO=1 fi if test $REPLACE_FTELLO = 0; then dnl Detect bug on Solaris. dnl ftell and ftello produce incorrect results after putc that followed a dnl getc call that reached EOF on Solaris. This is because the _IOREAD dnl flag does not get cleared in this case, even though _IOWRT gets set, dnl and ftell and ftello look whether the _IOREAD flag is set. AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([whether ftello works], [gl_cv_func_ftello_works], [ dnl Initial guess, used when cross-compiling or when /dev/tty cannot dnl be opened. changequote(,)dnl case "$host_os" in # Guess no on Solaris. solaris*) gl_cv_func_ftello_works="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_ftello_works="guessing yes" ;; esac changequote([,])dnl AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include #define TESTFILE "conftest.tmp" int main (void) { FILE *fp; /* Create a file with some contents. */ fp = fopen (TESTFILE, "w"); if (fp == NULL) return 70; if (fwrite ("foogarsh", 1, 8, fp) < 8) return 71; if (fclose (fp)) return 72; /* The file's contents is now "foogarsh". */ /* Try writing after reading to EOF. */ fp = fopen (TESTFILE, "r+"); if (fp == NULL) return 73; if (fseek (fp, -1, SEEK_END)) return 74; if (!(getc (fp) == 'h')) return 1; if (!(getc (fp) == EOF)) return 2; if (!(ftell (fp) == 8)) return 3; if (!(ftell (fp) == 8)) return 4; if (!(putc ('!', fp) == '!')) return 5; if (!(ftell (fp) == 9)) return 6; if (!(fclose (fp) == 0)) return 7; fp = fopen (TESTFILE, "r"); if (fp == NULL) return 75; { char buf[10]; if (!(fread (buf, 1, 10, fp) == 9)) return 10; if (!(memcmp (buf, "foogarsh!", 9) == 0)) return 11; } if (!(fclose (fp) == 0)) return 12; /* The file's contents is now "foogarsh!". */ return 0; }]])], [gl_cv_func_ftello_works=yes], [gl_cv_func_ftello_works=no], [:]) ]) case "$gl_cv_func_ftello_works" in *yes) ;; *) REPLACE_FTELLO=1 AC_DEFINE([FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE], [1], [Define to 1 if the system's ftello function has the Solaris bug.]) ;; esac fi fi ]) # Prerequisites of lib/ftello.c. AC_DEFUN([gl_PREREQ_FTELLO], [ dnl Native Windows has the function _ftelli64. mingw hides it, but mingw64 dnl makes it usable again. AC_CHECK_FUNCS([_ftelli64]) ]) libtasn1-3.4/gl/m4/gnulib-cache.m40000664000000000000000000000435012244720630013475 00000000000000# Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the specification of how gnulib-tool is used. # It acts as a cache: It is written and read by gnulib-tool. # In projects that use version control, this file is meant to be put under # version control, like the configure.ac and various Makefile.am files. # Specification in the form of a command-line invocation: # gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files autobuild fdl-1.3 gendocs getopt-gnu gettime gnupload maintainer-makefile manywarnings pmccabe2html progname read-file stdint update-copyright valgrind-tests version-etc-fsf warnings # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([gl/override]) gl_MODULES([ autobuild fdl-1.3 gendocs getopt-gnu gettime gnupload maintainer-makefile manywarnings pmccabe2html progname read-file stdint update-copyright valgrind-tests version-etc-fsf warnings ]) gl_AVOID([]) gl_SOURCE_BASE([gl]) gl_M4_BASE([gl/m4]) gl_PO_BASE([]) gl_DOC_BASE([doc]) gl_TESTS_BASE([tests]) gl_LIB([libgnu]) gl_MAKEFILE_NAME([]) gl_LIBTOOL gl_MACRO_PREFIX([gl]) gl_PO_DOMAIN([]) gl_WITNESS_C_MACRO([]) gl_VC_FILES([false]) libtasn1-3.4/gl/m4/getopt.m40000664000000000000000000003013412244720630012455 00000000000000# getopt.m4 serial 44 dnl Copyright (C) 2002-2006, 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Request a POSIX compliant getopt function. AC_DEFUN([gl_FUNC_GETOPT_POSIX], [ m4_divert_text([DEFAULTS], [gl_getopt_required=POSIX]) AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([gl_GETOPT_CHECK_HEADERS]) dnl Other modules can request the gnulib implementation of the getopt dnl functions unconditionally, by defining gl_REPLACE_GETOPT_ALWAYS. dnl argp.m4 does this. m4_ifdef([gl_REPLACE_GETOPT_ALWAYS], [ REPLACE_GETOPT=1 ], [ REPLACE_GETOPT=0 if test -n "$gl_replace_getopt"; then REPLACE_GETOPT=1 fi ]) if test $REPLACE_GETOPT = 1; then dnl Arrange for getopt.h to be created. gl_GETOPT_SUBSTITUTE_HEADER fi ]) # Request a POSIX compliant getopt function with GNU extensions (such as # options with optional arguments) and the functions getopt_long, # getopt_long_only. AC_DEFUN([gl_FUNC_GETOPT_GNU], [ m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU]) AC_REQUIRE([gl_FUNC_GETOPT_POSIX]) ]) # Determine whether to replace the entire getopt facility. AC_DEFUN([gl_GETOPT_CHECK_HEADERS], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_REQUIRE([AC_PROG_AWK]) dnl for awk that supports ENVIRON dnl Persuade Solaris to declare optarg, optind, opterr, optopt. AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) gl_CHECK_NEXT_HEADERS([getopt.h]) if test $ac_cv_header_getopt_h = yes; then HAVE_GETOPT_H=1 else HAVE_GETOPT_H=0 fi AC_SUBST([HAVE_GETOPT_H]) gl_replace_getopt= dnl Test whether is available. if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CHECK_HEADERS([getopt.h], [], [gl_replace_getopt=yes]) fi dnl Test whether the function getopt_long is available. if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CHECK_FUNCS([getopt_long_only], [], [gl_replace_getopt=yes]) fi dnl POSIX 2008 does not specify leading '+' behavior, but see dnl http://austingroupbugs.net/view.php?id=191 for a recommendation on dnl the next version of POSIX. For now, we only guarantee leading '+' dnl behavior with getopt-gnu. if test -z "$gl_replace_getopt"; then AC_CACHE_CHECK([whether getopt is POSIX compatible], [gl_cv_func_getopt_posix], [ dnl Merging these three different test programs into a single one dnl would require a reset mechanism. On BSD systems, it can be done dnl through 'optreset'; on some others (glibc), it can be done by dnl setting 'optind' to 0; on others again (HP-UX, IRIX, OSF/1, dnl Solaris 9, musl libc), there is no such mechanism. if test $cross_compiling = no; then dnl Sanity check. Succeeds everywhere (except on MSVC, dnl which lacks and getopt() entirely). AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char a[] = "-a"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, a, foo, bar, NULL }; int c; c = getopt (4, argv, "ab"); if (!(c == 'a')) return 1; c = getopt (4, argv, "ab"); if (!(c == -1)) return 2; if (!(optind == 2)) return 3; return 0; } ]])], [gl_cv_func_getopt_posix=maybe], [gl_cv_func_getopt_posix=no]) if test $gl_cv_func_getopt_posix = maybe; then dnl Sanity check with '+'. Succeeds everywhere (except on MSVC, dnl which lacks and getopt() entirely). AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char donald[] = "donald"; static char p[] = "-p"; static char billy[] = "billy"; static char duck[] = "duck"; static char a[] = "-a"; static char bar[] = "bar"; char *argv[] = { program, donald, p, billy, duck, a, bar, NULL }; int c; c = getopt (7, argv, "+abp:q:"); if (!(c == -1)) return 4; if (!(strcmp (argv[0], "program") == 0)) return 5; if (!(strcmp (argv[1], "donald") == 0)) return 6; if (!(strcmp (argv[2], "-p") == 0)) return 7; if (!(strcmp (argv[3], "billy") == 0)) return 8; if (!(strcmp (argv[4], "duck") == 0)) return 9; if (!(strcmp (argv[5], "-a") == 0)) return 10; if (!(strcmp (argv[6], "bar") == 0)) return 11; if (!(optind == 1)) return 12; return 0; } ]])], [gl_cv_func_getopt_posix=maybe], [gl_cv_func_getopt_posix=no]) fi if test $gl_cv_func_getopt_posix = maybe; then dnl Detect Mac OS X 10.5, AIX 7.1, mingw bug. AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include #include #include int main () { static char program[] = "program"; static char ab[] = "-ab"; char *argv[3] = { program, ab, NULL }; if (getopt (2, argv, "ab:") != 'a') return 13; if (getopt (2, argv, "ab:") != '?') return 14; if (optopt != 'b') return 15; if (optind != 2) return 16; return 0; } ]])], [gl_cv_func_getopt_posix=yes], [gl_cv_func_getopt_posix=no]) fi else case "$host_os" in darwin* | aix* | mingw*) gl_cv_func_getopt_posix="guessing no";; *) gl_cv_func_getopt_posix="guessing yes";; esac fi ]) case "$gl_cv_func_getopt_posix" in *no) gl_replace_getopt=yes ;; esac fi if test -z "$gl_replace_getopt" && test $gl_getopt_required = GNU; then AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_getopt_gnu], [# Even with POSIXLY_CORRECT, the GNU extension of leading '-' in the # optstring is necessary for programs like m4 that have POSIX-mandated # semantics for supporting options interspersed with files. # Also, since getopt_long is a GNU extension, we require optind=0. # Bash ties 'set -o posix' to a non-exported POSIXLY_CORRECT; # so take care to revert to the correct (non-)export state. dnl GNU Coding Standards currently allow awk but not env; besides, env dnl is ambiguous with environment values that contain newlines. gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }' case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" #include #include ]GL_NOCRASH[ ]], [[ int result = 0; nocrash_init(); /* This code succeeds on glibc 2.8, OpenBSD 4.0, Cygwin, mingw, and fails on Mac OS X 10.5, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10. */ { static char conftest[] = "conftest"; static char plus[] = "-+"; char *argv[3] = { conftest, plus, NULL }; opterr = 0; if (getopt (2, argv, "+a") != '?') result |= 1; } /* This code succeeds on glibc 2.8, mingw, and fails on Mac OS X 10.5, OpenBSD 4.0, AIX 5.2, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x. */ { static char program[] = "program"; static char p[] = "-p"; static char foo[] = "foo"; static char bar[] = "bar"; char *argv[] = { program, p, foo, bar, NULL }; optind = 1; if (getopt (4, argv, "p::") != 'p') result |= 2; else if (optarg != NULL) result |= 4; else if (getopt (4, argv, "p::") != -1) result |= 6; else if (optind != 2) result |= 8; } /* This code succeeds on glibc 2.8 and fails on Cygwin 1.7.0. */ { static char program[] = "program"; static char foo[] = "foo"; static char p[] = "-p"; char *argv[] = { program, foo, p, NULL }; optind = 0; if (getopt (3, argv, "-p") != 1) result |= 16; else if (getopt (3, argv, "-p") != 'p') result |= 16; } /* This code fails on glibc 2.11. */ { static char program[] = "program"; static char b[] = "-b"; static char a[] = "-a"; char *argv[] = { program, b, a, NULL }; optind = opterr = 0; if (getopt (3, argv, "+:a:b") != 'b') result |= 32; else if (getopt (3, argv, "+:a:b") != ':') result |= 32; } /* This code dumps core on glibc 2.14. */ { static char program[] = "program"; static char w[] = "-W"; static char dummy[] = "dummy"; char *argv[] = { program, w, dummy, NULL }; optind = opterr = 1; if (getopt (3, argv, "W;") != 'W') result |= 64; } return result; ]])], [gl_cv_func_getopt_gnu=yes], [gl_cv_func_getopt_gnu=no], [dnl Cross compiling. Assume the worst, even on glibc platforms. gl_cv_func_getopt_gnu="guessing no" ]) case $gl_had_POSIXLY_CORRECT in exported) ;; yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;; *) AS_UNSET([POSIXLY_CORRECT]) ;; esac ]) if test "$gl_cv_func_getopt_gnu" != yes; then gl_replace_getopt=yes else AC_CACHE_CHECK([for working GNU getopt_long function], [gl_cv_func_getopt_long_gnu], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include ]], [[static const struct option long_options[] = { { "xtremely-",no_argument, NULL, 1003 }, { "xtra", no_argument, NULL, 1001 }, { "xtreme", no_argument, NULL, 1002 }, { "xtremely", no_argument, NULL, 1003 }, { NULL, 0, NULL, 0 } }; /* This code fails on OpenBSD 5.0. */ { static char program[] = "program"; static char xtremel[] = "--xtremel"; char *argv[] = { program, xtremel, NULL }; int option_index; optind = 1; opterr = 0; if (getopt_long (2, argv, "", long_options, &option_index) != 1003) return 1; } return 0; ]])], [gl_cv_func_getopt_long_gnu=yes], [gl_cv_func_getopt_long_gnu=no], [dnl Cross compiling. Guess no on OpenBSD, yes otherwise. case "$host_os" in openbsd*) gl_cv_func_getopt_long_gnu="guessing no";; *) gl_cv_func_getopt_long_gnu="guessing yes";; esac ]) ]) case "$gl_cv_func_getopt_long_gnu" in *yes) ;; *) gl_replace_getopt=yes ;; esac fi fi ]) AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], [ GETOPT_H=getopt.h AC_DEFINE([__GETOPT_PREFIX], [[rpl_]], [Define to rpl_ if the getopt replacement functions and variables should be used.]) AC_SUBST([GETOPT_H]) ]) # Prerequisites of lib/getopt*. AC_DEFUN([gl_PREREQ_GETOPT], [ AC_CHECK_DECLS_ONCE([getenv]) ]) libtasn1-3.4/gl/m4/errno_h.m40000664000000000000000000000623412244720630012613 00000000000000# errno_h.m4 serial 12 dnl Copyright (C) 2004, 2006, 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], [ AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [ AC_EGREP_CPP([booboo],[ #include #if !defined ETXTBSY booboo #endif #if !defined ENOMSG booboo #endif #if !defined EIDRM booboo #endif #if !defined ENOLINK booboo #endif #if !defined EPROTO booboo #endif #if !defined EMULTIHOP booboo #endif #if !defined EBADMSG booboo #endif #if !defined EOVERFLOW booboo #endif #if !defined ENOTSUP booboo #endif #if !defined ENETRESET booboo #endif #if !defined ECONNABORTED booboo #endif #if !defined ESTALE booboo #endif #if !defined EDQUOT booboo #endif #if !defined ECANCELED booboo #endif #if !defined EOWNERDEAD booboo #endif #if !defined ENOTRECOVERABLE booboo #endif #if !defined EILSEQ booboo #endif ], [gl_cv_header_errno_h_complete=no], [gl_cv_header_errno_h_complete=yes]) ]) if test $gl_cv_header_errno_h_complete = yes; then ERRNO_H='' else gl_NEXT_HEADERS([errno.h]) ERRNO_H='errno.h' fi AC_SUBST([ERRNO_H]) AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"]) gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) gl_REPLACE_ERRNO_VALUE([ENOLINK]) gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) ]) # Assuming $1 = EOVERFLOW. # The EOVERFLOW errno value ought to be defined in , according to # POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and # some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined. # Check for the value of EOVERFLOW. # Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. AC_DEFUN([gl_REPLACE_ERRNO_VALUE], [ if test -n "$ERRNO_H"; then AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ AC_EGREP_CPP([yes],[ #include #ifdef ]$1[ yes #endif ], [gl_cv_header_errno_h_]$1[=yes], [gl_cv_header_errno_h_]$1[=no]) if test $gl_cv_header_errno_h_]$1[ = no; then AC_EGREP_CPP([yes],[ #define _XOPEN_SOURCE_EXTENDED 1 #include #ifdef ]$1[ yes #endif ], [gl_cv_header_errno_h_]$1[=hidden]) if test $gl_cv_header_errno_h_]$1[ = hidden; then dnl The macro exists but is hidden. dnl Define it to the same value. AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [ #define _XOPEN_SOURCE_EXTENDED 1 #include /* The following two lines are a workaround against an autoconf-2.52 bug. */ #include #include ]) fi fi ]) case $gl_cv_header_errno_h_]$1[ in yes | no) ]$1[_HIDDEN=0; ]$1[_VALUE= ;; *) ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1[" ;; esac AC_SUBST($1[_HIDDEN]) AC_SUBST($1[_VALUE]) fi ]) dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. dnl Remove this when we can assume autoconf >= 2.61. m4_ifdef([AC_COMPUTE_INT], [], [ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) ]) libtasn1-3.4/gl/m4/stdint.m40000664000000000000000000003701412244720630012464 00000000000000# stdint.m4 serial 43 dnl Copyright (C) 2001-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert and Bruno Haible. dnl Test whether is supported or must be substituted. AC_DEFUN_ONCE([gl_STDINT_H], [ AC_PREREQ([2.59])dnl dnl Check for long long int and unsigned long long int. AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) if test $ac_cv_type_long_long_int = yes; then HAVE_LONG_LONG_INT=1 else HAVE_LONG_LONG_INT=0 fi AC_SUBST([HAVE_LONG_LONG_INT]) AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) if test $ac_cv_type_unsigned_long_long_int = yes; then HAVE_UNSIGNED_LONG_LONG_INT=1 else HAVE_UNSIGNED_LONG_LONG_INT=0 fi AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT]) dnl Check for , in the same way as gl_WCHAR_H does. AC_CHECK_HEADERS_ONCE([wchar.h]) if test $ac_cv_header_wchar_h = yes; then HAVE_WCHAR_H=1 else HAVE_WCHAR_H=0 fi AC_SUBST([HAVE_WCHAR_H]) dnl Check for . dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h. if test $ac_cv_header_inttypes_h = yes; then HAVE_INTTYPES_H=1 else HAVE_INTTYPES_H=0 fi AC_SUBST([HAVE_INTTYPES_H]) dnl Check for . dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h. if test $ac_cv_header_sys_types_h = yes; then HAVE_SYS_TYPES_H=1 else HAVE_SYS_TYPES_H=0 fi AC_SUBST([HAVE_SYS_TYPES_H]) gl_CHECK_NEXT_HEADERS([stdint.h]) if test $ac_cv_header_stdint_h = yes; then HAVE_STDINT_H=1 else HAVE_STDINT_H=0 fi AC_SUBST([HAVE_STDINT_H]) dnl Now see whether we need a substitute . if test $ac_cv_header_stdint_h = yes; then AC_CACHE_CHECK([whether stdint.h conforms to C99], [gl_cv_header_working_stdint_h], [gl_cv_header_working_stdint_h=no AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in . */ #if !(defined WCHAR_MIN && defined WCHAR_MAX) #error "WCHAR_MIN, WCHAR_MAX not defined in " #endif ] gl_STDINT_INCLUDES [ #ifdef INT8_MAX int8_t a1 = INT8_MAX; int8_t a1min = INT8_MIN; #endif #ifdef INT16_MAX int16_t a2 = INT16_MAX; int16_t a2min = INT16_MIN; #endif #ifdef INT32_MAX int32_t a3 = INT32_MAX; int32_t a3min = INT32_MIN; #endif #ifdef INT64_MAX int64_t a4 = INT64_MAX; int64_t a4min = INT64_MIN; #endif #ifdef UINT8_MAX uint8_t b1 = UINT8_MAX; #else typedef int b1[(unsigned char) -1 != 255 ? 1 : -1]; #endif #ifdef UINT16_MAX uint16_t b2 = UINT16_MAX; #endif #ifdef UINT32_MAX uint32_t b3 = UINT32_MAX; #endif #ifdef UINT64_MAX uint64_t b4 = UINT64_MAX; #endif int_least8_t c1 = INT8_C (0x7f); int_least8_t c1max = INT_LEAST8_MAX; int_least8_t c1min = INT_LEAST8_MIN; int_least16_t c2 = INT16_C (0x7fff); int_least16_t c2max = INT_LEAST16_MAX; int_least16_t c2min = INT_LEAST16_MIN; int_least32_t c3 = INT32_C (0x7fffffff); int_least32_t c3max = INT_LEAST32_MAX; int_least32_t c3min = INT_LEAST32_MIN; int_least64_t c4 = INT64_C (0x7fffffffffffffff); int_least64_t c4max = INT_LEAST64_MAX; int_least64_t c4min = INT_LEAST64_MIN; uint_least8_t d1 = UINT8_C (0xff); uint_least8_t d1max = UINT_LEAST8_MAX; uint_least16_t d2 = UINT16_C (0xffff); uint_least16_t d2max = UINT_LEAST16_MAX; uint_least32_t d3 = UINT32_C (0xffffffff); uint_least32_t d3max = UINT_LEAST32_MAX; uint_least64_t d4 = UINT64_C (0xffffffffffffffff); uint_least64_t d4max = UINT_LEAST64_MAX; int_fast8_t e1 = INT_FAST8_MAX; int_fast8_t e1min = INT_FAST8_MIN; int_fast16_t e2 = INT_FAST16_MAX; int_fast16_t e2min = INT_FAST16_MIN; int_fast32_t e3 = INT_FAST32_MAX; int_fast32_t e3min = INT_FAST32_MIN; int_fast64_t e4 = INT_FAST64_MAX; int_fast64_t e4min = INT_FAST64_MIN; uint_fast8_t f1 = UINT_FAST8_MAX; uint_fast16_t f2 = UINT_FAST16_MAX; uint_fast32_t f3 = UINT_FAST32_MAX; uint_fast64_t f4 = UINT_FAST64_MAX; #ifdef INTPTR_MAX intptr_t g = INTPTR_MAX; intptr_t gmin = INTPTR_MIN; #endif #ifdef UINTPTR_MAX uintptr_t h = UINTPTR_MAX; #endif intmax_t i = INTMAX_MAX; uintmax_t j = UINTMAX_MAX; #include /* for CHAR_BIT */ #define TYPE_MINIMUM(t) \ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) #define TYPE_MAXIMUM(t) \ ((t) ((t) 0 < (t) -1 \ ? (t) -1 \ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) struct s { int check_PTRDIFF: PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) ? 1 : -1; /* Detect bug in FreeBSD 6.0 / ia64. */ int check_SIG_ATOMIC: SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) ? 1 : -1; int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1; int check_WCHAR: WCHAR_MIN == TYPE_MINIMUM (wchar_t) && WCHAR_MAX == TYPE_MAXIMUM (wchar_t) ? 1 : -1; /* Detect bug in mingw. */ int check_WINT: WINT_MIN == TYPE_MINIMUM (wint_t) && WINT_MAX == TYPE_MAXIMUM (wint_t) ? 1 : -1; /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */ int check_UINT8_C: (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1; int check_UINT16_C: (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1; /* Detect bugs in OpenBSD 3.9 stdint.h. */ #ifdef UINT8_MAX int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1; #endif #ifdef UINT16_MAX int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1; #endif #ifdef UINT32_MAX int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1; #endif #ifdef UINT64_MAX int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1; #endif int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1; int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1; int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1; int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1; int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1; int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1; int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1; int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1; int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1; int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1; int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1; }; ]])], [dnl Determine whether the various *_MIN, *_MAX macros are usable dnl in preprocessor expression. We could do it by compiling a test dnl program for each of these macros. It is faster to run a program dnl that inspects the macro expansion. dnl This detects a bug on HP-UX 11.23/ia64. AC_RUN_IFELSE([ AC_LANG_PROGRAM([[ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ #include ] gl_STDINT_INCLUDES [ #include #include #define MVAL(macro) MVAL1(macro) #define MVAL1(expression) #expression static const char *macro_values[] = { #ifdef INT8_MAX MVAL (INT8_MAX), #endif #ifdef INT16_MAX MVAL (INT16_MAX), #endif #ifdef INT32_MAX MVAL (INT32_MAX), #endif #ifdef INT64_MAX MVAL (INT64_MAX), #endif #ifdef UINT8_MAX MVAL (UINT8_MAX), #endif #ifdef UINT16_MAX MVAL (UINT16_MAX), #endif #ifdef UINT32_MAX MVAL (UINT32_MAX), #endif #ifdef UINT64_MAX MVAL (UINT64_MAX), #endif NULL }; ]], [[ const char **mv; for (mv = macro_values; *mv != NULL; mv++) { const char *value = *mv; /* Test whether it looks like a cast expression. */ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0 || strncmp (value, "((unsigned short)"/*)*/, 17) == 0 || strncmp (value, "((unsigned char)"/*)*/, 16) == 0 || strncmp (value, "((int)"/*)*/, 6) == 0 || strncmp (value, "((signed short)"/*)*/, 15) == 0 || strncmp (value, "((signed char)"/*)*/, 14) == 0) return mv - macro_values + 1; } return 0; ]])], [gl_cv_header_working_stdint_h=yes], [], [dnl When cross-compiling, assume it works. gl_cv_header_working_stdint_h=yes ]) ]) ]) fi if test "$gl_cv_header_working_stdint_h" = yes; then STDINT_H= else dnl Check for , and for dnl (used in Linux libc4 >= 4.6.7 and libc5). AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h]) if test $ac_cv_header_sys_inttypes_h = yes; then HAVE_SYS_INTTYPES_H=1 else HAVE_SYS_INTTYPES_H=0 fi AC_SUBST([HAVE_SYS_INTTYPES_H]) if test $ac_cv_header_sys_bitypes_h = yes; then HAVE_SYS_BITYPES_H=1 else HAVE_SYS_BITYPES_H=0 fi AC_SUBST([HAVE_SYS_BITYPES_H]) gl_STDINT_TYPE_PROPERTIES STDINT_H=stdint.h fi AC_SUBST([STDINT_H]) AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"]) ]) dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) dnl Determine the size of each of the given types in bits. AC_DEFUN([gl_STDINT_BITSIZEOF], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), [Define to the number of bits in type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}], [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT], [$2 #include ], [result=unknown]) eval gl_cv_bitsizeof_${gltype}=\$result ]) eval result=\$gl_cv_bitsizeof_${gltype} if test $result = unknown; then dnl Use a nonempty default, because some compilers, such as IRIX 5 cc, dnl do a syntax check even on unused #if conditions and give an error dnl on valid C code like this: dnl #if 0 dnl # if > 32 dnl # endif dnl #endif result=0 fi GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result]) eval BITSIZEOF_${GLTYPE}=\$result done m4_foreach_w([gltype], [$1], [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) ]) dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES) dnl Determine the signedness of each of the given types. dnl Define HAVE_SIGNED_TYPE if type is signed. AC_DEFUN([gl_CHECK_TYPES_SIGNED], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]), [Define to 1 if ']gltype[' is a signed integer type.])]) for gltype in $1 ; do AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([$2[ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])], result=yes, result=no) eval gl_cv_type_${gltype}_signed=\$result ]) eval result=\$gl_cv_type_${gltype}_signed GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` if test "$result" = yes; then AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1]) eval HAVE_SIGNED_${GLTYPE}=1 else eval HAVE_SIGNED_${GLTYPE}=0 fi done m4_foreach_w([gltype], [$1], [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))]) ]) dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES) dnl Determine the suffix to use for integer constants of the given types. dnl Define t_SUFFIX for each such type. AC_DEFUN([gl_INTEGER_TYPE_SUFFIX], [ dnl Use a shell loop, to avoid bloating configure, and dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into dnl config.h.in, dnl - extra AC_SUBST calls, so that the right substitutions are made. m4_foreach_w([gltype], [$1], [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX], [Define to l, ll, u, ul, ull, etc., as suitable for constants of type ']gltype['.])]) for gltype in $1 ; do AC_CACHE_CHECK([for $gltype integer literal suffix], [gl_cv_type_${gltype}_suffix], [eval gl_cv_type_${gltype}_suffix=no eval result=\$gl_cv_type_${gltype}_signed if test "$result" = yes; then glsufu= else glsufu=u fi for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do case $glsuf in '') gltype1='int';; l) gltype1='long int';; ll) gltype1='long long int';; i64) gltype1='__int64';; u) gltype1='unsigned int';; ul) gltype1='unsigned long int';; ull) gltype1='unsigned long long int';; ui64)gltype1='unsigned __int64';; esac AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([$2[ extern $gltype foo; extern $gltype1 foo;]])], [eval gl_cv_type_${gltype}_suffix=\$glsuf]) eval result=\$gl_cv_type_${gltype}_suffix test "$result" != no && break done]) GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'` eval result=\$gl_cv_type_${gltype}_suffix test "$result" = no && result= eval ${GLTYPE}_SUFFIX=\$result AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result]) done m4_foreach_w([gltype], [$1], [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])]) ]) dnl gl_STDINT_INCLUDES AC_DEFUN([gl_STDINT_INCLUDES], [[ /* BSD/OS 4.0.1 has a bug: , and must be included before . */ #include #include #if HAVE_WCHAR_H # include # include # include #endif ]]) dnl gl_STDINT_TYPE_PROPERTIES dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t dnl of interest to stdint.in.h. AC_DEFUN([gl_STDINT_TYPE_PROPERTIES], [ AC_REQUIRE([gl_MULTIARCH]) if test $APPLE_UNIVERSAL_BUILD = 0; then gl_STDINT_BITSIZEOF([ptrdiff_t size_t], [gl_STDINT_INCLUDES]) fi gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) gl_cv_type_ptrdiff_t_signed=yes gl_cv_type_size_t_signed=no if test $APPLE_UNIVERSAL_BUILD = 0; then gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t], [gl_STDINT_INCLUDES]) fi gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t], [gl_STDINT_INCLUDES]) dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99 dnl requirement that wint_t is "unchanged by default argument promotions". dnl In this case gnulib's and override wint_t. dnl Set the variable BITSIZEOF_WINT_T accordingly. if test $BITSIZEOF_WINT_T -lt 32; then BITSIZEOF_WINT_T=32 fi ]) dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. dnl Remove this when we can assume autoconf >= 2.61. m4_ifdef([AC_COMPUTE_INT], [], [ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) ]) # Hey Emacs! # Local Variables: # indent-tabs-mode: nil # End: libtasn1-3.4/gl/m4/stddef_h.m40000664000000000000000000000275512244720630012743 00000000000000dnl A placeholder for POSIX 2008 , for platforms that have issues. # stddef_h.m4 serial 4 dnl Copyright (C) 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDDEF_H], [ AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) AC_REQUIRE([gt_TYPE_WCHAR_T]) STDDEF_H= if test $gt_cv_c_wchar_t = no; then HAVE_WCHAR_T=0 STDDEF_H=stddef.h fi AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions], [gl_cv_decl_null_works], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include int test[2 * (sizeof NULL == sizeof (void *)) -1]; ]])], [gl_cv_decl_null_works=yes], [gl_cv_decl_null_works=no])]) if test $gl_cv_decl_null_works = no; then REPLACE_NULL=1 STDDEF_H=stddef.h fi AC_SUBST([STDDEF_H]) AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"]) if test -n "$STDDEF_H"; then gl_NEXT_HEADERS([stddef.h]) fi ]) AC_DEFUN([gl_STDDEF_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) ]) AC_DEFUN([gl_STDDEF_H_DEFAULTS], [ dnl Assume proper GNU behavior unless another module says otherwise. REPLACE_NULL=0; AC_SUBST([REPLACE_NULL]) HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T]) ]) libtasn1-3.4/gl/m4/extern-inline.m40000664000000000000000000000501112244720630013730 00000000000000dnl 'extern inline' a la ISO C99. dnl Copyright 2012-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_EXTERN_INLINE], [ AH_VERBATIM([extern_inline], [/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'. _GL_EXTERN_INLINE is a portable alternative to 'extern inline'. _GL_INLINE_HEADER_BEGIN contains useful stuff to put in an include file, before uses of _GL_INLINE. It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic, when FOO is an inline function in the header; see . _GL_INLINE_HEADER_END contains useful stuff to put in the same include file, after uses of _GL_INLINE. Suppress extern inline with HP-UX cc, as it appears to be broken; see . Suppress the use of extern inline on Apple's platforms, as Libc-825.25 (2012-09-19) is incompatible with it; see . Perhaps Apple will fix this some day. */ #if ((__GNUC__ \ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ : 199901L <= __STDC_VERSION__ && !defined __HP_cc) \ && !defined __APPLE__) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline #elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __APPLE__ # if __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) # else # define _GL_INLINE extern inline # endif # define _GL_EXTERN_INLINE extern #else # define _GL_INLINE static _GL_UNUSED # define _GL_EXTERN_INLINE static _GL_UNUSED #endif #if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ # define _GL_INLINE_HEADER_CONST_PRAGMA # else # define _GL_INLINE_HEADER_CONST_PRAGMA \ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") # endif # define _GL_INLINE_HEADER_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ _GL_INLINE_HEADER_CONST_PRAGMA # define _GL_INLINE_HEADER_END \ _Pragma ("GCC diagnostic pop") #else # define _GL_INLINE_HEADER_BEGIN # define _GL_INLINE_HEADER_END #endif]) ]) libtasn1-3.4/gl/m4/unistd_h.m40000664000000000000000000002143412244720630012773 00000000000000# unistd_h.m4 serial 66 dnl Copyright (C) 2006-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Simon Josefsson, Bruno Haible. AC_DEFUN([gl_UNISTD_H], [ dnl Use AC_REQUIRE here, so that the default behavior below is expanded dnl once only, before all statements that occur in other macros. AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) gl_CHECK_NEXT_HEADERS([unistd.h]) if test $ac_cv_header_unistd_h = yes; then HAVE_UNISTD_H=1 else HAVE_UNISTD_H=0 fi AC_SUBST([HAVE_UNISTD_H]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Determine WINDOWS_64_BIT_OFF_T. AC_REQUIRE([gl_TYPE_OFF_T]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #if HAVE_UNISTD_H # include #endif /* Some systems declare various items in the wrong headers. */ #if !(defined __GLIBC__ && !defined __UCLIBC__) # include # include # include # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ # include # endif #endif ]], [chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize getgroups gethostname getlogin getlogin_r getpagesize getusershell setusershell endusershell group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite readlink readlinkat rmdir sethostname sleep symlink symlinkat ttyname_r unlink unlinkat usleep]) ]) AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_UNISTD_H_DEFAULTS], [ GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR]) GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN]) GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE]) GNULIB_DUP=0; AC_SUBST([GNULIB_DUP]) GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2]) GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3]) GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON]) GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS]) GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT]) GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR]) GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT]) GNULIB_FDATASYNC=0; AC_SUBST([GNULIB_FDATASYNC]) GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC]) GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE]) GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD]) GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME]) GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE]) GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS]) GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME]) GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN]) GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R]) GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE]) GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL]) GNULIB_GROUP_MEMBER=0; AC_SUBST([GNULIB_GROUP_MEMBER]) GNULIB_ISATTY=0; AC_SUBST([GNULIB_ISATTY]) GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN]) GNULIB_LINK=0; AC_SUBST([GNULIB_LINK]) GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT]) GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK]) GNULIB_PIPE=0; AC_SUBST([GNULIB_PIPE]) GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2]) GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD]) GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE]) GNULIB_READ=0; AC_SUBST([GNULIB_READ]) GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK]) GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT]) GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR]) GNULIB_SETHOSTNAME=0; AC_SUBST([GNULIB_SETHOSTNAME]) GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP]) GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK]) GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT]) GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R]) GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING]) GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE]) GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK]) GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT]) GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP]) GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN]) HAVE_DUP2=1; AC_SUBST([HAVE_DUP2]) HAVE_DUP3=1; AC_SUBST([HAVE_DUP3]) HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS]) HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT]) HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR]) HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT]) HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC]) HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC]) HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE]) HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE]) HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS]) HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME]) HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN]) HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE]) HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER]) HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN]) HAVE_LINK=1; AC_SUBST([HAVE_LINK]) HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) HAVE_PIPE=1; AC_SUBST([HAVE_PIPE]) HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE]) HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME]) HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK]) HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT]) HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT]) HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP]) HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON]) HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR]) HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC]) HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME]) HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R]) HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE]) HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL]) HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME]) HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R]) HAVE_OS_H=0; AC_SUBST([HAVE_OS_H]) HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H]) REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN]) REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE]) REPLACE_DUP=0; AC_SUBST([REPLACE_DUP]) REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2]) REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT]) REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE]) REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME]) REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R]) REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS]) REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY]) REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN]) REPLACE_LINK=0; AC_SUBST([REPLACE_LINK]) REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) REPLACE_READ=0; AC_SUBST([REPLACE_READ]) REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R]) REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE]) UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H]) UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS]) ]) libtasn1-3.4/gl/m4/clock_time.m40000664000000000000000000000252012244720630013262 00000000000000# clock_time.m4 serial 10 dnl Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Check for clock_gettime and clock_settime, and set LIB_CLOCK_GETTIME. # For a program named, say foo, you should add a line like the following # in the corresponding Makefile.am file: # foo_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) AC_DEFUN([gl_CLOCK_TIME], [ dnl Persuade glibc and Solaris to declare these functions. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function. # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. # Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all* # programs in the package would end up linked with that potentially-shared # library, inducing unnecessary run-time overhead. LIB_CLOCK_GETTIME= AC_SUBST([LIB_CLOCK_GETTIME]) gl_saved_libs=$LIBS AC_SEARCH_LIBS([clock_gettime], [rt posix4], [test "$ac_cv_search_clock_gettime" = "none required" || LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime]) AC_CHECK_FUNCS([clock_gettime clock_settime]) LIBS=$gl_saved_libs ]) libtasn1-3.4/gl/m4/ftell.m40000664000000000000000000000100512244720630012254 00000000000000# ftell.m4 serial 3 dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FTELL], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) AC_REQUIRE([gl_FUNC_FTELLO]) dnl When ftello needs fixes, ftell needs them too. if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then REPLACE_FTELL=1 fi ]) libtasn1-3.4/gl/m4/gnulib-comp.m40000664000000000000000000003434512244720630013377 00000000000000# DO NOT EDIT! GENERATED AUTOMATICALLY! # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # # This file represents the compiled summary of the specification in # gnulib-cache.m4. It lists the computed macro invocations that need # to be invoked from configure.ac. # In projects that use version control, this file can be treated like # other built files. # This macro should be invoked from ./configure.ac, in the section # "Checks for programs", right after AC_PROG_CC, and certainly before # any checks for libraries, header files, types and library functions. AC_DEFUN([gl_EARLY], [ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace m4_pattern_allow([^gl_ES$])dnl a valid locale name m4_pattern_allow([^gl_LIBOBJS$])dnl a variable m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable AC_REQUIRE([gl_PROG_AR_RANLIB]) # Code from module autobuild: AB_INIT # Code from module clock-time: # Code from module errno: # Code from module extensions: AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Code from module extern-inline: # Code from module fdl-1.3: # Code from module fstat: # Code from module ftell: # Code from module ftello: AC_REQUIRE([AC_FUNC_FSEEKO]) # Code from module gendocs: # Code from module getopt-gnu: # Code from module getopt-posix: # Code from module gettext-h: # Code from module gettime: # Code from module gettimeofday: # Code from module gnumakefile: # Code from module gnupload: # Code from module include_next: # Code from module largefile: AC_REQUIRE([AC_SYS_LARGEFILE]) # Code from module lseek: # Code from module maintainer-makefile: # Code from module malloc-posix: # Code from module manywarnings: # Code from module msvc-inval: # Code from module msvc-nothrow: # Code from module multiarch: # Code from module nocrash: # Code from module pmccabe2html: # Code from module progname: # Code from module read-file: # Code from module realloc-posix: # Code from module snippet/_Noreturn: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: # Code from module snippet/warn-on-use: # Code from module ssize_t: # Code from module stdarg: dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode dnl for the builtin va_copy to work. With Autoconf 2.60 or later, dnl gl_PROG_CC_C99 arranges for this. With older Autoconf gl_PROG_CC_C99 dnl shouldn't hurt, though installers are on their own to set c99 mode. gl_PROG_CC_C99 # Code from module stddef: # Code from module stdint: # Code from module stdio: # Code from module stdlib: # Code from module sys_stat: # Code from module sys_time: # Code from module sys_types: # Code from module time: # Code from module timespec: # Code from module unistd: # Code from module update-copyright: # Code from module useless-if-before-free: # Code from module valgrind-tests: # Code from module vc-list-files: # Code from module version-etc: # Code from module version-etc-fsf: # Code from module warnings: ]) # This macro should be invoked from ./configure.ac, in the section # "Check for header files, types and library functions". AC_DEFUN([gl_INIT], [ AM_CONDITIONAL([GL_COND_LIBTOOL], [true]) gl_cond_libtool=true gl_m4_base='gl/m4' m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) m4_pushdef([gl_LIBSOURCES_LIST], []) m4_pushdef([gl_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='gl' gl_CLOCK_TIME gl_HEADER_ERRNO_H AC_REQUIRE([gl_EXTERN_INLINE]) gl_FUNC_FSTAT if test $REPLACE_FSTAT = 1; then AC_LIBOBJ([fstat]) gl_PREREQ_FSTAT fi gl_SYS_STAT_MODULE_INDICATOR([fstat]) gl_FUNC_FTELL if test $REPLACE_FTELL = 1; then AC_LIBOBJ([ftell]) fi gl_STDIO_MODULE_INDICATOR([ftell]) gl_FUNC_FTELLO if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then AC_LIBOBJ([ftello]) gl_PREREQ_FTELLO fi gl_STDIO_MODULE_INDICATOR([ftello]) gl_FUNC_GETOPT_GNU if test $REPLACE_GETOPT = 1; then AC_LIBOBJ([getopt]) AC_LIBOBJ([getopt1]) gl_PREREQ_GETOPT dnl Arrange for unistd.h to include getopt.h. GNULIB_GL_UNISTD_H_GETOPT=1 fi AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT]) gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu]) gl_FUNC_GETOPT_POSIX if test $REPLACE_GETOPT = 1; then AC_LIBOBJ([getopt]) AC_LIBOBJ([getopt1]) gl_PREREQ_GETOPT dnl Arrange for unistd.h to include getopt.h. GNULIB_GL_UNISTD_H_GETOPT=1 fi AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT]) AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) gl_GETTIME gl_FUNC_GETTIMEOFDAY if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then AC_LIBOBJ([gettimeofday]) gl_PREREQ_GETTIMEOFDAY fi gl_SYS_TIME_MODULE_INDICATOR([gettimeofday]) # Autoconf 2.61a.99 and earlier don't support linking a file only # in VPATH builds. But since GNUmakefile is for maintainer use # only, it does not matter if we skip the link with older autoconf. # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH # builds, so use a shell variable to bypass this. GNUmakefile=GNUmakefile m4_if(m4_version_compare([2.61a.100], m4_defn([m4_PACKAGE_VERSION])), [1], [], [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [], [GNUmakefile=$GNUmakefile])]) AC_REQUIRE([gl_LARGEFILE]) gl_FUNC_LSEEK if test $REPLACE_LSEEK = 1; then AC_LIBOBJ([lseek]) fi gl_UNISTD_MODULE_INDICATOR([lseek]) AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER], [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])]) gl_FUNC_MALLOC_POSIX if test $REPLACE_MALLOC = 1; then AC_LIBOBJ([malloc]) fi gl_STDLIB_MODULE_INDICATOR([malloc-posix]) gl_MSVC_INVAL if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then AC_LIBOBJ([msvc-inval]) fi gl_MSVC_NOTHROW if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then AC_LIBOBJ([msvc-nothrow]) fi gl_MULTIARCH AC_PATH_PROG([PMCCABE], [pmccabe], [false]) AC_CHECK_DECLS([program_invocation_name], [], [], [#include ]) AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include ]) gl_PREREQ_READ_FILE gl_FUNC_REALLOC_POSIX if test $REPLACE_REALLOC = 1; then AC_LIBOBJ([realloc]) fi gl_STDLIB_MODULE_INDICATOR([realloc-posix]) gt_TYPE_SSIZE_T gl_STDARG_H gl_STDDEF_H gl_STDINT_H gl_STDIO_H gl_STDLIB_H gl_HEADER_SYS_STAT_H AC_PROG_MKDIR_P gl_HEADER_SYS_TIME_H AC_PROG_MKDIR_P gl_SYS_TYPES_H AC_PROG_MKDIR_P gl_HEADER_TIME_H gl_TIMESPEC gl_UNISTD_H gl_VALGRIND_TESTS gl_VERSION_ETC # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || for gl_file in ]gl_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([gl_LIBSOURCES_DIR]) m4_popdef([gl_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ gl_libobjs= gl_ltlibobjs= if test -n "$gl_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gl_libobjs="$gl_libobjs $i.$ac_objext" gl_ltlibobjs="$gl_ltlibobjs $i.lo" done fi AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) ]) gltests_libdeps= gltests_ltlibdeps= m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ])) m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS])) m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) m4_pushdef([gltests_LIBSOURCES_LIST], []) m4_pushdef([gltests_LIBSOURCES_DIR], []) gl_COMMON gl_source_base='tests' changequote(,)dnl gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS changequote([, ])dnl AC_SUBST([gltests_WITNESS]) gl_module_indicator_condition=$gltests_WITNESS m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition]) gl_VALGRIND_TESTS m4_popdef([gl_MODULE_INDICATOR_CONDITION]) m4_ifval(gltests_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ || for gl_file in ]gltests_LIBSOURCES_LIST[ ; do if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2 exit 1 fi done])dnl m4_if(m4_sysval, [0], [], [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) ]) m4_popdef([gltests_LIBSOURCES_DIR]) m4_popdef([gltests_LIBSOURCES_LIST]) m4_popdef([AC_LIBSOURCES]) m4_popdef([AC_REPLACE_FUNCS]) m4_popdef([AC_LIBOBJ]) AC_CONFIG_COMMANDS_PRE([ gltests_libobjs= gltests_ltlibobjs= if test -n "$gltests_LIBOBJS"; then # Remove the extension. sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do gltests_libobjs="$gltests_libobjs $i.$ac_objext" gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" done fi AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into gl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gl_LIBOBJ], [ AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into gl_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gl_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([gl_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([gl_LIBSOURCES_DIR], [gl]) m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # Like AC_LIBOBJ, except that the module name goes # into gltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gltests_LIBOBJ], [ AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext" ]) # Like AC_REPLACE_FUNCS, except that the module name goes # into gltests_LIBOBJS instead of into LIBOBJS. AC_DEFUN([gltests_REPLACE_FUNCS], [ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)]) ]) # Like AC_LIBSOURCES, except the directory where the source file is # expected is derived from the gnulib-tool parameterization, # and alloca is special cased (for the alloca-opt module). # We could also entirely rely on EXTRA_lib..._SOURCES. AC_DEFUN([gltests_LIBSOURCES], [ m4_foreach([_gl_NAME], [$1], [ m4_if(_gl_NAME, [alloca.c], [], [ m4_define([gltests_LIBSOURCES_DIR], [tests]) m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ]) ]) ]) ]) # This macro records the list of files which have been installed by # gnulib-tool and may be removed by future gnulib-tool invocations. AC_DEFUN([gl_FILE_LIST], [ build-aux/gendocs.sh build-aux/gnupload build-aux/pmccabe.css build-aux/pmccabe2html build-aux/snippet/_Noreturn.h build-aux/snippet/arg-nonnull.h build-aux/snippet/c++defs.h build-aux/snippet/warn-on-use.h build-aux/update-copyright build-aux/useless-if-before-free build-aux/vc-list-files doc/fdl-1.3.texi doc/gendocs_template lib/errno.in.h lib/fstat.c lib/ftell.c lib/ftello.c lib/getopt.c lib/getopt.in.h lib/getopt1.c lib/getopt_int.h lib/gettext.h lib/gettime.c lib/gettimeofday.c lib/lseek.c lib/malloc.c lib/msvc-inval.c lib/msvc-inval.h lib/msvc-nothrow.c lib/msvc-nothrow.h lib/progname.c lib/progname.h lib/read-file.c lib/read-file.h lib/realloc.c lib/stdarg.in.h lib/stddef.in.h lib/stdint.in.h lib/stdio-impl.h lib/stdio.in.h lib/stdlib.in.h lib/sys_stat.in.h lib/sys_time.in.h lib/sys_types.in.h lib/time.in.h lib/timespec.c lib/timespec.h lib/unistd.c lib/unistd.in.h lib/version-etc-fsf.c lib/version-etc.c lib/version-etc.h m4/00gnulib.m4 m4/autobuild.m4 m4/clock_time.m4 m4/errno_h.m4 m4/extensions.m4 m4/extern-inline.m4 m4/fseeko.m4 m4/fstat.m4 m4/ftell.m4 m4/ftello.m4 m4/getopt.m4 m4/gettime.m4 m4/gettimeofday.m4 m4/gnulib-common.m4 m4/include_next.m4 m4/largefile.m4 m4/longlong.m4 m4/lseek.m4 m4/malloc.m4 m4/manywarnings.m4 m4/msvc-inval.m4 m4/msvc-nothrow.m4 m4/multiarch.m4 m4/nocrash.m4 m4/off_t.m4 m4/read-file.m4 m4/realloc.m4 m4/ssize_t.m4 m4/stdarg.m4 m4/stddef_h.m4 m4/stdint.m4 m4/stdio_h.m4 m4/stdlib_h.m4 m4/sys_socket_h.m4 m4/sys_stat_h.m4 m4/sys_time_h.m4 m4/sys_types_h.m4 m4/time_h.m4 m4/timespec.m4 m4/unistd_h.m4 m4/valgrind-tests.m4 m4/version-etc.m4 m4/warn-on-use.m4 m4/warnings.m4 m4/wchar_t.m4 top/GNUmakefile top/maint.mk ]) libtasn1-3.4/gl/m4/gettime.m40000664000000000000000000000072012244720630012607 00000000000000# gettime.m4 serial 8 dnl Copyright (C) 2002, 2004-2006, 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_GETTIME], [ dnl Prerequisites of lib/gettime.c. AC_REQUIRE([gl_CLOCK_TIME]) AC_REQUIRE([gl_TIMESPEC]) AC_CHECK_FUNCS_ONCE([gettimeofday nanotime]) ]) libtasn1-3.4/gl/m4/valgrind-tests.m40000664000000000000000000000221412244720630014117 00000000000000# valgrind-tests.m4 serial 3 dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # gl_VALGRIND_TESTS() # ------------------- # Check if valgrind is available, and set VALGRIND to it if available. AC_DEFUN([gl_VALGRIND_TESTS], [ AC_ARG_ENABLE(valgrind-tests, AS_HELP_STRING([--enable-valgrind-tests], [run self tests under valgrind]), [opt_valgrind_tests=$enableval], [opt_valgrind_tests=yes]) # Run self-tests under valgrind? if test "$opt_valgrind_tests" = "yes" && test "$cross_compiling" = no; then AC_CHECK_PROGS(VALGRIND, valgrind) fi OPTS="-q --error-exitcode=1 --leak-check=no" if test -n "$VALGRIND" \ && $VALGRIND $OPTS $SHELL -c 'exit 0' > /dev/null 2>&1; then opt_valgrind_tests=yes VALGRIND="$VALGRIND $OPTS" else opt_valgrind_tests=no VALGRIND= fi AC_MSG_CHECKING([whether self tests are run under valgrind]) AC_MSG_RESULT($opt_valgrind_tests) ]) libtasn1-3.4/gl/m4/autobuild.m40000664000000000000000000000201012244720630013133 00000000000000# autobuild.m4 serial 7 dnl Copyright (C) 2004, 2006-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # Usage: AB_INIT([MODE]). AC_DEFUN([AB_INIT], [ AC_REQUIRE([AC_CANONICAL_BUILD]) AC_REQUIRE([AC_CANONICAL_HOST]) if test -z "$AB_PACKAGE"; then AB_PACKAGE=${PACKAGE_NAME:-$PACKAGE} fi AC_MSG_NOTICE([autobuild project... $AB_PACKAGE]) if test -z "$AB_VERSION"; then AB_VERSION=${PACKAGE_VERSION:-$VERSION} fi AC_MSG_NOTICE([autobuild revision... $AB_VERSION]) hostname=`hostname` if test "$hostname"; then AC_MSG_NOTICE([autobuild hostname... $hostname]) fi ifelse([$1],[],,[AC_MSG_NOTICE([autobuild mode... $1])]) date=`TZ=UTC0 date +%Y%m%dT%H%M%SZ` if test "$?" != 0; then date=`date` fi if test "$date"; then AC_MSG_NOTICE([autobuild timestamp... $date]) fi ]) libtasn1-3.4/gl/m4/longlong.m40000664000000000000000000001120312244720630012766 00000000000000# longlong.m4 serial 17 dnl Copyright (C) 1999-2007, 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert. # Define HAVE_LONG_LONG_INT if 'long long int' works. # This fixes a bug in Autoconf 2.61, and can be faster # than what's in Autoconf 2.62 through 2.68. # Note: If the type 'long long int' exists but is only 32 bits large # (as on some very old compilers), HAVE_LONG_LONG_INT will not be # defined. In this case you can treat 'long long int' like 'long int'. AC_DEFUN([AC_TYPE_LONG_LONG_INT], [ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], [ac_cv_type_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int if test $ac_cv_type_long_long_int = yes; then dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. dnl If cross compiling, assume the bug is not important, since dnl nobody cross compiles for this platform as far as we know. AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[@%:@include @%:@ifndef LLONG_MAX @%:@ define HALF \ (1LL << (sizeof (long long int) * CHAR_BIT - 2)) @%:@ define LLONG_MAX (HALF - 1 + HALF) @%:@endif]], [[long long int n = 1; int i; for (i = 0; ; i++) { long long int m = n << i; if (m >> i != n) return 1; if (LLONG_MAX / 2 < m) break; } return 0;]])], [], [ac_cv_type_long_long_int=no], [:]) fi fi]) if test $ac_cv_type_long_long_int = yes; then AC_DEFINE([HAVE_LONG_LONG_INT], [1], [Define to 1 if the system has the type 'long long int'.]) fi ]) # Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. # This fixes a bug in Autoconf 2.61, and can be faster # than what's in Autoconf 2.62 through 2.68. # Note: If the type 'unsigned long long int' exists but is only 32 bits # large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT # will not be defined. In this case you can treat 'unsigned long long int' # like 'unsigned long int'. AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], [ AC_CACHE_CHECK([for unsigned long long int], [ac_cv_type_unsigned_long_long_int], [ac_cv_type_unsigned_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then AC_LINK_IFELSE( [_AC_TYPE_LONG_LONG_SNIPPET], [], [ac_cv_type_unsigned_long_long_int=no]) fi]) if test $ac_cv_type_unsigned_long_long_int = yes; then AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], [Define to 1 if the system has the type 'unsigned long long int'.]) fi ]) # Expands to a C program that can be used to test for simultaneous support # of 'long long' and 'unsigned long long'. We don't want to say that # 'long long' is available if 'unsigned long long' is not, or vice versa, # because too many programs rely on the symmetry between signed and unsigned # integer types (excluding 'bool'). AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], [ AC_LANG_PROGRAM( [[/* For now, do not test the preprocessor; as of 2007 there are too many implementations with broken preprocessors. Perhaps this can be revisited in 2012. In the meantime, code should not expect #if to work with literals wider than 32 bits. */ /* Test literals. */ long long int ll = 9223372036854775807ll; long long int nll = -9223372036854775807LL; unsigned long long int ull = 18446744073709551615ULL; /* Test constant expressions. */ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) ? 1 : -1)]; typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 ? 1 : -1)]; int i = 63;]], [[/* Test availability of runtime routines for shift and division. */ long long int llmax = 9223372036854775807ll; unsigned long long int ullmax = 18446744073709551615ull; return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) | (llmax / ll) | (llmax % ll) | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) | (ullmax / ull) | (ullmax % ull));]]) ]) libtasn1-3.4/gl/m4/sys_stat_h.m40000664000000000000000000000723612244720630013342 00000000000000# sys_stat_h.m4 serial 28 -*- Autoconf -*- dnl Copyright (C) 2006-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Eric Blake. dnl Provide a GNU-like . AC_DEFUN([gl_HEADER_SYS_STAT_H], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) dnl Check for broken stat macros. AC_REQUIRE([AC_HEADER_STAT]) gl_CHECK_NEXT_HEADERS([sys/stat.h]) dnl Ensure the type mode_t gets defined. AC_REQUIRE([AC_TYPE_MODE_T]) dnl Whether to override 'struct stat'. m4_ifdef([gl_LARGEFILE], [ AC_REQUIRE([gl_LARGEFILE]) ], [ WINDOWS_64_BIT_ST_SIZE=0 ]) AC_SUBST([WINDOWS_64_BIT_ST_SIZE]) if test $WINDOWS_64_BIT_ST_SIZE = 1; then AC_DEFINE([_GL_WINDOWS_64_BIT_ST_SIZE], [1], [Define to 1 if Gnulib overrides 'struct stat' on Windows so that struct stat.st_size becomes 64-bit.]) fi dnl Define types that are supposed to be defined in or dnl . AC_CHECK_TYPE([nlink_t], [], [AC_DEFINE([nlink_t], [int], [Define to the type of st_nlink in struct stat, or a supertype.])], [#include #include ]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[#include ]], [fchmodat fstat fstatat futimens lchmod lstat mkdirat mkfifo mkfifoat mknod mknodat stat utimensat]) ]) # gl_HEADER_SYS_STAT_H AC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_SYS_STAT_H_DEFAULTS], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR GNULIB_FCHMODAT=0; AC_SUBST([GNULIB_FCHMODAT]) GNULIB_FSTAT=0; AC_SUBST([GNULIB_FSTAT]) GNULIB_FSTATAT=0; AC_SUBST([GNULIB_FSTATAT]) GNULIB_FUTIMENS=0; AC_SUBST([GNULIB_FUTIMENS]) GNULIB_LCHMOD=0; AC_SUBST([GNULIB_LCHMOD]) GNULIB_LSTAT=0; AC_SUBST([GNULIB_LSTAT]) GNULIB_MKDIRAT=0; AC_SUBST([GNULIB_MKDIRAT]) GNULIB_MKFIFO=0; AC_SUBST([GNULIB_MKFIFO]) GNULIB_MKFIFOAT=0; AC_SUBST([GNULIB_MKFIFOAT]) GNULIB_MKNOD=0; AC_SUBST([GNULIB_MKNOD]) GNULIB_MKNODAT=0; AC_SUBST([GNULIB_MKNODAT]) GNULIB_STAT=0; AC_SUBST([GNULIB_STAT]) GNULIB_UTIMENSAT=0; AC_SUBST([GNULIB_UTIMENSAT]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_FCHMODAT=1; AC_SUBST([HAVE_FCHMODAT]) HAVE_FSTATAT=1; AC_SUBST([HAVE_FSTATAT]) HAVE_FUTIMENS=1; AC_SUBST([HAVE_FUTIMENS]) HAVE_LCHMOD=1; AC_SUBST([HAVE_LCHMOD]) HAVE_LSTAT=1; AC_SUBST([HAVE_LSTAT]) HAVE_MKDIRAT=1; AC_SUBST([HAVE_MKDIRAT]) HAVE_MKFIFO=1; AC_SUBST([HAVE_MKFIFO]) HAVE_MKFIFOAT=1; AC_SUBST([HAVE_MKFIFOAT]) HAVE_MKNOD=1; AC_SUBST([HAVE_MKNOD]) HAVE_MKNODAT=1; AC_SUBST([HAVE_MKNODAT]) HAVE_UTIMENSAT=1; AC_SUBST([HAVE_UTIMENSAT]) REPLACE_FSTAT=0; AC_SUBST([REPLACE_FSTAT]) REPLACE_FSTATAT=0; AC_SUBST([REPLACE_FSTATAT]) REPLACE_FUTIMENS=0; AC_SUBST([REPLACE_FUTIMENS]) REPLACE_LSTAT=0; AC_SUBST([REPLACE_LSTAT]) REPLACE_MKDIR=0; AC_SUBST([REPLACE_MKDIR]) REPLACE_MKFIFO=0; AC_SUBST([REPLACE_MKFIFO]) REPLACE_MKNOD=0; AC_SUBST([REPLACE_MKNOD]) REPLACE_STAT=0; AC_SUBST([REPLACE_STAT]) REPLACE_UTIMENSAT=0; AC_SUBST([REPLACE_UTIMENSAT]) ]) libtasn1-3.4/gl/m4/largefile.m40000664000000000000000000001233212244720630013105 00000000000000# Enable large files on systems where this is not the default. # Copyright 1992-1996, 1998-2013 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. # The following implementation works around a problem in autoconf <= 2.69; # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, # or configures them incorrectly in some cases. m4_version_prereq([2.70], [] ,[ # _AC_SYS_LARGEFILE_TEST_INCLUDES # ------------------------------- m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], [@%:@include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ @%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]];[]dnl ]) # _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, # CACHE-VAR, # DESCRIPTION, # PROLOGUE, [FUNCTION-BODY]) # -------------------------------------------------------- m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], [AC_CACHE_CHECK([for $1 value needed for large files], [$3], [while :; do m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( [AC_LANG_PROGRAM([$5], [$6])], [$3=no; break]) m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( [AC_LANG_PROGRAM([@%:@define $1 $2 $5], [$6])], [$3=$2; break]) $3=unknown break done]) case $$3 in #( no | unknown) ;; *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; esac rm -rf conftest*[]dnl ])# _AC_SYS_LARGEFILE_MACRO_VALUE # AC_SYS_LARGEFILE # ---------------- # By default, many hosts won't let programs access large files; # one must use special compiler options to get large-file access to work. # For more details about this brain damage please see: # http://www.unix-systems.org/version2/whatsnew/lfs20mar.html AC_DEFUN([AC_SYS_LARGEFILE], [AC_ARG_ENABLE(largefile, [ --disable-largefile omit support for large files]) if test "$enable_largefile" != no; then AC_CACHE_CHECK([for special C compiler options needed for large files], ac_cv_sys_largefile_CC, [ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) AC_COMPILE_IFELSE([], [break]) CC="$CC -n32" AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) break done CC=$ac_save_CC rm -f conftest.$ac_ext fi]) if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits, [Number of bits in a file offset, on hosts where this is settable.], [_AC_SYS_LARGEFILE_TEST_INCLUDES]) if test $ac_cv_sys_file_offset_bits = unknown; then _AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files, [Define for large files, on AIX-style hosts.], [_AC_SYS_LARGEFILE_TEST_INCLUDES]) fi AC_DEFINE([_DARWIN_USE_64_BIT_INODE], [1], [Enable large inode numbers on Mac OS X 10.5.]) fi ])# AC_SYS_LARGEFILE ])# m4_version_prereq 2.70 # Enable large files on systems where this is implemented by Gnulib, not by the # system headers. # Set the variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE if Gnulib # overrides ensure that off_t or 'struct size.st_size' are 64-bit, respectively. AC_DEFUN([gl_LARGEFILE], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in mingw*) dnl Native Windows. dnl mingw64 defines off_t to a 64-bit type already, if dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. AC_CACHE_CHECK([for 64-bit off_t], [gl_cv_type_off_t_64], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include int verify_off_t_size[sizeof (off_t) >= 8 ? 1 : -1]; ]], [[]])], [gl_cv_type_off_t_64=yes], [gl_cv_type_off_t_64=no]) ]) if test $gl_cv_type_off_t_64 = no; then WINDOWS_64_BIT_OFF_T=1 else WINDOWS_64_BIT_OFF_T=0 fi dnl But all native Windows platforms (including mingw64) have a 32-bit dnl st_size member in 'struct stat'. WINDOWS_64_BIT_ST_SIZE=1 ;; *) dnl Nothing to do on gnulib's side. dnl A 64-bit off_t is dnl - already the default on Mac OS X, FreeBSD, NetBSD, OpenBSD, IRIX, dnl OSF/1, Cygwin, dnl - enabled by _FILE_OFFSET_BITS=64 (ensured by AC_SYS_LARGEFILE) on dnl glibc, HP-UX, Solaris, dnl - enabled by _LARGE_FILES=1 (ensured by AC_SYS_LARGEFILE) on AIX, dnl - impossible to achieve on Minix 3.1.8. WINDOWS_64_BIT_OFF_T=0 WINDOWS_64_BIT_ST_SIZE=0 ;; esac ]) libtasn1-3.4/gl/m4/extensions.m40000664000000000000000000001223712244720630013356 00000000000000# serial 13 -*- Autoconf -*- # Enable extensions on systems that normally disable them. # Copyright (C) 2003, 2006-2013 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 definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS # Autoconf. Perhaps we can remove this once we can assume Autoconf # 2.70 or later everywhere, but since Autoconf mutates rapidly # enough in this area it's likely we'll need to redefine # AC_USE_SYSTEM_EXTENSIONS for quite some time. # If autoconf reports a warning # warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS # or warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS # the fix is # 1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked # but always AC_REQUIREd, # 2) to ensure that for each occurrence of # AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) # or # AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # the corresponding gnulib module description has 'extensions' among # its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS # invocation occurs in gl_EARLY, not in gl_INIT. # AC_USE_SYSTEM_EXTENSIONS # ------------------------ # Enable extensions on systems that normally disable them, # typically due to standards-conformance issues. # # Remember that #undef in AH_VERBATIM gets replaced with #define by # AC_DEFINE. The goal here is to define all known feature-enabling # macros, then, if reports of conflicts are made, disable macros that # cause problems on some platforms (such as __EXTENSIONS__). AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS], [AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl AC_BEFORE([$0], [AC_RUN_IFELSE])dnl AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=]) if test "$MINIX" = yes; then AC_DEFINE([_POSIX_SOURCE], [1], [Define to 1 if you need to in order for 'stat' and other things to work.]) AC_DEFINE([_POSIX_1_SOURCE], [2], [Define to 2 if the system does not provide POSIX.1 features except with this defined.]) AC_DEFINE([_MINIX], [1], [Define to 1 if on MINIX.]) AC_DEFINE([_NETBSD_SOURCE], [1], [Define to 1 to make NetBSD features available. MINIX 3 needs this.]) fi dnl Use a different key than __EXTENSIONS__, as that name broke existing dnl configure.ac when using autoheader 2.62. AH_VERBATIM([USE_SYSTEM_EXTENSIONS], [/* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable general extensions on OS X. */ #ifndef _DARWIN_C_SOURCE # undef _DARWIN_C_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable X/Open extensions if necessary. HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. */ #ifndef _XOPEN_SOURCE # undef _XOPEN_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif ]) AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], [ac_cv_safe_to_define___extensions__], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ # define __EXTENSIONS__ 1 ]AC_INCLUDES_DEFAULT])], [ac_cv_safe_to_define___extensions__=yes], [ac_cv_safe_to_define___extensions__=no])]) test $ac_cv_safe_to_define___extensions__ = yes && AC_DEFINE([__EXTENSIONS__]) AC_DEFINE([_ALL_SOURCE]) AC_DEFINE([_DARWIN_C_SOURCE]) AC_DEFINE([_GNU_SOURCE]) AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) AC_DEFINE([_TANDEM_SOURCE]) AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], [ac_cv_should_define__xopen_source], [ac_cv_should_define__xopen_source=no AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #include mbstate_t x;]])], [], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #define _XOPEN_SOURCE 500 #include mbstate_t x;]])], [ac_cv_should_define__xopen_source=yes])])]) test $ac_cv_should_define__xopen_source = yes && AC_DEFINE([_XOPEN_SOURCE], [500]) ])# AC_USE_SYSTEM_EXTENSIONS # gl_USE_SYSTEM_EXTENSIONS # ------------------------ # Enable extensions on systems that normally disable them, # typically due to standards-conformance issues. AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], [ dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS. dnl gnulib does not need it. But if it gets required by third-party macros dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE, dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck. AC_REQUIRE([AC_GNU_SOURCE]) AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) ]) libtasn1-3.4/gl/m4/stdio_h.m40000664000000000000000000002243312244720630012607 00000000000000# stdio_h.m4 serial 43 dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDIO_H], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) gl_NEXT_HEADERS([stdio.h]) dnl No need to create extra modules for these functions. Everyone who uses dnl likely needs them. GNULIB_FSCANF=1 gl_MODULE_INDICATOR([fscanf]) GNULIB_SCANF=1 gl_MODULE_INDICATOR([scanf]) GNULIB_FGETC=1 GNULIB_GETC=1 GNULIB_GETCHAR=1 GNULIB_FGETS=1 GNULIB_FREAD=1 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c" dnl "expected source file, required through AC_LIBSOURCES, not found". It is dnl also an optimization, to avoid performing a configure check whose result dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING dnl or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then REPLACE_STDIO_READ_FUNCS=1 AC_LIBOBJ([stdio-read]) fi ]) dnl No need to create extra modules for these functions. Everyone who uses dnl likely needs them. GNULIB_FPRINTF=1 GNULIB_PRINTF=1 GNULIB_VFPRINTF=1 GNULIB_VPRINTF=1 GNULIB_FPUTC=1 GNULIB_PUTC=1 GNULIB_PUTCHAR=1 GNULIB_FPUTS=1 GNULIB_PUTS=1 GNULIB_FWRITE=1 dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" dnl "expected source file, required through AC_LIBSOURCES, not found". It is dnl also an optimization, to avoid performing a configure check whose result dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or dnl GNULIB_SIGPIPE redundant. m4_ifdef([gl_SIGNAL_SIGPIPE], [ gl_SIGNAL_SIGPIPE if test $gl_cv_header_signal_h_SIGPIPE != yes; then REPLACE_STDIO_WRITE_FUNCS=1 AC_LIBOBJ([stdio-write]) fi ]) dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" dnl "expected source file, required through AC_LIBSOURCES, not found". It is dnl also an optimization, to avoid performing a configure check whose result dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING dnl or GNULIB_NONBLOCKING redundant. m4_ifdef([gl_NONBLOCKING_IO], [ gl_NONBLOCKING_IO if test $gl_cv_have_nonblocking != yes; then REPLACE_STDIO_WRITE_FUNCS=1 AC_LIBOBJ([stdio-write]) fi ]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by both C89 and C11. gl_WARN_ON_USE_PREPARE([[#include ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen renameat snprintf tmpfile vdprintf vsnprintf]) ]) AC_DEFUN([gl_STDIO_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_STDIO_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_STDIO_H_DEFAULTS], [ GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF]) GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE]) GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN]) GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH]) GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC]) GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS]) GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN]) GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF]) GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX]) GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE]) GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC]) GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS]) GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD]) GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN]) GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF]) GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK]) GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO]) GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL]) GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO]) GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE]) GNULIB_GETC=0; AC_SUBST([GNULIB_GETC]) GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR]) GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM]) GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE]) GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF]) GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX]) GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE]) GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR]) GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN]) GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF]) GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX]) GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC]) GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR]) GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS]) GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE]) GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME]) GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT]) GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF]) GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF]) GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX]) GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING]) GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE]) GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE]) GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF]) GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF]) GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF]) GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF]) GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF]) GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX]) GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF]) GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX]) GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF]) GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE]) HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO]) HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO]) HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM]) HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE]) HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF]) HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF]) HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF]) HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF]) HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO]) HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO]) HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE]) HAVE_POPEN=1; AC_SUBST([HAVE_POPEN]) HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT]) HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF]) HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF]) REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF]) REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE]) REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN]) REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH]) REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN]) REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF]) REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE]) REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN]) REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK]) REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO]) REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL]) REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO]) REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM]) REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE]) REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF]) REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR]) REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN]) REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF]) REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE]) REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME]) REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT]) REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF]) REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF]) REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS]) REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS]) REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE]) REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF]) REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF]) REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF]) REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF]) REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF]) REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF]) ]) libtasn1-3.4/gl/m4/fseeko.m40000664000000000000000000000435512244720630012435 00000000000000# fseeko.m4 serial 16 dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FSEEKO], [ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) AC_REQUIRE([gl_STDIN_LARGE_OFFSET]) AC_REQUIRE([gl_SYS_TYPES_H]) AC_REQUIRE([AC_PROG_CC]) dnl Persuade glibc to declare fseeko(). AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) AC_CACHE_CHECK([for fseeko], [gl_cv_func_fseeko], [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [fseeko (stdin, 0, 0);])], [gl_cv_func_fseeko=yes], [gl_cv_func_fseeko=no]) ]) AC_CHECK_DECLS_ONCE([fseeko]) if test $ac_cv_have_decl_fseeko = no; then HAVE_DECL_FSEEKO=0 fi if test $gl_cv_func_fseeko = no; then HAVE_FSEEKO=0 else if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_FSEEKO=1 fi if test $gl_cv_var_stdin_large_offset = no; then REPLACE_FSEEKO=1 fi m4_ifdef([gl_FUNC_FFLUSH_STDIN], [ gl_FUNC_FFLUSH_STDIN if test $gl_cv_func_fflush_stdin = no; then REPLACE_FSEEKO=1 fi ]) fi ]) dnl Code shared by fseeko and ftello. Determine if large files are supported, dnl but stdin does not start as a large file by default. AC_DEFUN([gl_STDIN_LARGE_OFFSET], [ AC_CACHE_CHECK([whether stdin defaults to large file offsets], [gl_cv_var_stdin_large_offset], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[#if defined __SL64 && defined __SCLE /* cygwin */ /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making fseeko/ftello needlessly fail. This bug was fixed in 1.5.25, and it is easier to do a version check than building a runtime test. */ # include # if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25) choke me # endif #endif]])], [gl_cv_var_stdin_large_offset=yes], [gl_cv_var_stdin_large_offset=no])]) ]) # Prerequisites of lib/fseeko.c. AC_DEFUN([gl_PREREQ_FSEEKO], [ dnl Native Windows has the function _fseeki64. mingw hides it, but mingw64 dnl makes it usable again. AC_CHECK_FUNCS([_fseeki64]) ]) libtasn1-3.4/gl/m4/multiarch.m40000664000000000000000000000367412244720630013154 00000000000000# multiarch.m4 serial 7 dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Determine whether the compiler is or may be producing universal binaries. # # On Mac OS X 10.5 and later systems, the user can create libraries and # executables that work on multiple system types--known as "fat" or # "universal" binaries--by specifying multiple '-arch' options to the # compiler but only a single '-arch' option to the preprocessor. Like # this: # # ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ # CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ # CPP="gcc -E" CXXCPP="g++ -E" # # Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly. AC_DEFUN_ONCE([gl_MULTIARCH], [ dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN. gl_cv_c_multiarch=no AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; ]])], [ dnl Check for potential -arch flags. It is not universal unless dnl there are at least two -arch flags with different values. arch= prev= for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do if test -n "$prev"; then case $word in i?86 | x86_64 | ppc | ppc64) if test -z "$arch" || test "$arch" = "$word"; then arch="$word" else gl_cv_c_multiarch=yes fi ;; esac prev= else if test "x$word" = "x-arch"; then prev=arch fi fi done ]) if test $gl_cv_c_multiarch = yes; then APPLE_UNIVERSAL_BUILD=1 else APPLE_UNIVERSAL_BUILD=0 fi AC_SUBST([APPLE_UNIVERSAL_BUILD]) ]) libtasn1-3.4/gl/m4/realloc.m40000664000000000000000000000475312244720630012604 00000000000000# realloc.m4 serial 13 dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. m4_version_prereq([2.70], [] ,[ # This is taken from the following Autoconf patch: # http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9 AC_DEFUN([_AC_FUNC_REALLOC_IF], [ AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles AC_CHECK_HEADERS([stdlib.h]) AC_CACHE_CHECK([for GNU libc compatible realloc], [ac_cv_func_realloc_0_nonnull], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *realloc (); #endif ]], [[return ! realloc (0, 0);]]) ], [ac_cv_func_realloc_0_nonnull=yes], [ac_cv_func_realloc_0_nonnull=no], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* \ | hpux* | solaris* | cygwin* | mingw*) ac_cv_func_realloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_realloc_0_nonnull=no ;; esac ]) ]) AS_IF([test $ac_cv_func_realloc_0_nonnull = yes], [$1], [$2]) ])# AC_FUNC_REALLOC ]) # gl_FUNC_REALLOC_GNU # ------------------- # Test whether 'realloc (0, 0)' is handled like in GNU libc, and replace # realloc if it is not. AC_DEFUN([gl_FUNC_REALLOC_GNU], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) dnl _AC_FUNC_REALLOC_IF is defined in Autoconf. _AC_FUNC_REALLOC_IF( [AC_DEFINE([HAVE_REALLOC_GNU], [1], [Define to 1 if your system has a GNU libc compatible 'realloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_REALLOC_GNU], [0]) REPLACE_REALLOC=1 ]) ])# gl_FUNC_REALLOC_GNU # gl_FUNC_REALLOC_POSIX # --------------------- # Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it # fails), and replace realloc if it is not. AC_DEFUN([gl_FUNC_REALLOC_POSIX], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) if test $gl_cv_func_malloc_posix = yes; then AC_DEFINE([HAVE_REALLOC_POSIX], [1], [Define if the 'realloc' function is POSIX compliant.]) else REPLACE_REALLOC=1 fi ]) libtasn1-3.4/gl/m4/00gnulib.m40000664000000000000000000000252212244720630012573 00000000000000# 00gnulib.m4 serial 2 dnl Copyright (C) 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This file must be named something that sorts before all other dnl gnulib-provided .m4 files. It is needed until such time as we can dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE semantics. # AC_DEFUN_ONCE([NAME], VALUE) # ---------------------------- # Define NAME to expand to VALUE on the first use (whether by direct # expansion, or by AC_REQUIRE), and to nothing on all subsequent uses. # Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This # definition is slower than the version in Autoconf 2.64, because it # can only use interfaces that existed since 2.59; but it achieves the # same effect. Quoting is necessary to avoid confusing Automake. m4_version_prereq([2.63.263], [], [m4_define([AC][_DEFUN_ONCE], [AC][_DEFUN([$1], [AC_REQUIRE([_gl_DEFUN_ONCE([$1])], [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl [AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])]) # gl_00GNULIB # ----------- # Witness macro that this file has been included. Needed to force # Automake to include this file prior to all other gnulib .m4 files. AC_DEFUN([gl_00GNULIB]) libtasn1-3.4/gl/m4/off_t.m40000664000000000000000000000100612244720630012244 00000000000000# off_t.m4 serial 1 dnl Copyright (C) 2012-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Check whether to override the 'off_t' type. dnl Set WINDOWS_64_BIT_OFF_T. AC_DEFUN([gl_TYPE_OFF_T], [ m4_ifdef([gl_LARGEFILE], [ AC_REQUIRE([gl_LARGEFILE]) ], [ WINDOWS_64_BIT_OFF_T=0 ]) AC_SUBST([WINDOWS_64_BIT_OFF_T]) ]) libtasn1-3.4/gl/m4/gnulib-common.m40000664000000000000000000003332112244720630013722 00000000000000# gnulib-common.m4 serial 33 dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # gl_COMMON # is expanded unconditionally through gnulib-tool magic. AC_DEFUN([gl_COMMON], [ dnl Use AC_REQUIRE here, so that the code is expanded once only. AC_REQUIRE([gl_00GNULIB]) AC_REQUIRE([gl_COMMON_BODY]) ]) AC_DEFUN([gl_COMMON_BODY], [ AH_VERBATIM([_Noreturn], [/* The _Noreturn keyword of C11. */ #if ! (defined _Noreturn \ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif ]) AH_VERBATIM([isoc99_inline], [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. __APPLE__ && __MACH__ test for Mac OS X. __APPLE_CC__ tests for the Apple compiler and its version. __STDC_VERSION__ tests for the C99 mode. */ #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ # define __GNUC_STDC_INLINE__ 1 #endif]) AH_VERBATIM([unused_parameter], [/* Define as a marker that can be attached to declarations that might not be used. This helps to reduce warnings, such as from GCC -Wunused-parameter. */ #if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_UNUSED __attribute__ ((__unused__)) #else # define _GL_UNUSED #endif /* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name is a misnomer outside of parameter lists. */ #define _UNUSED_PARAMETER_ _GL_UNUSED /* The __pure__ attribute was added in gcc 2.96. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) #else # define _GL_ATTRIBUTE_PURE /* empty */ #endif /* The __const__ attribute was added in gcc 2.95. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) #else # define _GL_ATTRIBUTE_CONST /* empty */ #endif ]) dnl Preparation for running test programs: dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not dnl to /dev/tty, so they can be redirected to log files. Such diagnostics dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. LIBC_FATAL_STDERR_=1 export LIBC_FATAL_STDERR_ ]) # gl_MODULE_INDICATOR_CONDITION # expands to a C preprocessor expression that evaluates to 1 or 0, depending # whether a gnulib module that has been requested shall be considered present # or not. m4_define([gl_MODULE_INDICATOR_CONDITION], [1]) # gl_MODULE_INDICATOR_SET_VARIABLE([modulename]) # sets the shell variable that indicates the presence of the given module to # a C preprocessor expression that will evaluate to 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], [ gl_MODULE_INDICATOR_SET_VARIABLE_AUX( [GNULIB_[]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], [gl_MODULE_INDICATOR_CONDITION]) ]) # gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable]) # modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION. # The shell variable's value is a C preprocessor expression that evaluates # to 0 or 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX], [ m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1], [ dnl Simplify the expression VALUE || 1 to 1. $1=1 ], [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1], [gl_MODULE_INDICATOR_CONDITION])]) ]) # gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition]) # modifies the shell variable to include the given condition. The shell # variable's value is a C preprocessor expression that evaluates to 0 or 1. AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR], [ dnl Simplify the expression 1 || CONDITION to 1. if test "$[]$1" != 1; then dnl Simplify the expression 0 || CONDITION to CONDITION. if test "$[]$1" = 0; then $1=$2 else $1="($[]$1 || $2)" fi fi ]) # gl_MODULE_INDICATOR([modulename]) # defines a C macro indicating the presence of the given module # in a location where it can be used. # | Value | Value | # | in lib/ | in tests/ | # --------------------------------------------+---------+-----------+ # Module present among main modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module present among tests-related modules: | 0 | 1 | # --------------------------------------------+---------+-----------+ # Module not present at all: | 0 | 0 | # --------------------------------------------+---------+-----------+ AC_DEFUN([gl_MODULE_INDICATOR], [ AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [gl_MODULE_INDICATOR_CONDITION], [Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module $1 shall be considered present.]) ]) # gl_MODULE_INDICATOR_FOR_TESTS([modulename]) # defines a C macro indicating the presence of the given module # in lib or tests. This is useful to determine whether the module # should be tested. # | Value | Value | # | in lib/ | in tests/ | # --------------------------------------------+---------+-----------+ # Module present among main modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module present among tests-related modules: | 1 | 1 | # --------------------------------------------+---------+-----------+ # Module not present at all: | 0 | 0 | # --------------------------------------------+---------+-----------+ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [ AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]], [abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], [Define to 1 when the gnulib module $1 should be tested.]) ]) # gl_ASSERT_NO_GNULIB_POSIXCHECK # asserts that there will never be a need to #define GNULIB_POSIXCHECK. # and thereby enables an optimization of configure and config.h. # Used by Emacs. AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK], [ dnl Override gl_WARN_ON_USE_PREPARE. dnl But hide this definition from 'aclocal'. AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], []) ]) # gl_ASSERT_NO_GNULIB_TESTS # asserts that there will be no gnulib tests in the scope of the configure.ac # and thereby enables an optimization of config.h. # Used by Emacs. AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS], [ dnl Override gl_MODULE_INDICATOR_FOR_TESTS. AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], []) ]) # Test whether exists. # Set HAVE_FEATURES_H. AC_DEFUN([gl_FEATURES_H], [ AC_CHECK_HEADERS_ONCE([features.h]) if test $ac_cv_header_features_h = yes; then HAVE_FEATURES_H=1 else HAVE_FEATURES_H=0 fi AC_SUBST([HAVE_FEATURES_H]) ]) # m4_foreach_w # is a backport of autoconf-2.59c's m4_foreach_w. # Remove this macro when we can assume autoconf >= 2.60. m4_ifndef([m4_foreach_w], [m4_define([m4_foreach_w], [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])]) # AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH]) # ---------------------------------------------------- # Backport of autoconf-2.63b's macro. # Remove this macro when we can assume autoconf >= 2.64. m4_ifndef([AS_VAR_IF], [m4_define([AS_VAR_IF], [AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])]) # gl_PROG_CC_C99 # Modifies the value of the shell variable CC in an attempt to make $CC # understand ISO C99 source code. # This is like AC_PROG_CC_C99, except that # - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60, # - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC # , # but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99 # . # Remaining problems: # - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options # to CC twice # . # - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard. AC_DEFUN([gl_PROG_CC_C99], [ dnl Change that version number to the minimum Autoconf version that supports dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls. m4_version_prereq([9.0], [AC_REQUIRE([AC_PROG_CC_C99])], [AC_REQUIRE([AC_PROG_CC_STDC])]) ]) # gl_PROG_AR_RANLIB # Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler. # The user can set the variables AR, ARFLAGS, RANLIB if he wants to override # the values. AC_DEFUN([gl_PROG_AR_RANLIB], [ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler dnl as "cc", and GCC as "gcc". They have different object file formats and dnl library formats. In particular, the GNU binutils programs ar, ranlib dnl produce libraries that work only with gcc, not with cc. AC_REQUIRE([AC_PROG_CC]) AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], [ AC_EGREP_CPP([Amsterdam], [ #ifdef __ACK__ Amsterdam #endif ], [gl_cv_c_amsterdam_compiler=yes], [gl_cv_c_amsterdam_compiler=no]) ]) if test -z "$AR"; then if test $gl_cv_c_amsterdam_compiler = yes; then AR='cc -c.a' if test -z "$ARFLAGS"; then ARFLAGS='-o' fi else dnl Use the Automake-documented default values for AR and ARFLAGS, dnl but prefer ${host}-ar over ar (useful for cross-compiling). AC_CHECK_TOOL([AR], [ar], [ar]) if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi else if test -z "$ARFLAGS"; then ARFLAGS='cru' fi fi AC_SUBST([AR]) AC_SUBST([ARFLAGS]) if test -z "$RANLIB"; then if test $gl_cv_c_amsterdam_compiler = yes; then RANLIB=':' else dnl Use the ranlib program if it is available. AC_PROG_RANLIB fi fi AC_SUBST([RANLIB]) ]) # AC_PROG_MKDIR_P # is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix # for interoperability with automake-1.9.6 from autoconf-2.62. # Remove this macro when we can assume autoconf >= 2.62 or # autoconf >= 2.60 && automake >= 1.10. # AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. m4_ifndef([AC_AUTOCONF_VERSION],[ m4_ifdef([AC_PROG_MKDIR_P], [ dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed. m4_define([AC_PROG_MKDIR_P], m4_defn([AC_PROG_MKDIR_P])[ AC_SUBST([MKDIR_P])])], [ dnl For autoconf < 2.60: Backport of AC_PROG_MKDIR_P. AC_DEFUN_ONCE([AC_PROG_MKDIR_P], [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake MKDIR_P='$(mkdir_p)' AC_SUBST([MKDIR_P])])]) ]) # AC_C_RESTRICT # This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61, # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++ # works. # This definition can be removed once autoconf >= 2.62 can be assumed. # AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. m4_ifndef([AC_AUTOCONF_VERSION],[ AC_DEFUN([AC_C_RESTRICT], [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], [ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. for ac_kw in __restrict __restrict__ _Restrict restrict; do AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[typedef int * int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; }]], [[int s[1]; int * $ac_kw t = s; t[0] = 0; return foo(t)]])], [ac_cv_c_restrict=$ac_kw]) test "$ac_cv_c_restrict" != no && break done ]) AH_VERBATIM([restrict], [/* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #undef restrict /* Work around a bug in Sun C++: it does not support _Restrict, even though the corresponding Sun C compiler does, which causes "#define restrict _Restrict" in the previous line. Perhaps some future version of Sun C++ will work with _Restrict; if so, it'll probably define __RESTRICT, just as Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict #endif]) case $ac_cv_c_restrict in restrict) ;; no) AC_DEFINE([restrict], []) ;; *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; esac ]) ]) # gl_BIGENDIAN # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. # Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some # macros invoke AC_C_BIGENDIAN with arguments. AC_DEFUN([gl_BIGENDIAN], [ AC_C_BIGENDIAN ]) # gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) # is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not # output a spurious "(cached)" mark in the midst of other configure output. # This macro should be used instead of AC_CACHE_VAL when it is not surrounded # by an AC_MSG_CHECKING/AC_MSG_RESULT pair. AC_DEFUN([gl_CACHE_VAL_SILENT], [ saved_as_echo_n="$as_echo_n" as_echo_n=':' AC_CACHE_VAL([$1], [$2]) as_echo_n="$saved_as_echo_n" ]) libtasn1-3.4/gl/m4/stdlib_h.m40000664000000000000000000001310112244720630012736 00000000000000# stdlib_h.m4 serial 42 dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_STDLIB_H], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) gl_NEXT_HEADERS([stdlib.h]) dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use, and which is not dnl guaranteed by C89. gl_WARN_ON_USE_PREPARE([[#include #if HAVE_SYS_LOADAVG_H # include #endif #if HAVE_RANDOM_H # include #endif ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps posix_openpt ptsname ptsname_r random random_r realpath rpmatch secure_getenv setenv setstate setstate_r srandom srandom_r strtod strtoll strtoull unlockpt unsetenv]) ]) AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_STDLIB_H_DEFAULTS], [ GNULIB__EXIT=0; AC_SUBST([GNULIB__EXIT]) GNULIB_ATOLL=0; AC_SUBST([GNULIB_ATOLL]) GNULIB_CALLOC_POSIX=0; AC_SUBST([GNULIB_CALLOC_POSIX]) GNULIB_CANONICALIZE_FILE_NAME=0; AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME]) GNULIB_GETLOADAVG=0; AC_SUBST([GNULIB_GETLOADAVG]) GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT]) GNULIB_GRANTPT=0; AC_SUBST([GNULIB_GRANTPT]) GNULIB_MALLOC_POSIX=0; AC_SUBST([GNULIB_MALLOC_POSIX]) GNULIB_MBTOWC=0; AC_SUBST([GNULIB_MBTOWC]) GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP]) GNULIB_MKOSTEMP=0; AC_SUBST([GNULIB_MKOSTEMP]) GNULIB_MKOSTEMPS=0; AC_SUBST([GNULIB_MKOSTEMPS]) GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP]) GNULIB_MKSTEMPS=0; AC_SUBST([GNULIB_MKSTEMPS]) GNULIB_POSIX_OPENPT=0; AC_SUBST([GNULIB_POSIX_OPENPT]) GNULIB_PTSNAME=0; AC_SUBST([GNULIB_PTSNAME]) GNULIB_PTSNAME_R=0; AC_SUBST([GNULIB_PTSNAME_R]) GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV]) GNULIB_RANDOM=0; AC_SUBST([GNULIB_RANDOM]) GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R]) GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX]) GNULIB_REALPATH=0; AC_SUBST([GNULIB_REALPATH]) GNULIB_RPMATCH=0; AC_SUBST([GNULIB_RPMATCH]) GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV]) GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV]) GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD]) GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL]) GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL]) GNULIB_SYSTEM_POSIX=0; AC_SUBST([GNULIB_SYSTEM_POSIX]) GNULIB_UNLOCKPT=0; AC_SUBST([GNULIB_UNLOCKPT]) GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV]) GNULIB_WCTOMB=0; AC_SUBST([GNULIB_WCTOMB]) dnl Assume proper GNU behavior unless another module says otherwise. HAVE__EXIT=1; AC_SUBST([HAVE__EXIT]) HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL]) HAVE_CANONICALIZE_FILE_NAME=1; AC_SUBST([HAVE_CANONICALIZE_FILE_NAME]) HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT]) HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT]) HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP]) HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP]) HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS]) HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP]) HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS]) HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT]) HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME]) HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R]) HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM]) HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H]) HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R]) HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH]) HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH]) HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV]) HAVE_SETENV=1; AC_SUBST([HAVE_SETENV]) HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV]) HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA]) HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT]) HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV]) REPLACE_CALLOC=0; AC_SUBST([REPLACE_CALLOC]) REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME]) REPLACE_MALLOC=0; AC_SUBST([REPLACE_MALLOC]) REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC]) REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP]) REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME]) REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R]) REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV]) REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R]) REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC]) REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH]) REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV]) REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD]) REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV]) REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB]) ]) libtasn1-3.4/gl/m4/warn-on-use.m40000664000000000000000000000415412244720630013331 00000000000000# warn-on-use.m4 serial 5 dnl Copyright (C) 2010-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES) # --------------------------------------- # For each whitespace-separated element in the list of NAMES, define # HAVE_RAW_DECL_name if the function has a declaration among INCLUDES # even after being undefined as a macro. # # See warn-on-use.h for some hints on how to poison function names, as # well as ideas on poisoning global variables and macros. NAMES may # include global variables, but remember that only functions work with # _GL_WARN_ON_USE. Typically, INCLUDES only needs to list a single # header, but if the replacement header pulls in other headers because # some systems declare functions in the wrong header, then INCLUDES # should do likewise. # # It is generally safe to assume declarations for functions declared # in the intersection of C89 and C11 (such as printf) without # needing gl_WARN_ON_USE_PREPARE. AC_DEFUN([gl_WARN_ON_USE_PREPARE], [ m4_foreach_w([gl_decl], [$2], [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])), [Define to 1 if ]m4_defn([gl_decl])[ is declared even after undefining macros.])])dnl dnl FIXME: gl_Symbol must be used unquoted until we can assume dnl autoconf 2.64 or newer. for gl_func in m4_flatten([$2]); do AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl AC_CACHE_CHECK([whether $gl_func is declared without a macro], gl_Symbol, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1], [@%:@undef $gl_func (void) $gl_func;])], [AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])]) AS_VAR_IF(gl_Symbol, [yes], [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) dnl shortcut - if the raw declaration exists, then set a cache dnl variable to allow skipping any later AC_CHECK_DECL efforts eval ac_cv_have_decl_$gl_func=yes]) AS_VAR_POPDEF([gl_Symbol])dnl done ]) libtasn1-3.4/gl/m4/msvc-inval.m40000664000000000000000000000133412244720630013232 00000000000000# msvc-inval.m4 serial 1 dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MSVC_INVAL], [ AC_CHECK_FUNCS_ONCE([_set_invalid_parameter_handler]) if test $ac_cv_func__set_invalid_parameter_handler = yes; then HAVE_MSVC_INVALID_PARAMETER_HANDLER=1 AC_DEFINE([HAVE_MSVC_INVALID_PARAMETER_HANDLER], [1], [Define to 1 on MSVC platforms that have the "invalid parameter handler" concept.]) else HAVE_MSVC_INVALID_PARAMETER_HANDLER=0 fi AC_SUBST([HAVE_MSVC_INVALID_PARAMETER_HANDLER]) ]) libtasn1-3.4/gl/m4/nocrash.m40000664000000000000000000001055512244720630012615 00000000000000# nocrash.m4 serial 4 dnl Copyright (C) 2005, 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Based on libsigsegv, from Bruno Haible and Paolo Bonzini. AC_PREREQ([2.13]) dnl Expands to some code for use in .c programs that will cause the configure dnl test to exit instead of crashing. This is useful to avoid triggering dnl action from a background debugger and to avoid core dumps. dnl Usage: ... dnl ]GL_NOCRASH[ dnl ... dnl int main() { nocrash_init(); ... } AC_DEFUN([GL_NOCRASH],[[ #include #if defined __MACH__ && defined __APPLE__ /* Avoid a crash on Mac OS X. */ #include #include #include #include #include #include /* The exception port on which our thread listens. */ static mach_port_t our_exception_port; /* The main function of the thread listening for exceptions of type EXC_BAD_ACCESS. */ static void * mach_exception_thread (void *arg) { /* Buffer for a message to be received. */ struct { mach_msg_header_t head; mach_msg_body_t msgh_body; char data[1024]; } msg; mach_msg_return_t retval; /* Wait for a message on the exception port. */ retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); if (retval != MACH_MSG_SUCCESS) abort (); exit (1); } static void nocrash_init (void) { mach_port_t self = mach_task_self (); /* Allocate a port on which the thread shall listen for exceptions. */ if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) == KERN_SUCCESS) { /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ if (mach_port_insert_right (self, our_exception_port, our_exception_port, MACH_MSG_TYPE_MAKE_SEND) == KERN_SUCCESS) { /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting for us. */ exception_mask_t mask = EXC_MASK_BAD_ACCESS; /* Create the thread listening on the exception port. */ pthread_attr_t attr; pthread_t thread; if (pthread_attr_init (&attr) == 0 && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { pthread_attr_destroy (&attr); /* Replace the exception port info for these exceptions with our own. Note that we replace the exception port for the entire task, not only for a particular thread. This has the effect that when our exception port gets the message, the thread specific exception port has already been asked, and we don't need to bother about it. See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ task_set_exception_ports (self, mask, our_exception_port, EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); } } } } #elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Avoid a crash on native Windows. */ #define WIN32_LEAN_AND_MEAN #include #include static LONG WINAPI exception_filter (EXCEPTION_POINTERS *ExceptionInfo) { switch (ExceptionInfo->ExceptionRecord->ExceptionCode) { case EXCEPTION_ACCESS_VIOLATION: case EXCEPTION_IN_PAGE_ERROR: case EXCEPTION_STACK_OVERFLOW: case EXCEPTION_GUARD_PAGE: case EXCEPTION_PRIV_INSTRUCTION: case EXCEPTION_ILLEGAL_INSTRUCTION: case EXCEPTION_DATATYPE_MISALIGNMENT: case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: case EXCEPTION_NONCONTINUABLE_EXCEPTION: exit (1); } return EXCEPTION_CONTINUE_SEARCH; } static void nocrash_init (void) { SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); } #else /* Avoid a crash on POSIX systems. */ #include /* A POSIX signal handler. */ static void exception_handler (int sig) { exit (1); } static void nocrash_init (void) { #ifdef SIGSEGV signal (SIGSEGV, exception_handler); #endif #ifdef SIGBUS signal (SIGBUS, exception_handler); #endif } #endif ]]) libtasn1-3.4/gl/m4/sys_socket_h.m40000664000000000000000000001416312244720630013654 00000000000000# sys_socket_h.m4 serial 23 dnl Copyright (C) 2005-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson. AC_DEFUN([gl_HEADER_SYS_SOCKET], [ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have dnl old-style declarations (with return type 'int' instead of 'ssize_t') dnl unless _POSIX_PII_SOCKET is defined. case "$host_os" in osf*) AC_DEFINE([_POSIX_PII_SOCKET], [1], [Define to 1 in order to get the POSIX compatible declarations of socket functions.]) ;; esac AC_CACHE_CHECK([whether is self-contained], [gl_cv_header_sys_socket_h_selfcontained], [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[]])], [gl_cv_header_sys_socket_h_selfcontained=yes], [gl_cv_header_sys_socket_h_selfcontained=no]) ]) if test $gl_cv_header_sys_socket_h_selfcontained = yes; then dnl If the shutdown function exists, should define dnl SHUT_RD, SHUT_WR, SHUT_RDWR. AC_CHECK_FUNCS([shutdown]) if test $ac_cv_func_shutdown = yes; then AC_CACHE_CHECK([whether defines the SHUT_* macros], [gl_cv_header_sys_socket_h_shut], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])], [gl_cv_header_sys_socket_h_shut=yes], [gl_cv_header_sys_socket_h_shut=no]) ]) if test $gl_cv_header_sys_socket_h_shut = no; then SYS_SOCKET_H='sys/socket.h' fi fi fi # We need to check for ws2tcpip.h now. gl_PREREQ_SYS_H_SOCKET AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[ /* sys/types.h is not needed according to POSIX, but the sys/socket.h in i386-unknown-freebsd4.10 and powerpc-apple-darwin5.5 required it. */ #include #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_WS2TCPIP_H #include #endif ]) if test $ac_cv_type_struct_sockaddr_storage = no; then HAVE_STRUCT_SOCKADDR_STORAGE=0 fi if test $ac_cv_type_sa_family_t = no; then HAVE_SA_FAMILY_T=0 fi if test $ac_cv_type_struct_sockaddr_storage != no; then AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family], [], [HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0], [#include #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_WS2TCPIP_H #include #endif ]) fi if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \ || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then SYS_SOCKET_H='sys/socket.h' fi gl_PREREQ_SYS_H_WINSOCK2 dnl Check for declarations of anything we want to poison if the dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ /* Some systems require prerequisite headers. */ #include #include ]], [socket connect accept bind getpeername getsockname getsockopt listen recv send recvfrom sendto setsockopt shutdown accept4]) ]) AC_DEFUN([gl_PREREQ_SYS_H_SOCKET], [ dnl Check prerequisites of the replacement. AC_REQUIRE([gl_CHECK_SOCKET_HEADERS]) gl_CHECK_NEXT_HEADERS([sys/socket.h]) if test $ac_cv_header_sys_socket_h = yes; then HAVE_SYS_SOCKET_H=1 HAVE_WS2TCPIP_H=0 else HAVE_SYS_SOCKET_H=0 if test $ac_cv_header_ws2tcpip_h = yes; then HAVE_WS2TCPIP_H=1 else HAVE_WS2TCPIP_H=0 fi fi AC_SUBST([HAVE_SYS_SOCKET_H]) AC_SUBST([HAVE_WS2TCPIP_H]) ]) # Common prerequisites of the replacement and of the # replacement. # Sets and substitutes HAVE_WINSOCK2_H. AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2], [ m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])]) m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])]) AC_CHECK_HEADERS_ONCE([sys/socket.h]) if test $ac_cv_header_sys_socket_h != yes; then dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make dnl the check for those headers unconditional; yet cygwin reports dnl that the headers are present but cannot be compiled (since on dnl cygwin, all socket information should come from sys/socket.h). AC_CHECK_HEADERS([winsock2.h]) fi if test "$ac_cv_header_winsock2_h" = yes; then HAVE_WINSOCK2_H=1 UNISTD_H_HAVE_WINSOCK2_H=1 SYS_IOCTL_H_HAVE_WINSOCK2_H=1 else HAVE_WINSOCK2_H=0 fi AC_SUBST([HAVE_WINSOCK2_H]) ]) AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR], [ dnl Use AC_REQUIRE here, so that the default settings are expanded once only. AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) gl_MODULE_INDICATOR_SET_VARIABLE([$1]) dnl Define it also as a C macro, for the benefit of the unit tests. gl_MODULE_INDICATOR_FOR_TESTS([$1]) ]) AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS], [ GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET]) GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT]) GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT]) GNULIB_BIND=0; AC_SUBST([GNULIB_BIND]) GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME]) GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME]) GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT]) GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN]) GNULIB_RECV=0; AC_SUBST([GNULIB_RECV]) GNULIB_SEND=0; AC_SUBST([GNULIB_SEND]) GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM]) GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO]) GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT]) GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN]) GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4]) HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE]) HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY]) HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T]) HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4]) ]) libtasn1-3.4/gl/m4/msvc-nothrow.m40000664000000000000000000000053012244720630013616 00000000000000# msvc-nothrow.m4 serial 1 dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_MSVC_NOTHROW], [ AC_REQUIRE([gl_MSVC_INVAL]) ]) libtasn1-3.4/gl/m4/version-etc.m40000664000000000000000000000222612244720630013412 00000000000000# version-etc.m4 serial 1 # Copyright (C) 2009-2013 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. dnl $1 - configure flag and define name dnl $2 - human readable description m4_define([gl_VERSION_ETC_FLAG], [dnl AC_ARG_WITH([$1], [AS_HELP_STRING([--with-$1], [$2])], [dnl case $withval in yes|no) ;; *) AC_DEFINE_UNQUOTED(AS_TR_CPP([PACKAGE_$1]), ["$withval"], [$2]) ;; esac ]) ]) AC_DEFUN([gl_VERSION_ETC], [dnl gl_VERSION_ETC_FLAG([packager], [String identifying the packager of this software]) gl_VERSION_ETC_FLAG([packager-version], [Packager-specific version information]) gl_VERSION_ETC_FLAG([packager-bug-reports], [Packager info for bug reports (URL/e-mail/...)]) if test "X$with_packager" = "X" && \ test "X$with_packager_version$with_packager_bug_reports" != "X" then AC_MSG_ERROR([The --with-packager-{bug-reports,version} options require --with-packager]) fi ]) libtasn1-3.4/gl/m4/stdarg.m40000664000000000000000000000540412244720630012441 00000000000000# stdarg.m4 serial 6 dnl Copyright (C) 2006, 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Provide a working va_copy in combination with . AC_DEFUN([gl_STDARG_H], [ STDARG_H='' NEXT_STDARG_H='' AC_MSG_CHECKING([for va_copy]) AC_CACHE_VAL([gl_cv_func_va_copy], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[ #ifndef va_copy void (*func) (va_list, va_list) = va_copy; #endif ]])], [gl_cv_func_va_copy=yes], [gl_cv_func_va_copy=no])]) AC_MSG_RESULT([$gl_cv_func_va_copy]) if test $gl_cv_func_va_copy = no; then dnl Provide a substitute. dnl Usually a simple definition in is enough. Not so on AIX 5 dnl with some versions of the /usr/vac/bin/cc compiler. It has an dnl which does '#undef va_copy', leading to a missing va_copy symbol. For dnl this platform, we use an substitute. But we cannot use this dnl approach on other platforms, because often defines only dnl preprocessor macros and gl_ABSOLUTE_HEADER, gl_CHECK_NEXT_HEADERS do dnl not work in this situation. AC_EGREP_CPP([vaccine], [#if defined _AIX && !defined __GNUC__ AIX vaccine #endif ], [gl_aixcc=yes], [gl_aixcc=no]) if test $gl_aixcc = yes; then dnl Provide a substitute file. STDARG_H=stdarg.h gl_NEXT_HEADERS([stdarg.h]) dnl Fallback for the case when contains only macro definitions. if test "$gl_cv_next_stdarg_h" = '""'; then gl_cv_next_stdarg_h='"///usr/include/stdarg.h"' NEXT_STDARG_H="$gl_cv_next_stdarg_h" fi else dnl Provide a substitute in , either __va_copy or as a simple dnl assignment. gl_CACHE_VAL_SILENT([gl_cv_func___va_copy], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[ #ifndef __va_copy error, bail out #endif ]])], [gl_cv_func___va_copy=yes], [gl_cv_func___va_copy=no])]) if test $gl_cv_func___va_copy = yes; then AC_DEFINE([va_copy], [__va_copy], [Define as a macro for copying va_list variables.]) else AH_VERBATIM([gl_VA_COPY], [/* A replacement for va_copy, if needed. */ #define gl_va_copy(a,b) ((a) = (b))]) AC_DEFINE([va_copy], [gl_va_copy], [Define as a macro for copying va_list variables.]) fi fi fi AC_SUBST([STDARG_H]) AM_CONDITIONAL([GL_GENERATE_STDARG_H], [test -n "$STDARG_H"]) AC_SUBST([NEXT_STDARG_H]) ]) libtasn1-3.4/gl/m4/sys_types_h.m40000664000000000000000000000121712244720630013524 00000000000000# sys_types_h.m4 serial 5 dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN_ONCE([gl_SYS_TYPES_H], [ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) gl_NEXT_HEADERS([sys/types.h]) dnl Ensure the type pid_t gets defined. AC_REQUIRE([AC_TYPE_PID_T]) dnl Ensure the type mode_t gets defined. AC_REQUIRE([AC_TYPE_MODE_T]) dnl Whether to override the 'off_t' type. AC_REQUIRE([gl_TYPE_OFF_T]) ]) AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS], [ ]) libtasn1-3.4/gl/m4/manywarnings.m40000664000000000000000000001417312244720630013675 00000000000000# manywarnings.m4 serial 5 dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR) # -------------------------------------------------- # Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR. # Elements separated by whitespace. In set logic terms, the function # does OUTVAR = LISTVAR \ REMOVEVAR. AC_DEFUN([gl_MANYWARN_COMPLEMENT], [ gl_warn_set= set x $2; shift for gl_warn_item do case " $3 " in *" $gl_warn_item "*) ;; *) gl_warn_set="$gl_warn_set $gl_warn_item" ;; esac done $1=$gl_warn_set ]) # gl_MANYWARN_ALL_GCC(VARIABLE) # ----------------------------- # Add all documented GCC warning parameters to variable VARIABLE. # Note that you need to test them using gl_WARN_ADD if you want to # make sure your gcc understands it. AC_DEFUN([gl_MANYWARN_ALL_GCC], [ dnl First, check for some issues that only occur when combining multiple dnl gcc warning categories. AC_REQUIRE([AC_PROG_CC]) if test -n "$GCC"; then dnl Check if -W -Werror -Wno-missing-field-initializers is supported dnl with the current $CC $CFLAGS $CPPFLAGS. AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported]) AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_nomfi_supported=yes], [gl_cv_cc_nomfi_supported=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_nomfi_supported]) if test "$gl_cv_cc_nomfi_supported" = yes; then dnl Now check whether -Wno-missing-field-initializers is needed dnl for the { 0, } construct. AC_MSG_CHECKING([whether -Wno-missing-field-initializers is needed]) AC_CACHE_VAL([gl_cv_cc_nomfi_needed], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -W -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[void f (void) { typedef struct { int a; int b; } s_t; s_t s1 = { 0, }; } ]], [[]])], [gl_cv_cc_nomfi_needed=no], [gl_cv_cc_nomfi_needed=yes]) CFLAGS="$gl_save_CFLAGS" ]) AC_MSG_RESULT([$gl_cv_cc_nomfi_needed]) fi dnl Next, check if -Werror -Wuninitialized is useful with the dnl user's choice of $CFLAGS; some versions of gcc warn that it dnl has no effect if -O is not also used AC_MSG_CHECKING([whether -Wuninitialized is supported]) AC_CACHE_VAL([gl_cv_cc_uninitialized_supported], [ gl_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror -Wuninitialized" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_uninitialized_supported=yes], [gl_cv_cc_uninitialized_supported=no]) CFLAGS="$gl_save_CFLAGS"]) AC_MSG_RESULT([$gl_cv_cc_uninitialized_supported]) fi # List all gcc warning categories. gl_manywarn_set= for gl_manywarn_item in \ -W \ -Wabi \ -Waddress \ -Wall \ -Warray-bounds \ -Wattributes \ -Wbad-function-cast \ -Wbuiltin-macro-redefined \ -Wcast-align \ -Wchar-subscripts \ -Wclobbered \ -Wcomment \ -Wcomments \ -Wcoverage-mismatch \ -Wcpp \ -Wdeprecated \ -Wdeprecated-declarations \ -Wdisabled-optimization \ -Wdiv-by-zero \ -Wdouble-promotion \ -Wempty-body \ -Wendif-labels \ -Wenum-compare \ -Wextra \ -Wformat-contains-nul \ -Wformat-extra-args \ -Wformat-nonliteral \ -Wformat-security \ -Wformat-y2k \ -Wformat-zero-length \ -Wformat=2 \ -Wfree-nonheap-object \ -Wignored-qualifiers \ -Wimplicit \ -Wimplicit-function-declaration \ -Wimplicit-int \ -Winit-self \ -Winline \ -Wint-to-pointer-cast \ -Winvalid-memory-model \ -Winvalid-pch \ -Wjump-misses-init \ -Wlogical-op \ -Wmain \ -Wmaybe-uninitialized \ -Wmissing-braces \ -Wmissing-declarations \ -Wmissing-field-initializers \ -Wmissing-format-attribute \ -Wmissing-include-dirs \ -Wmissing-noreturn \ -Wmissing-parameter-type \ -Wmissing-prototypes \ -Wmudflap \ -Wmultichar \ -Wnarrowing \ -Wnested-externs \ -Wnonnull \ -Wnormalized=nfc \ -Wold-style-declaration \ -Wold-style-definition \ -Woverflow \ -Woverlength-strings \ -Woverride-init \ -Wpacked \ -Wpacked-bitfield-compat \ -Wparentheses \ -Wpointer-arith \ -Wpointer-sign \ -Wpointer-to-int-cast \ -Wpragmas \ -Wreturn-type \ -Wsequence-point \ -Wshadow \ -Wsizeof-pointer-memaccess \ -Wstack-protector \ -Wstrict-aliasing \ -Wstrict-overflow \ -Wstrict-prototypes \ -Wsuggest-attribute=const \ -Wsuggest-attribute=format \ -Wsuggest-attribute=noreturn \ -Wsuggest-attribute=pure \ -Wswitch \ -Wswitch-default \ -Wsync-nand \ -Wsystem-headers \ -Wtrampolines \ -Wtrigraphs \ -Wtype-limits \ -Wuninitialized \ -Wunknown-pragmas \ -Wunreachable-code \ -Wunsafe-loop-optimizations \ -Wunused \ -Wunused-but-set-parameter \ -Wunused-but-set-variable \ -Wunused-function \ -Wunused-label \ -Wunused-local-typedefs \ -Wunused-macros \ -Wunused-parameter \ -Wunused-result \ -Wunused-value \ -Wunused-variable \ -Wvarargs \ -Wvariadic-macros \ -Wvector-operation-performance \ -Wvla \ -Wvolatile-register-var \ -Wwrite-strings \ \ ; do gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item" done # Disable specific options as needed. if test "$gl_cv_cc_nomfi_needed" = yes; then gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers" fi if test "$gl_cv_cc_uninitialized_supported" = no; then gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized" fi $1=$gl_manywarn_set ]) libtasn1-3.4/gl/m4/warnings.m40000664000000000000000000000416612244720630013011 00000000000000# warnings.m4 serial 7 dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Simon Josefsson # gl_AS_VAR_APPEND(VAR, VALUE) # ---------------------------- # Provide the functionality of AS_VAR_APPEND if Autoconf does not have it. m4_ifdef([AS_VAR_APPEND], [m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])], [m4_define([gl_AS_VAR_APPEND], [AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])]) # gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED], # [PROGRAM = AC_LANG_PROGRAM()]) # ----------------------------------------------------------------- # Check if the compiler supports OPTION when compiling PROGRAM. # # FIXME: gl_Warn must be used unquoted until we can assume Autoconf # 2.64 or newer. AC_DEFUN([gl_COMPILER_OPTION_IF], [AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], m4_defn([gl_Warn]), [ gl_save_compiler_FLAGS="$gl_Flags" gl_AS_VAR_APPEND(m4_defn([gl_Flags]), [" $1"]) AC_COMPILE_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])], [AS_VAR_SET(gl_Warn, [yes])], [AS_VAR_SET(gl_Warn, [no])]) gl_Flags="$gl_save_compiler_FLAGS" ]) AS_VAR_IF(gl_Warn, [yes], [$2], [$3]) AS_VAR_POPDEF([gl_Flags])dnl AS_VAR_POPDEF([gl_Warn])dnl ]) # gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS], # [PROGRAM = AC_LANG_PROGRAM()]) # --------------------------------------------- # Adds parameter to WARN_CFLAGS if the compiler supports it when # compiling PROGRAM. For example, gl_WARN_ADD([-Wparentheses]). # # If VARIABLE is a variable name, AC_SUBST it. AC_DEFUN([gl_WARN_ADD], [gl_COMPILER_OPTION_IF([$1], [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])], [], [$3]) m4_ifval([$2], [AS_LITERAL_IF([$2], [AC_SUBST([$2])])], [AC_SUBST([WARN_CFLAGS])])dnl ]) # Local Variables: # mode: autoconf # End: libtasn1-3.4/gl/m4/read-file.m40000664000000000000000000000055212244720630013004 00000000000000# read-file.m4 serial 3 dnl Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Prerequisites of lib/read-file.c. AC_DEFUN([gl_PREREQ_READ_FILE], [:]) libtasn1-3.4/gl/m4/include_next.m40000664000000000000000000002542412244720630013642 00000000000000# include_next.m4 serial 23 dnl Copyright (C) 2006-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Paul Eggert and Derek Price. dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER. dnl dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to dnl 'include' otherwise. dnl dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler dnl supports it in the special case that it is the first include directive in dnl the given file, or to 'include' otherwise. dnl dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next, dnl so as to avoid GCC warnings when the gcc option -pedantic is used. dnl '#pragma GCC system_header' has the same effect as if the file was found dnl through the include search path specified with '-isystem' options (as dnl opposed to the search path specified with '-I' options). Namely, gcc dnl does not warn about some things, and on some systems (Solaris and Interix) dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead dnl of plain '__STDC__'. dnl dnl PRAGMA_COLUMNS can be used in files that override system header files, so dnl as to avoid compilation errors on HP NonStop systems when the gnulib file dnl is included by a system header file that does a "#pragma COLUMNS 80" (which dnl has the effect of truncating the lines of that file and all files that it dnl includes to 80 columns) and the gnulib file has lines longer than 80 dnl columns. AC_DEFUN([gl_INCLUDE_NEXT], [ AC_LANG_PREPROC_REQUIRE() AC_CACHE_CHECK([whether the preprocessor supports include_next], [gl_cv_have_include_next], [rm -rf conftestd1a conftestd1b conftestd2 mkdir conftestd1a conftestd1b conftestd2 dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on dnl AIX 6.1 support include_next when used as first preprocessor directive dnl in a file, but not when preceded by another include directive. Check dnl for this bug by including . dnl Additionally, with this same compiler, include_next is a no-op when dnl used in a header file that was included by specifying its absolute dnl file name. Despite these two bugs, include_next is used in the dnl compiler's . By virtue of the second bug, we need to use dnl include_next as well in this case. cat < conftestd1a/conftest.h #define DEFINED_IN_CONFTESTD1 #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd1b/conftest.h #define DEFINED_IN_CONFTESTD1 #include #include_next #ifdef DEFINED_IN_CONFTESTD2 int foo; #else #error "include_next doesn't work" #endif EOF cat < conftestd2/conftest.h #ifndef DEFINED_IN_CONFTESTD1 #error "include_next test doesn't work" #endif #define DEFINED_IN_CONFTESTD2 EOF gl_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" dnl We intentionally avoid using AC_LANG_SOURCE here. AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], [gl_cv_have_include_next=yes], [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include ]], [gl_cv_have_include_next=buggy], [gl_cv_have_include_next=no]) ]) CPPFLAGS="$gl_save_CPPFLAGS" rm -rf conftestd1a conftestd1b conftestd2 ]) PRAGMA_SYSTEM_HEADER= if test $gl_cv_have_include_next = yes; then INCLUDE_NEXT=include_next INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next if test -n "$GCC"; then PRAGMA_SYSTEM_HEADER='#pragma GCC system_header' fi else if test $gl_cv_have_include_next = buggy; then INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next else INCLUDE_NEXT=include INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include fi fi AC_SUBST([INCLUDE_NEXT]) AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) AC_SUBST([PRAGMA_SYSTEM_HEADER]) AC_CACHE_CHECK([whether system header files limit the line length], [gl_cv_pragma_columns], [dnl HP NonStop systems, which define __TANDEM, have this misfeature. AC_EGREP_CPP([choke me], [ #ifdef __TANDEM choke me #endif ], [gl_cv_pragma_columns=yes], [gl_cv_pragma_columns=no]) ]) if test $gl_cv_pragma_columns = yes; then PRAGMA_COLUMNS="#pragma COLUMNS 10000" else PRAGMA_COLUMNS= fi AC_SUBST([PRAGMA_COLUMNS]) ]) # gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...) # ------------------------------------------ # For each arg foo.h, if #include_next works, define NEXT_FOO_H to be # ''; otherwise define it to be # '"///usr/include/foo.h"', or whatever other absolute file name is suitable. # Also, if #include_next works as first preprocessing directive in a file, # define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be ''; otherwise define it to # be # '"///usr/include/foo.h"', or whatever other absolute file name is suitable. # That way, a header file with the following line: # #@INCLUDE_NEXT@ @NEXT_FOO_H@ # or # #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@ # behaves (after sed substitution) as if it contained # #include_next # even if the compiler does not support include_next. # The three "///" are to pacify Sun C 5.8, which otherwise would say # "warning: #include of /usr/include/... may be non-portable". # Use '""', not '<>', so that the /// cannot be confused with a C99 comment. # Note: This macro assumes that the header file is not empty after # preprocessing, i.e. it does not only define preprocessor macros but also # provides some type/enum definitions or function/variable declarations. # # This macro also checks whether each header exists, by invoking # AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument. AC_DEFUN([gl_CHECK_NEXT_HEADERS], [ gl_NEXT_HEADERS_INTERNAL([$1], [check]) ]) # gl_NEXT_HEADERS(HEADER1 HEADER2 ...) # ------------------------------------ # Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist. # This is suitable for headers like that are standardized by C89 # and therefore can be assumed to exist. AC_DEFUN([gl_NEXT_HEADERS], [ gl_NEXT_HEADERS_INTERNAL([$1], [assume]) ]) # The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS. AC_DEFUN([gl_NEXT_HEADERS_INTERNAL], [ AC_REQUIRE([gl_INCLUDE_NEXT]) AC_REQUIRE([AC_CANONICAL_HOST]) m4_if([$2], [check], [AC_CHECK_HEADERS_ONCE([$1]) ]) dnl FIXME: gl_next_header and gl_header_exists must be used unquoted dnl until we can assume autoconf 2.64 or newer. m4_foreach_w([gl_HEADER_NAME], [$1], [AS_VAR_PUSHDEF([gl_next_header], [gl_cv_next_]m4_defn([gl_HEADER_NAME])) if test $gl_cv_have_include_next = yes; then AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) else AC_CACHE_CHECK( [absolute name of <]m4_defn([gl_HEADER_NAME])[>], m4_defn([gl_next_header]), [m4_if([$2], [check], [AS_VAR_PUSHDEF([gl_header_exists], [ac_cv_header_]m4_defn([gl_HEADER_NAME])) if test AS_VAR_GET(gl_header_exists) = yes; then AS_VAR_POPDEF([gl_header_exists]) ]) AC_LANG_CONFTEST( [AC_LANG_SOURCE( [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]] )]) dnl AIX "xlc -E" and "cc -E" omit #line directives for header dnl files that contain only a #include of other header files and dnl no non-comment tokens of their own. This leads to a failure dnl to detect the absolute name of , , dnl and others. The workaround is to force preservation dnl of comments through option -C. This ensures all necessary dnl #line directives are present. GCC supports option -C as well. case "$host_os" in aix*) gl_absname_cpp="$ac_cpp -C" ;; *) gl_absname_cpp="$ac_cpp" ;; esac changequote(,) case "$host_os" in mingw*) dnl For the sake of native Windows compilers (excluding gcc), dnl treat backslash as a directory separator, like /. dnl Actually, these compilers use a double-backslash as dnl directory separator, inside the dnl # line "filename" dnl directives. gl_dirsep_regex='[/\\]' ;; *) gl_dirsep_regex='\/' ;; esac dnl A sed expression that turns a string into a basic regular dnl expression, for use within "/.../". gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' changequote([,]) gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \ | sed -e "$gl_make_literal_regex_sed"` gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ changequote(,)dnl s|^/[^/]|//&| changequote([,])dnl p q }' dnl eval is necessary to expand gl_absname_cpp. dnl Ultrix and Pyramid sh refuse to redirect output of eval, dnl so use subshell. AS_VAR_SET(gl_next_header, ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | sed -n "$gl_absolute_header_sed"`'"']) m4_if([$2], [check], [else AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) fi ]) ]) fi AC_SUBST( AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), [AS_VAR_GET(gl_next_header)]) if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' gl_next_as_first_directive='<'gl_HEADER_NAME'>' else # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' gl_next_as_first_directive=AS_VAR_GET(gl_next_header) fi AC_SUBST( AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), [$gl_next_as_first_directive]) AS_VAR_POPDEF([gl_next_header])]) ]) # Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE; # this fallback is safe for all earlier autoconf versions. m4_define_default([AC_LANG_DEFINES_PROVIDED]) libtasn1-3.4/gl/m4/lseek.m40000664000000000000000000000436112244720630012261 00000000000000# lseek.m4 serial 10 dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_LSEEK], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_CC]) AC_CHECK_HEADERS_ONCE([unistd.h]) AC_CACHE_CHECK([whether lseek detects pipes], [gl_cv_func_lseek_pipe], [case "$host_os" in mingw*) dnl Native Windows. dnl The result of lseek (fd, (off_t)0, SEEK_CUR) or dnl SetFilePointer(handle, 0, NULL, FILE_CURRENT) dnl for a pipe depends on the environment: In a Cygwin 1.5 dnl environment it succeeds (wrong); in a Cygwin 1.7 environment dnl it fails with a wrong errno value. gl_cv_func_lseek_pipe=no ;; *) if test $cross_compiling = no; then AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include /* for off_t */ #include /* for SEEK_CUR */ #if HAVE_UNISTD_H # include #else /* on Windows with MSVC */ # include #endif ]], [[ /* Exit with success only if stdin is seekable. */ return lseek (0, (off_t)0, SEEK_CUR) < 0; ]])], [if test -s conftest$ac_exeext \ && ./conftest$ac_exeext < conftest.$ac_ext \ && test 1 = "`echo hi \ | { ./conftest$ac_exeext; echo $?; cat >/dev/null; }`"; then gl_cv_func_lseek_pipe=yes else gl_cv_func_lseek_pipe=no fi ], [gl_cv_func_lseek_pipe=no]) else AC_COMPILE_IFELSE( [AC_LANG_SOURCE([[ #if defined __BEOS__ /* BeOS mistakenly return 0 when trying to seek on pipes. */ Choke me. #endif]])], [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no]) fi ;; esac ]) if test $gl_cv_func_lseek_pipe = no; then REPLACE_LSEEK=1 AC_DEFINE([LSEEK_PIPE_BROKEN], [1], [Define to 1 if lseek does not detect pipes.]) fi AC_REQUIRE([gl_SYS_TYPES_H]) if test $WINDOWS_64_BIT_OFF_T = 1; then REPLACE_LSEEK=1 fi ]) libtasn1-3.4/gl/m4/gettimeofday.m40000664000000000000000000001172512244720630013641 00000000000000# serial 20 # Copyright (C) 2001-2003, 2005, 2007, 2009-2013 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. dnl From Jim Meyering. AC_DEFUN([gl_FUNC_GETTIMEOFDAY], [ AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([gl_HEADER_SYS_TIME_H]) AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([gettimeofday]) gl_gettimeofday_timezone=void if test $ac_cv_func_gettimeofday != yes; then HAVE_GETTIMEOFDAY=0 else gl_FUNC_GETTIMEOFDAY_CLOBBER AC_CACHE_CHECK([for gettimeofday with POSIX signature], [gl_cv_func_gettimeofday_posix_signature], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include struct timeval c; int gettimeofday (struct timeval *restrict, void *restrict); ]], [[/* glibc uses struct timezone * rather than the POSIX void * if _GNU_SOURCE is defined. However, since the only portable use of gettimeofday uses NULL as the second parameter, and since the glibc definition is actually more typesafe, it is not worth wrapping this to get a compliant signature. */ int (*f) (struct timeval *restrict, void *restrict) = gettimeofday; int x = f (&c, 0); return !(x | c.tv_sec | c.tv_usec); ]])], [gl_cv_func_gettimeofday_posix_signature=yes], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include int gettimeofday (struct timeval *restrict, struct timezone *restrict); ]])], [gl_cv_func_gettimeofday_posix_signature=almost], [gl_cv_func_gettimeofday_posix_signature=no])])]) if test $gl_cv_func_gettimeofday_posix_signature = almost; then gl_gettimeofday_timezone='struct timezone' elif test $gl_cv_func_gettimeofday_posix_signature != yes; then REPLACE_GETTIMEOFDAY=1 fi dnl If we override 'struct timeval', we also have to override gettimeofday. if test $REPLACE_STRUCT_TIMEVAL = 1; then REPLACE_GETTIMEOFDAY=1 fi m4_ifdef([gl_FUNC_TZSET_CLOBBER], [ gl_FUNC_TZSET_CLOBBER case "$gl_cv_func_tzset_clobber" in *yes) REPLACE_GETTIMEOFDAY=1 gl_GETTIMEOFDAY_REPLACE_LOCALTIME AC_DEFINE([tzset], [rpl_tzset], [Define to rpl_tzset if the wrapper function should be used.]) AC_DEFINE([TZSET_CLOBBERS_LOCALTIME], [1], [Define if tzset clobbers localtime's static buffer.]) ;; esac ]) fi AC_DEFINE_UNQUOTED([GETTIMEOFDAY_TIMEZONE], [$gl_gettimeofday_timezone], [Define this to 'void' or 'struct timezone' to match the system's declaration of the second argument to gettimeofday.]) ]) dnl See if gettimeofday clobbers the static buffer that localtime uses dnl for its return value. The gettimeofday function from Mac OS X 10.0.4 dnl (i.e., Darwin 1.3.7) has this problem. dnl dnl If it does, then arrange to use gettimeofday and localtime only via dnl the wrapper functions that work around the problem. AC_DEFUN([gl_FUNC_GETTIMEOFDAY_CLOBBER], [ AC_REQUIRE([gl_HEADER_SYS_TIME_H]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether gettimeofday clobbers localtime buffer], [gl_cv_func_gettimeofday_clobber], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include #include #include #include ]], [[ time_t t = 0; struct tm *lt; struct tm saved_lt; struct timeval tv; lt = localtime (&t); saved_lt = *lt; gettimeofday (&tv, NULL); return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0; ]])], [gl_cv_func_gettimeofday_clobber=no], [gl_cv_func_gettimeofday_clobber=yes], [# When cross-compiling: case "$host_os" in # Guess all is fine on glibc systems. *-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;; # If we don't know, assume the worst. *) gl_cv_func_gettimeofday_clobber="guessing yes" ;; esac ])]) case "$gl_cv_func_gettimeofday_clobber" in *yes) REPLACE_GETTIMEOFDAY=1 gl_GETTIMEOFDAY_REPLACE_LOCALTIME AC_DEFINE([GETTIMEOFDAY_CLOBBERS_LOCALTIME], [1], [Define if gettimeofday clobbers the localtime buffer.]) ;; esac ]) AC_DEFUN([gl_GETTIMEOFDAY_REPLACE_LOCALTIME], [ AC_DEFINE([gmtime], [rpl_gmtime], [Define to rpl_gmtime if the replacement function should be used.]) AC_DEFINE([localtime], [rpl_localtime], [Define to rpl_localtime if the replacement function should be used.]) ]) # Prerequisites of lib/gettimeofday.c. AC_DEFUN([gl_PREREQ_GETTIMEOFDAY], [ AC_CHECK_HEADERS([sys/timeb.h]) AC_CHECK_FUNCS([_ftime]) ]) libtasn1-3.4/gl/m4/malloc.m40000664000000000000000000000627612244720630012434 00000000000000# malloc.m4 serial 14 dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. m4_version_prereq([2.70], [] ,[ # This is taken from the following Autoconf patch: # http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9 AC_DEFUN([_AC_FUNC_MALLOC_IF], [ AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles AC_CHECK_HEADERS([stdlib.h]) AC_CACHE_CHECK([for GNU libc compatible malloc], [ac_cv_func_malloc_0_nonnull], [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif ]], [[return ! malloc (0);]]) ], [ac_cv_func_malloc_0_nonnull=yes], [ac_cv_func_malloc_0_nonnull=no], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* \ | hpux* | solaris* | cygwin* | mingw*) ac_cv_func_malloc_0_nonnull=yes ;; # If we don't know, assume the worst. *) ac_cv_func_malloc_0_nonnull=no ;; esac ]) ]) AS_IF([test $ac_cv_func_malloc_0_nonnull = yes], [$1], [$2]) ])# _AC_FUNC_MALLOC_IF ]) # gl_FUNC_MALLOC_GNU # ------------------ # Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if # it is not. AC_DEFUN([gl_FUNC_MALLOC_GNU], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) dnl _AC_FUNC_MALLOC_IF is defined in Autoconf. _AC_FUNC_MALLOC_IF( [AC_DEFINE([HAVE_MALLOC_GNU], [1], [Define to 1 if your system has a GNU libc compatible 'malloc' function, and to 0 otherwise.])], [AC_DEFINE([HAVE_MALLOC_GNU], [0]) REPLACE_MALLOC=1 ]) ]) # gl_FUNC_MALLOC_POSIX # -------------------- # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it # fails), and replace malloc if it is not. AC_DEFUN([gl_FUNC_MALLOC_POSIX], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) if test $gl_cv_func_malloc_posix = yes; then AC_DEFINE([HAVE_MALLOC_POSIX], [1], [Define if the 'malloc' function is POSIX compliant.]) else REPLACE_MALLOC=1 fi ]) # Test whether malloc, realloc, calloc are POSIX compliant, # Set gl_cv_func_malloc_posix to yes or no accordingly. AC_DEFUN([gl_CHECK_MALLOC_POSIX], [ AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant], [gl_cv_func_malloc_posix], [ dnl It is too dangerous to try to allocate a large amount of memory: dnl some systems go to their knees when you do that. So assume that dnl all Unix implementations of the function are POSIX compliant. AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[]], [[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ choke me #endif ]])], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no]) ]) ]) libtasn1-3.4/gl/m4/timespec.m40000664000000000000000000000051512244720630012764 00000000000000#serial 15 # Copyright (C) 2000-2001, 2003-2007, 2009-2013 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. dnl From Jim Meyering AC_DEFUN([gl_TIMESPEC], [:]) libtasn1-3.4/gl/lseek.c0000664000000000000000000000343312244720630011642 00000000000000/* An lseek() function that detects pipes. Copyright (C) 2007, 2009-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 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #include /* Specification. */ #include #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* Windows platforms. */ /* Get GetFileType. */ # include /* Get _get_osfhandle. */ # include "msvc-nothrow.h" #else # include #endif #include #undef lseek off_t rpl_lseek (int fd, off_t offset, int whence) { #if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ /* mingw lseek mistakenly succeeds on pipes, sockets, and terminals. */ HANDLE h = (HANDLE) _get_osfhandle (fd); if (h == INVALID_HANDLE_VALUE) { errno = EBADF; return -1; } if (GetFileType (h) != FILE_TYPE_DISK) { errno = ESPIPE; return -1; } #else /* BeOS lseek mistakenly succeeds on pipes... */ struct stat statbuf; if (fstat (fd, &statbuf) < 0) return -1; if (!S_ISREG (statbuf.st_mode)) { errno = ESPIPE; return -1; } #endif #if _GL_WINDOWS_64_BIT_OFF_T return _lseeki64 (fd, offset, whence); #else return lseek (fd, offset, whence); #endif } libtasn1-3.4/gl/getopt.in.h0000664000000000000000000002162112244720630012452 00000000000000/* Declarations for getopt. Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. 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 . */ #ifndef _@GUARD_PREFIX@_GETOPT_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. We must also inform the replacement unistd.h to not recursively use ; our definitions will be present soon enough. */ #if @HAVE_GETOPT_H@ # define _GL_SYSTEM_GETOPT # @INCLUDE_NEXT@ @NEXT_GETOPT_H@ # undef _GL_SYSTEM_GETOPT #endif #ifndef _@GUARD_PREFIX@_GETOPT_H #ifndef __need_getopt # define _@GUARD_PREFIX@_GETOPT_H 1 #endif /* Standalone applications should #define __GETOPT_PREFIX to an identifier that prefixes the external functions and variables defined in this header. When this happens, include the headers that might declare getopt so that they will not cause confusion if included after this file (if the system had , we have already included it). Then systematically rename identifiers so that they do not collide with the system functions and variables. Renaming avoids problems with some compilers and linkers. */ #if defined __GETOPT_PREFIX && !defined __need_getopt # if !@HAVE_GETOPT_H@ # define __need_system_stdlib_h # include # undef __need_system_stdlib_h # include # include # endif # undef __need_getopt # undef getopt # undef getopt_long # undef getopt_long_only # undef optarg # undef opterr # undef optind # undef optopt # undef option # define __GETOPT_CONCAT(x, y) x ## y # define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y) # define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y) # define getopt __GETOPT_ID (getopt) # define getopt_long __GETOPT_ID (getopt_long) # define getopt_long_only __GETOPT_ID (getopt_long_only) # define optarg __GETOPT_ID (optarg) # define opterr __GETOPT_ID (opterr) # define optind __GETOPT_ID (optind) # define optopt __GETOPT_ID (optopt) # define option __GETOPT_ID (option) # define _getopt_internal __GETOPT_ID (getopt_internal) #endif /* Standalone applications get correct prototypes for getopt_long and getopt_long_only; they declare "char **argv". libc uses prototypes with "char *const *argv" that are incorrect because getopt_long and getopt_long_only can permute argv; this is required for backward compatibility (e.g., for LSB 2.0.1). This used to be '#if defined __GETOPT_PREFIX && !defined __need_getopt', but it caused redefinition warnings if both unistd.h and getopt.h were included, since unistd.h includes getopt.h having previously defined __need_getopt. The only place where __getopt_argv_const is used is in definitions of getopt_long and getopt_long_only below, but these are visible only if __need_getopt is not defined, so it is quite safe to rewrite the conditional as follows: */ #if !defined __need_getopt # if defined __GETOPT_PREFIX # define __getopt_argv_const /* empty */ # else # define __getopt_argv_const const # endif #endif /* If __GNU_LIBRARY__ is not already defined, either we are being used standalone, or this is the first header included in the source file. If we are being used with glibc, we need to include , but that does not exist if we are standalone. So: if __GNU_LIBRARY__ is not defined, include , which will pull in for us if it's from glibc. (Why ctype.h? It's guaranteed to exist and it doesn't flood the namespace with stuff the way some other headers do.) */ #if !defined __GNU_LIBRARY__ # include #endif #ifndef __THROW # ifndef __GNUC_PREREQ # define __GNUC_PREREQ(maj, min) (0) # endif # if defined __cplusplus && __GNUC_PREREQ (2,8) # define __THROW throw () # else # define __THROW # endif #endif /* The definition of _GL_ARG_NONNULL is copied here. */ #ifdef __cplusplus extern "C" { #endif /* For communication from 'getopt' to the caller. When 'getopt' finds an option that takes an argument, the argument value is returned here. Also, when 'ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to 'getopt'. On entry to 'getopt', zero means this is the first call; initialize. When 'getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, 'optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message 'getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; #ifndef __need_getopt /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of 'struct option' terminated by an element containing a name which is zero. The field 'has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field 'flag' is not NULL, it points to a variable that is set to the value given in the field 'val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an 'int' to a compiled-in constant, such as set a value from 'optarg', set the option's 'flag' field to zero and its 'val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero 'flag' field, 'getopt' returns the contents of the 'val' field. */ # if !GNULIB_defined_struct_option struct option { const char *name; /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; # define GNULIB_defined_struct_option 1 # endif /* Names for the values of the 'has_arg' field of 'struct option'. */ # define no_argument 0 # define required_argument 1 # define optional_argument 2 #endif /* need getopt */ /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. Return the option character from OPTS just read. Return -1 when there are no more options. For unrecognized options, or options missing arguments, 'optopt' is set to the option letter, and '?' is returned. The OPTS string is a list of characters which are recognized option letters, optionally followed by colons, specifying that that letter takes an argument, to be placed in 'optarg'. If a letter in OPTS is followed by two colons, its argument is optional. This behavior is specific to the GNU 'getopt'. The argument '--' causes premature termination of argument scanning, explicitly telling 'getopt' that there are no more options. If OPTS begins with '-', then non-option arguments are treated as arguments to the option '\1'. This behavior is specific to the GNU 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in the environment, then do not permute arguments. */ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) __THROW _GL_ARG_NONNULL ((2, 3)); #ifndef __need_getopt extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW _GL_ARG_NONNULL ((2, 3)); extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW _GL_ARG_NONNULL ((2, 3)); #endif #ifdef __cplusplus } #endif /* Make sure we later can get all the definitions and declarations. */ #undef __need_getopt #endif /* _@GUARD_PREFIX@_GETOPT_H */ #endif /* _@GUARD_PREFIX@_GETOPT_H */ libtasn1-3.4/gl/Makefile.in0000664000000000000000000024606412244721751012456 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files autobuild fdl-1.3 gendocs getopt-gnu gettime gnupload maintainer-makefile manywarnings pmccabe2html progname read-file stdint update-copyright valgrind-tests version-etc-fsf warnings VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ subdir = gl DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/build-aux/depcomp $(noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = am_libgnu_la_OBJECTS = gettime.lo progname.lo read-file.lo timespec.lo \ unistd.lo version-etc.lo version-etc-fsf.lo libgnu_la_OBJECTS = $(am_libgnu_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libgnu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libgnu_la_LDFLAGS) $(LDFLAGS) -o $@ 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_SOURCES) DIST_SOURCES = $(libgnu_la_SOURCES) $(EXTRA_libgnu_la_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 HEADERS = $(noinst_HEADERS) 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 \ distdir 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 DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 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" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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@ AUTOMAKE_OPTIONS = 1.5 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = libgnu.la EXTRA_DIST = m4/gnulib-cache.m4 errno.in.h fstat.c ftell.c ftello.c \ stdio-impl.h $(top_srcdir)/build-aux/gendocs.sh getopt.c \ getopt.in.h getopt1.c getopt_int.h gettimeofday.c \ $(top_srcdir)/GNUmakefile $(top_srcdir)/build-aux/gnupload \ lseek.c $(top_srcdir)/maint.mk malloc.c msvc-inval.c \ msvc-inval.h msvc-nothrow.c msvc-nothrow.h \ $(top_srcdir)/build-aux/pmccabe2html \ $(top_srcdir)/build-aux/pmccabe.css read-file.h realloc.c \ $(top_srcdir)/build-aux/snippet/_Noreturn.h \ $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ $(top_srcdir)/build-aux/snippet/c++defs.h \ $(top_srcdir)/build-aux/snippet/warn-on-use.h stdarg.in.h \ stddef.in.h stdint.in.h stdio.in.h stdlib.in.h sys_stat.in.h \ sys_time.in.h sys_types.in.h time.in.h timespec.h unistd.in.h \ $(top_srcdir)/build-aux/update-copyright \ $(top_srcdir)/build-aux/useless-if-before-free \ $(top_srcdir)/build-aux/vc-list-files # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES = $(ERRNO_H) $(GETOPT_H) arg-nonnull.h c++defs.h \ warn-on-use.h $(STDARG_H) $(STDDEF_H) $(STDINT_H) stdio.h \ stdlib.h sys/stat.h sys/time.h sys/types.h time.h unistd.h SUFFIXES = MOSTLYCLEANFILES = core *.stackdump errno.h errno.h-t getopt.h \ getopt.h-t arg-nonnull.h arg-nonnull.h-t c++defs.h c++defs.h-t \ warn-on-use.h warn-on-use.h-t stdarg.h stdarg.h-t stddef.h \ stddef.h-t stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h \ stdlib.h-t sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t \ sys/types.h sys/types.h-t time.h time.h-t unistd.h unistd.h-t MOSTLYCLEANDIRS = sys CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = AM_CPPFLAGS = AM_CFLAGS = libgnu_la_SOURCES = gettext.h gettime.c progname.h progname.c \ read-file.c timespec.c unistd.c version-etc.h version-etc.c \ version-etc-fsf.c libgnu_la_LIBADD = $(gl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = fstat.c ftell.c ftello.c getopt.c getopt1.c \ gettimeofday.c lseek.c malloc.c msvc-inval.c msvc-nothrow.c \ realloc.c libgnu_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(LIB_CLOCK_GETTIME) \ $(LTLIBINTL) # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all Makefile.am that # need it. This is ensured by the applicability 'all' defined above. _NORETURN_H = $(top_srcdir)/build-aux/snippet/_Noreturn.h ARG_NONNULL_H = arg-nonnull.h CXXDEFS_H = c++defs.h WARN_ON_USE_H = warn-on-use.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(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) --gnits gl/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnits gl/Makefile .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libgnu.la: $(libgnu_la_OBJECTS) $(libgnu_la_DEPENDENCIES) $(EXTRA_libgnu_la_DEPENDENCIES) $(AM_V_CCLD)$(libgnu_la_LINK) $(libgnu_la_OBJECTS) $(libgnu_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftell.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftello.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettimeofday.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-inval.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-nothrow.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progname.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read-file.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timespec.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unistd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc-fsf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc.Plo@am__quote@ .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 $< .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 `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # 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" 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 distdir: $(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 @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 check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) 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) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) 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 "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ clean-noinstLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-local 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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool mostlyclean-local pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all check install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool \ clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-local distclean-tags 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 installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am # We need the following in order to create when the system # doesn't have one that is POSIX compliant. @GL_GENERATE_ERRNO_H_TRUE@errno.h: errno.in.h $(top_builddir)/config.status @GL_GENERATE_ERRNO_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_ERRNO_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_ERRNO_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ @GL_GENERATE_ERRNO_H_TRUE@ < $(srcdir)/errno.in.h; \ @GL_GENERATE_ERRNO_H_TRUE@ } > $@-t && \ @GL_GENERATE_ERRNO_H_TRUE@ mv $@-t $@ @GL_GENERATE_ERRNO_H_FALSE@errno.h: $(top_builddir)/config.status @GL_GENERATE_ERRNO_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ < $(srcdir)/getopt.in.h; \ } > $@-t && \ mv -f $@-t $@ distclean-local: clean-GNUmakefile clean-GNUmakefile: test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/build-aux/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDARG_H_TRUE@stdarg.h: stdarg.in.h $(top_builddir)/config.status @GL_GENERATE_STDARG_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDARG_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_STDARG_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDARG_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDARG_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDARG_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDARG_H_TRUE@ -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \ @GL_GENERATE_STDARG_H_TRUE@ < $(srcdir)/stdarg.in.h; \ @GL_GENERATE_STDARG_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDARG_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDARG_H_FALSE@stdarg.h: $(top_builddir)/config.status @GL_GENERATE_STDARG_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDDEF_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ @GL_GENERATE_STDDEF_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ @GL_GENERATE_STDDEF_H_TRUE@ < $(srcdir)/stddef.in.h; \ @GL_GENERATE_STDDEF_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDDEF_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status @GL_GENERATE_STDDEF_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. @GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status @GL_GENERATE_STDINT_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \ @GL_GENERATE_STDINT_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ @GL_GENERATE_STDINT_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ @GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ @GL_GENERATE_STDINT_H_TRUE@ < $(srcdir)/stdint.in.h; \ @GL_GENERATE_STDINT_H_TRUE@ } > $@-t && \ @GL_GENERATE_STDINT_H_TRUE@ mv $@-t $@ @GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status @GL_GENERATE_STDINT_H_FALSE@ rm -f $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \ -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \ -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \ -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \ -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \ -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \ -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \ -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \ -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \ -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \ -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \ -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \ -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \ -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \ -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \ -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \ -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \ -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \ -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \ -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \ -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \ -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \ -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \ -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \ -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \ -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \ -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \ -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \ -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \ -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \ -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \ -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \ -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \ -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \ < $(srcdir)/stdio.in.h | \ sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \ -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \ -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \ -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \ -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \ -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \ -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \ -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \ -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \ -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \ -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \ -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \ -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \ -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \ -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \ -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \ -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \ -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \ -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \ -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \ -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \ -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \ -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \ < $(srcdir)/stdlib.in.h | \ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _Noreturn/r $(_NORETURN_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # has one that is incomplete. sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GNULIB_FSTATAT)/g' \ -e 's/@''GNULIB_FUTIMENS''@/$(GNULIB_FUTIMENS)/g' \ -e 's/@''GNULIB_LCHMOD''@/$(GNULIB_LCHMOD)/g' \ -e 's/@''GNULIB_LSTAT''@/$(GNULIB_LSTAT)/g' \ -e 's/@''GNULIB_MKDIRAT''@/$(GNULIB_MKDIRAT)/g' \ -e 's/@''GNULIB_MKFIFO''@/$(GNULIB_MKFIFO)/g' \ -e 's/@''GNULIB_MKFIFOAT''@/$(GNULIB_MKFIFOAT)/g' \ -e 's/@''GNULIB_MKNOD''@/$(GNULIB_MKNOD)/g' \ -e 's/@''GNULIB_MKNODAT''@/$(GNULIB_MKNODAT)/g' \ -e 's/@''GNULIB_STAT''@/$(GNULIB_STAT)/g' \ -e 's/@''GNULIB_UTIMENSAT''@/$(GNULIB_UTIMENSAT)/g' \ -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \ -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \ -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \ -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \ -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \ -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \ -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \ -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \ -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \ -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \ -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \ -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \ -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \ -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_stat.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ -e 's/@''REPLACE_STRUCT_TIMEVAL''@/$(REPLACE_STRUCT_TIMEVAL)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_time.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ < $(srcdir)/sys_types.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create when the system # doesn't have one that works with the given compiler. time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's/@''GNULIB_MKTIME''@/$(GNULIB_MKTIME)/g' \ -e 's/@''GNULIB_NANOSLEEP''@/$(GNULIB_NANOSLEEP)/g' \ -e 's/@''GNULIB_STRPTIME''@/$(GNULIB_STRPTIME)/g' \ -e 's/@''GNULIB_TIMEGM''@/$(GNULIB_TIMEGM)/g' \ -e 's/@''GNULIB_TIME_R''@/$(GNULIB_TIME_R)/g' \ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/time.in.h; \ } > $@-t && \ mv $@-t $@ # We need the following in order to create an empty placeholder for # when the system doesn't have one. unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \ -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \ -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \ -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \ -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \ -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \ -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \ -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \ -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \ -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \ -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \ -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \ -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \ -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \ -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \ -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \ -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \ -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \ -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \ -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \ -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \ -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \ -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \ -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \ -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \ -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \ -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \ -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \ -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \ -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \ -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \ -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \ -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \ -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \ -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \ -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \ -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \ -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \ -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \ -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \ -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \ < $(srcdir)/unistd.in.h | \ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ | \ sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : # 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: libtasn1-3.4/gl/getopt_int.h0000664000000000000000000001174212244720630012722 00000000000000/* Internal declarations for getopt. Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 2009-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. 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 . */ #ifndef _GETOPT_INT_H #define _GETOPT_INT_H 1 #include extern int _getopt_internal (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only, int __posixly_correct); /* Reentrant versions which can handle parsing multiple argument vectors at the same time. */ /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using '+' as the first character of the list of option characters, or by calling getopt. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using '-' as the first character of the list of option characters selects this mode of operation. The special argument '--' forces an end of option-scanning regardless of the value of 'ordering'. In the case of RETURN_IN_ORDER, only '--' can cause 'getopt' to return -1 with 'optind' != ARGC. */ enum __ord { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER }; /* Data type for reentrant functions. */ struct _getopt_data { /* These have exactly the same meaning as the corresponding global variables, except that they are used for the reentrant versions of getopt. */ int optind; int opterr; int optopt; char *optarg; /* Internal members. */ /* True if the internal members have been initialized. */ int __initialized; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ char *__nextchar; /* See __ord above. */ enum __ord __ordering; /* If the POSIXLY_CORRECT environment variable is set or getopt was called. */ int __posixly_correct; /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. 'first_nonopt' is the index in ARGV of the first of them; 'last_nonopt' is the index after the last of them. */ int __first_nonopt; int __last_nonopt; #if defined _LIBC && defined USE_NONOPTION_FLAGS int __nonoption_flags_max_len; int __nonoption_flags_len; #endif }; /* The initializer is necessary to set OPTIND and OPTERR to their default values and to clear the initialization flag. */ #define _GETOPT_DATA_INITIALIZER { 1, 1 } extern int _getopt_internal_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only, struct _getopt_data *__data, int __posixly_correct); extern int _getopt_long_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, struct _getopt_data *__data); extern int _getopt_long_only_r (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, struct _getopt_data *__data); #endif /* getopt_int.h */ libtasn1-3.4/gl/getopt1.c0000664000000000000000000001055212244720630012122 00000000000000/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987-1994, 1996-1998, 2004, 2006, 2009-2013 Free Software Foundation, Inc. This file is part of the GNU C Library. 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 . */ #ifdef _LIBC # include #else # include # include "getopt.h" #endif #include "getopt_int.h" #include /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #endif #ifndef NULL #define NULL 0 #endif int getopt_long (int argc, char *__getopt_argv_const *argv, const char *options, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, opt_index, 0, 0); } int _getopt_long_r (int argc, char **argv, const char *options, const struct option *long_options, int *opt_index, struct _getopt_data *d) { return _getopt_internal_r (argc, argv, options, long_options, opt_index, 0, d, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (int argc, char *__getopt_argv_const *argv, const char *options, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, opt_index, 1, 0); } int _getopt_long_only_r (int argc, char **argv, const char *options, const struct option *long_options, int *opt_index, struct _getopt_data *d) { return _getopt_internal_r (argc, argv, options, long_options, opt_index, 1, d, 0); } #ifdef TEST #include int main (int argc, char **argv) { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static const struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value '%s'\n", optarg); break; case 'd': printf ("option d with value '%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ libtasn1-3.4/gl/fstat.c0000664000000000000000000000460512244720630011662 00000000000000/* fstat() replacement. Copyright (C) 2011-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 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* If the user's config.h happens to include , let it include only the system's here, so that orig_fstat doesn't recurse to rpl_fstat. */ #define __need_system_sys_stat_h #include /* Get the original definition of fstat. It might be defined as a macro. */ #include #include #if _GL_WINDOWS_64_BIT_ST_SIZE # undef stat /* avoid warning on mingw64 with _FILE_OFFSET_BITS=64 */ # define stat _stati64 # undef fstat /* avoid warning on mingw64 with _FILE_OFFSET_BITS=64 */ # define fstat _fstati64 #endif #undef __need_system_sys_stat_h static int orig_fstat (int fd, struct stat *buf) { return fstat (fd, buf); } /* Specification. */ /* Write "sys/stat.h" here, not , otherwise OSF/1 5.1 DTK cc eliminates this include because of the preliminary #include above. */ #include "sys/stat.h" #include #include #if HAVE_MSVC_INVALID_PARAMETER_HANDLER # include "msvc-inval.h" #endif #if HAVE_MSVC_INVALID_PARAMETER_HANDLER static int fstat_nothrow (int fd, struct stat *buf) { int result; TRY_MSVC_INVAL { result = orig_fstat (fd, buf); } CATCH_MSVC_INVAL { result = -1; errno = EBADF; } DONE_MSVC_INVAL; return result; } #else # define fstat_nothrow orig_fstat #endif int rpl_fstat (int fd, struct stat *buf) { #if REPLACE_FCHDIR && REPLACE_OPEN_DIRECTORY /* Handle the case when rpl_open() used a dummy file descriptor to work around an open() that can't normally visit directories. */ const char *name = _gl_directory_name (fd); if (name != NULL) return stat (name, buf); #endif return fstat_nothrow (fd, buf); } libtasn1-3.4/gl/realloc.c0000664000000000000000000000407012244720630012156 00000000000000/* realloc() function that is glibc compatible. Copyright (C) 1997, 2003-2004, 2006-2007, 2009-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 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 . */ /* written by Jim Meyering and Bruno Haible */ #define _GL_USE_STDLIB_ALLOC 1 #include /* Only the AC_FUNC_REALLOC macro defines 'realloc' already in config.h. */ #ifdef realloc # define NEED_REALLOC_GNU 1 /* Whereas the gnulib module 'realloc-gnu' defines HAVE_REALLOC_GNU. */ #elif GNULIB_REALLOC_GNU && !HAVE_REALLOC_GNU # define NEED_REALLOC_GNU 1 #endif /* Infer the properties of the system's malloc function. The gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */ #if GNULIB_MALLOC_GNU && HAVE_MALLOC_GNU # define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1 #endif #include #include /* Change the size of an allocated block of memory P to N bytes, with error checking. If N is zero, change it to 1. If P is NULL, use malloc. */ void * rpl_realloc (void *p, size_t n) { void *result; #if NEED_REALLOC_GNU if (n == 0) { n = 1; /* In theory realloc might fail, so don't rely on it to free. */ free (p); p = NULL; } #endif if (p == NULL) { #if GNULIB_REALLOC_GNU && !NEED_REALLOC_GNU && !SYSTEM_MALLOC_GLIBC_COMPATIBLE if (n == 0) n = 1; #endif result = malloc (n); } else result = realloc (p, n); #if !HAVE_REALLOC_POSIX if (result == NULL) errno = ENOMEM; #endif return result; } libtasn1-3.4/gl/sys_types.in.h0000664000000000000000000000317512244720630013216 00000000000000/* Provide a more complete sys/types.h. Copyright (C) 2011-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 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #ifndef _@GUARD_PREFIX@_SYS_TYPES_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@ #ifndef _@GUARD_PREFIX@_SYS_TYPES_H #define _@GUARD_PREFIX@_SYS_TYPES_H /* Override off_t if Large File Support is requested on native Windows. */ #if @WINDOWS_64_BIT_OFF_T@ /* Same as int64_t in . */ # if defined _MSC_VER # define off_t __int64 # else # define off_t long long int # endif /* Indicator, for gnulib internal purposes. */ # define _GL_WINDOWS_64_BIT_OFF_T 1 #endif /* MSVC 9 defines size_t in , not in . */ /* But avoid namespace pollution on glibc systems. */ #if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \ && ! defined __GLIBC__ # include #endif #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ #endif /* _@GUARD_PREFIX@_SYS_TYPES_H */ libtasn1-3.4/gl/version-etc-fsf.c0000664000000000000000000000220212244720630013542 00000000000000/* Variable with FSF copyright information, for version-etc. Copyright (C) 1999-2006, 2009-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 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 . */ /* Written by Jim Meyering. */ #include /* Specification. */ #include "version-etc.h" /* Default copyright goes to the FSF. */ const char version_etc_copyright[] = /* Do *not* mark this string for translation. %s is a copyright symbol suitable for this locale, and %d is the copyright year. */ "Copyright %s %d Free Software Foundation, Inc."; libtasn1-3.4/gl/stdio.in.h0000664000000000000000000014042012244720630012271 00000000000000/* A GNU-like . Copyright (C) 2004, 2007-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 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H /* Special invocation convention: - Inside glibc header files. - On OSF/1 5.1 we have a sequence of nested includes -> -> -> -> -> -> -> . In this situation, the functions are not yet declared, therefore we cannot provide the C++ aliases. */ #@INCLUDE_NEXT@ @NEXT_STDIO_H@ #else /* Normal invocation convention. */ #ifndef _@GUARD_PREFIX@_STDIO_H #define _GL_ALREADY_INCLUDING_STDIO_H /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_STDIO_H@ #undef _GL_ALREADY_INCLUDING_STDIO_H #ifndef _@GUARD_PREFIX@_STDIO_H #define _@GUARD_PREFIX@_STDIO_H /* Get va_list. Needed on many systems, including glibc 2.8. */ #include #include /* Get off_t and ssize_t. Needed on many systems, including glibc 2.8 and eglibc 2.11.2. May also define off_t to a 64-bit type on native Windows. */ #include /* The __attribute__ feature is available in gcc versions 2.5 and later. The __-protected variants of the attributes 'format' and 'printf' are accepted by gcc versions 2.6.4 (effectively 2.7) and later. We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because gnulib and libintl do '#define printf __printf__' when they override the 'printf' function. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) #else # define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ #endif /* _GL_ATTRIBUTE_FORMAT_PRINTF indicates to GCC that the function takes a format string and arguments, where the format string directives are the ones standardized by ISO C99 and POSIX. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument)) #else # define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) #endif /* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF, except that it indicates to GCC that the supported format string directives are the ones of the system printf(), rather than the ones standardized by ISO C99 and POSIX. */ #define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) /* _GL_ATTRIBUTE_FORMAT_SCANF indicates to GCC that the function takes a format string and arguments, where the format string directives are the ones standardized by ISO C99 and POSIX. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument)) #else # define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) #endif /* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF, except that it indicates to GCC that the supported format string directives are the ones of the system scanf(), rather than the ones standardized by ISO C99 and POSIX. */ #define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) /* Solaris 10 declares renameat in , not in . */ /* But in any case avoid namespace pollution on glibc systems. */ #if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __sun \ && ! defined __GLIBC__ # include #endif /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Macros for stringification. */ #define _GL_STDIO_STRINGIZE(token) #token #define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) #if @GNULIB_DPRINTF@ # if @REPLACE_DPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define dprintf rpl_dprintf # endif _GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); # else # if !@HAVE_DPRINTF@ _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((2))); # endif _GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); # endif _GL_CXXALIASWARN (dprintf); #elif defined GNULIB_POSIXCHECK # undef dprintf # if HAVE_RAW_DECL_DPRINTF _GL_WARN_ON_USE (dprintf, "dprintf is unportable - " "use gnulib module dprintf for portability"); # endif #endif #if @GNULIB_FCLOSE@ /* Close STREAM and its underlying file descriptor. */ # if @REPLACE_FCLOSE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fclose rpl_fclose # endif _GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fclose, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); # endif _GL_CXXALIASWARN (fclose); #elif defined GNULIB_POSIXCHECK # undef fclose /* Assume fclose is always declared. */ _GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " "use gnulib module fclose for portable POSIX compliance"); #endif #if @GNULIB_FDOPEN@ # if @REPLACE_FDOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fdopen # define fdopen rpl_fdopen # endif _GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); # else _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); # endif _GL_CXXALIASWARN (fdopen); #elif defined GNULIB_POSIXCHECK # undef fdopen /* Assume fdopen is always declared. */ _GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " "use gnulib module fdopen for portability"); #endif #if @GNULIB_FFLUSH@ /* Flush all pending data on STREAM according to POSIX rules. Both output and seekable input streams are supported. Note! LOSS OF DATA can occur if fflush is applied on an input stream that is _not_seekable_ or on an update stream that is _not_seekable_ and in which the most recent operation was input. Seekability can be tested with lseek(fileno(fp),0,SEEK_CUR). */ # if @REPLACE_FFLUSH@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fflush rpl_fflush # endif _GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream)); _GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream)); # else _GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); # endif _GL_CXXALIASWARN (fflush); #elif defined GNULIB_POSIXCHECK # undef fflush /* Assume fflush is always declared. */ _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - " "use gnulib module fflush for portable POSIX compliance"); #endif #if @GNULIB_FGETC@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fgetc # define fgetc rpl_fgetc # endif _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); # endif _GL_CXXALIASWARN (fgetc); #endif #if @GNULIB_FGETS@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fgets # define fgets rpl_fgets # endif _GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream) _GL_ARG_NONNULL ((1, 3))); _GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream)); # else _GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream)); # endif _GL_CXXALIASWARN (fgets); #endif #if @GNULIB_FOPEN@ # if @REPLACE_FOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fopen # define fopen rpl_fopen # endif _GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode)); # else _GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode)); # endif _GL_CXXALIASWARN (fopen); #elif defined GNULIB_POSIXCHECK # undef fopen /* Assume fopen is always declared. */ _GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " "use gnulib module fopen for portability"); #endif #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@ # if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \ || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fprintf rpl_fprintf # endif # define GNULIB_overrides_fprintf 1 # if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); # else _GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); # else _GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); # endif _GL_CXXALIASWARN (fprintf); #endif #if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_fprintf # undef fprintf # endif /* Assume fprintf is always declared. */ _GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - " "use gnulib module fprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_FPURGE@ /* Discard all pending buffered I/O data on STREAM. STREAM must not be wide-character oriented. When discarding pending output, the file position is set back to where it was before the write calls. When discarding pending input, the file position is advanced to match the end of the previously read input. Return 0 if successful. Upon error, return -1 and set errno. */ # if @REPLACE_FPURGE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define fpurge rpl_fpurge # endif _GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream)); # else # if !@HAVE_DECL_FPURGE@ _GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream)); # endif _GL_CXXALIASWARN (fpurge); #elif defined GNULIB_POSIXCHECK # undef fpurge # if HAVE_RAW_DECL_FPURGE _GL_WARN_ON_USE (fpurge, "fpurge is not always present - " "use gnulib module fpurge for portability"); # endif #endif #if @GNULIB_FPUTC@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fputc # define fputc rpl_fputc # endif _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream)); # else _GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); # endif _GL_CXXALIASWARN (fputc); #endif #if @GNULIB_FPUTS@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fputs # define fputs rpl_fputs # endif _GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream)); # else _GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream)); # endif _GL_CXXALIASWARN (fputs); #endif #if @GNULIB_FREAD@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fread # define fread rpl_fread # endif _GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream) _GL_ARG_NONNULL ((4))); _GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); # else _GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); # endif _GL_CXXALIASWARN (fread); #endif #if @GNULIB_FREOPEN@ # if @REPLACE_FREOPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef freopen # define freopen rpl_freopen # endif _GL_FUNCDECL_RPL (freopen, FILE *, (const char *filename, const char *mode, FILE *stream) _GL_ARG_NONNULL ((2, 3))); _GL_CXXALIAS_RPL (freopen, FILE *, (const char *filename, const char *mode, FILE *stream)); # else _GL_CXXALIAS_SYS (freopen, FILE *, (const char *filename, const char *mode, FILE *stream)); # endif _GL_CXXALIASWARN (freopen); #elif defined GNULIB_POSIXCHECK # undef freopen /* Assume freopen is always declared. */ _GL_WARN_ON_USE (freopen, "freopen on native Windows platforms is not POSIX compliant - " "use gnulib module freopen for portability"); #endif #if @GNULIB_FSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fscanf # define fscanf rpl_fscanf # endif _GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...)); # else _GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...)); # endif _GL_CXXALIASWARN (fscanf); #endif /* Set up the following warnings, based on which modules are in use. GNU Coding Standards discourage the use of fseek, since it imposes an arbitrary limitation on some 32-bit hosts. Remember that the fseek module depends on the fseeko module, so we only have three cases to consider: 1. The developer is not using either module. Issue a warning under GNULIB_POSIXCHECK for both functions, to remind them that both functions have bugs on some systems. _GL_NO_LARGE_FILES has no impact on this warning. 2. The developer is using both modules. They may be unaware of the arbitrary limitations of fseek, so issue a warning under GNULIB_POSIXCHECK. On the other hand, they may be using both modules intentionally, so the developer can define _GL_NO_LARGE_FILES in the compilation units where the use of fseek is safe, to silence the warning. 3. The developer is using the fseeko module, but not fseek. Gnulib guarantees that fseek will still work around platform bugs in that case, but we presume that the developer is aware of the pitfalls of fseek and was trying to avoid it, so issue a warning even when GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be defined to silence the warning in particular compilation units. In C++ compilations with GNULIB_NAMESPACE, in order to avoid that fseek gets defined as a macro, it is recommended that the developer uses the fseek module, even if he is not calling the fseek function. Most gnulib clients that perform stream operations should fall into category 3. */ #if @GNULIB_FSEEK@ # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES # define _GL_FSEEK_WARN /* Category 2, above. */ # undef fseek # endif # if @REPLACE_FSEEK@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fseek # define fseek rpl_fseek # endif _GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence)); # else _GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); # endif _GL_CXXALIASWARN (fseek); #endif #if @GNULIB_FSEEKO@ # if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES # define _GL_FSEEK_WARN /* Category 3, above. */ # undef fseek # endif # if @REPLACE_FSEEKO@ /* Provide an fseeko function that is aware of a preceding fflush(), and which detects pipes. */ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fseeko # define fseeko rpl_fseeko # endif _GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); # else # if ! @HAVE_DECL_FSEEKO@ _GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); # endif _GL_CXXALIASWARN (fseeko); #elif defined GNULIB_POSIXCHECK # define _GL_FSEEK_WARN /* Category 1, above. */ # undef fseek # undef fseeko # if HAVE_RAW_DECL_FSEEKO _GL_WARN_ON_USE (fseeko, "fseeko is unportable - " "use gnulib module fseeko for portability"); # endif #endif #ifdef _GL_FSEEK_WARN # undef _GL_FSEEK_WARN /* Here, either fseek is undefined (but C89 guarantees that it is declared), or it is defined as rpl_fseek (declared above). */ _GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB " "on 32-bit platforms - " "use fseeko function for handling of large files"); #endif /* ftell, ftello. See the comments on fseek/fseeko. */ #if @GNULIB_FTELL@ # if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES # define _GL_FTELL_WARN /* Category 2, above. */ # undef ftell # endif # if @REPLACE_FTELL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftell # define ftell rpl_ftell # endif _GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (ftell, long, (FILE *fp)); # else _GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); # endif _GL_CXXALIASWARN (ftell); #endif #if @GNULIB_FTELLO@ # if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES # define _GL_FTELL_WARN /* Category 3, above. */ # undef ftell # endif # if @REPLACE_FTELLO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef ftello # define ftello rpl_ftello # endif _GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); # else # if ! @HAVE_DECL_FTELLO@ _GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); # endif _GL_CXXALIASWARN (ftello); #elif defined GNULIB_POSIXCHECK # define _GL_FTELL_WARN /* Category 1, above. */ # undef ftell # undef ftello # if HAVE_RAW_DECL_FTELLO _GL_WARN_ON_USE (ftello, "ftello is unportable - " "use gnulib module ftello for portability"); # endif #endif #ifdef _GL_FTELL_WARN # undef _GL_FTELL_WARN /* Here, either ftell is undefined (but C89 guarantees that it is declared), or it is defined as rpl_ftell (declared above). */ _GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " "on 32-bit platforms - " "use ftello function for handling of large files"); #endif #if @GNULIB_FWRITE@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef fwrite # define fwrite rpl_fwrite # endif _GL_FUNCDECL_RPL (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream) _GL_ARG_NONNULL ((1, 4))); _GL_CXXALIAS_RPL (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream)); # else _GL_CXXALIAS_SYS (fwrite, size_t, (const void *ptr, size_t s, size_t n, FILE *stream)); /* Work around bug 11959 when fortifying glibc 2.4 through 2.15 , which sometimes causes an unwanted diagnostic for fwrite calls. This affects only function declaration attributes under certain versions of gcc, and is not needed for C++. */ # if (0 < __USE_FORTIFY_LEVEL \ && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ && !defined __cplusplus) # undef fwrite # define fwrite(a, b, c, d) ({size_t __r = fwrite (a, b, c, d); __r; }) # endif # endif _GL_CXXALIASWARN (fwrite); #endif #if @GNULIB_GETC@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getc # define getc rpl_fgetc # endif _GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); # else _GL_CXXALIAS_SYS (getc, int, (FILE *stream)); # endif _GL_CXXALIASWARN (getc); #endif #if @GNULIB_GETCHAR@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getchar # define getchar rpl_getchar # endif _GL_FUNCDECL_RPL (getchar, int, (void)); _GL_CXXALIAS_RPL (getchar, int, (void)); # else _GL_CXXALIAS_SYS (getchar, int, (void)); # endif _GL_CXXALIASWARN (getchar); #endif #if @GNULIB_GETDELIM@ /* Read input, up to (and including) the next occurrence of DELIMITER, from STREAM, store it in *LINEPTR (and NUL-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE bytes of space. It is realloc'd as necessary. Return the number of bytes read and stored at *LINEPTR (not including the NUL terminator), or -1 on error or EOF. */ # if @REPLACE_GETDELIM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getdelim # define getdelim rpl_getdelim # endif _GL_FUNCDECL_RPL (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream) _GL_ARG_NONNULL ((1, 2, 4))); _GL_CXXALIAS_RPL (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream)); # else # if !@HAVE_DECL_GETDELIM@ _GL_FUNCDECL_SYS (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream) _GL_ARG_NONNULL ((1, 2, 4))); # endif _GL_CXXALIAS_SYS (getdelim, ssize_t, (char **lineptr, size_t *linesize, int delimiter, FILE *stream)); # endif _GL_CXXALIASWARN (getdelim); #elif defined GNULIB_POSIXCHECK # undef getdelim # if HAVE_RAW_DECL_GETDELIM _GL_WARN_ON_USE (getdelim, "getdelim is unportable - " "use gnulib module getdelim for portability"); # endif #endif #if @GNULIB_GETLINE@ /* Read a line, up to (and including) the next newline, from STREAM, store it in *LINEPTR (and NUL-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE bytes of space. It is realloc'd as necessary. Return the number of bytes read and stored at *LINEPTR (not including the NUL terminator), or -1 on error or EOF. */ # if @REPLACE_GETLINE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef getline # define getline rpl_getline # endif _GL_FUNCDECL_RPL (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream) _GL_ARG_NONNULL ((1, 2, 3))); _GL_CXXALIAS_RPL (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream)); # else # if !@HAVE_DECL_GETLINE@ _GL_FUNCDECL_SYS (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (getline, ssize_t, (char **lineptr, size_t *linesize, FILE *stream)); # endif # if @HAVE_DECL_GETLINE@ _GL_CXXALIASWARN (getline); # endif #elif defined GNULIB_POSIXCHECK # undef getline # if HAVE_RAW_DECL_GETLINE _GL_WARN_ON_USE (getline, "getline is unportable - " "use gnulib module getline for portability"); # endif #endif /* It is very rare that the developer ever has full control of stdin, so any use of gets warrants an unconditional warning; besides, C11 removed it. */ #undef gets #if HAVE_RAW_DECL_GETS _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); #endif #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ struct obstack; /* Grow an obstack with formatted output. Return the number of bytes added to OBS. No trailing nul byte is added, and the object should be closed with obstack_finish before use. Upon memory allocation error, call obstack_alloc_failed_handler. Upon other error, return -1. */ # if @REPLACE_OBSTACK_PRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define obstack_printf rpl_obstack_printf # endif _GL_FUNCDECL_RPL (obstack_printf, int, (struct obstack *obs, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (obstack_printf, int, (struct obstack *obs, const char *format, ...)); # else # if !@HAVE_DECL_OBSTACK_PRINTF@ _GL_FUNCDECL_SYS (obstack_printf, int, (struct obstack *obs, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (obstack_printf, int, (struct obstack *obs, const char *format, ...)); # endif _GL_CXXALIASWARN (obstack_printf); # if @REPLACE_OBSTACK_PRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define obstack_vprintf rpl_obstack_vprintf # endif _GL_FUNCDECL_RPL (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args)); # else # if !@HAVE_DECL_OBSTACK_PRINTF@ _GL_FUNCDECL_SYS (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (obstack_vprintf, int, (struct obstack *obs, const char *format, va_list args)); # endif _GL_CXXALIASWARN (obstack_vprintf); #endif #if @GNULIB_PCLOSE@ # if !@HAVE_PCLOSE@ _GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (pclose, int, (FILE *stream)); _GL_CXXALIASWARN (pclose); #elif defined GNULIB_POSIXCHECK # undef pclose # if HAVE_RAW_DECL_PCLOSE _GL_WARN_ON_USE (pclose, "pclose is unportable - " "use gnulib module pclose for more portability"); # endif #endif #if @GNULIB_PERROR@ /* Print a message to standard error, describing the value of ERRNO, (if STRING is not NULL and not empty) prefixed with STRING and ": ", and terminated with a newline. */ # if @REPLACE_PERROR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define perror rpl_perror # endif _GL_FUNCDECL_RPL (perror, void, (const char *string)); _GL_CXXALIAS_RPL (perror, void, (const char *string)); # else _GL_CXXALIAS_SYS (perror, void, (const char *string)); # endif _GL_CXXALIASWARN (perror); #elif defined GNULIB_POSIXCHECK # undef perror /* Assume perror is always declared. */ _GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - " "use gnulib module perror for portability"); #endif #if @GNULIB_POPEN@ # if @REPLACE_POPEN@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef popen # define popen rpl_popen # endif _GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); # else # if !@HAVE_POPEN@ _GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); # endif _GL_CXXALIASWARN (popen); #elif defined GNULIB_POSIXCHECK # undef popen # if HAVE_RAW_DECL_POPEN _GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " "use gnulib module popen or pipe for more portability"); # endif #endif #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@ # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \ || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if defined __GNUC__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) /* Don't break __attribute__((format(printf,M,N))). */ # define printf __printf__ # endif # if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL_1 (__printf__, int, (const char *format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) _GL_ARG_NONNULL ((1))); # else _GL_FUNCDECL_RPL_1 (__printf__, int, (const char *format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); # else # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define printf rpl_printf # endif _GL_FUNCDECL_RPL (printf, int, (const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); # endif # define GNULIB_overrides_printf 1 # else _GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); # endif _GL_CXXALIASWARN (printf); #endif #if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_printf # undef printf # endif /* Assume printf is always declared. */ _GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - " "use gnulib module printf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_PUTC@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putc # define putc rpl_fputc # endif _GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream)); # else _GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); # endif _GL_CXXALIASWARN (putc); #endif #if @GNULIB_PUTCHAR@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef putchar # define putchar rpl_putchar # endif _GL_FUNCDECL_RPL (putchar, int, (int c)); _GL_CXXALIAS_RPL (putchar, int, (int c)); # else _GL_CXXALIAS_SYS (putchar, int, (int c)); # endif _GL_CXXALIASWARN (putchar); #endif #if @GNULIB_PUTS@ # if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef puts # define puts rpl_puts # endif _GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (puts, int, (const char *string)); # else _GL_CXXALIAS_SYS (puts, int, (const char *string)); # endif _GL_CXXALIASWARN (puts); #endif #if @GNULIB_REMOVE@ # if @REPLACE_REMOVE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef remove # define remove rpl_remove # endif _GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (remove, int, (const char *name)); # else _GL_CXXALIAS_SYS (remove, int, (const char *name)); # endif _GL_CXXALIASWARN (remove); #elif defined GNULIB_POSIXCHECK # undef remove /* Assume remove is always declared. */ _GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - " "use gnulib module remove for more portability"); #endif #if @GNULIB_RENAME@ # if @REPLACE_RENAME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef rename # define rename rpl_rename # endif _GL_FUNCDECL_RPL (rename, int, (const char *old_filename, const char *new_filename) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (rename, int, (const char *old_filename, const char *new_filename)); # else _GL_CXXALIAS_SYS (rename, int, (const char *old_filename, const char *new_filename)); # endif _GL_CXXALIASWARN (rename); #elif defined GNULIB_POSIXCHECK # undef rename /* Assume rename is always declared. */ _GL_WARN_ON_USE (rename, "rename is buggy on some platforms - " "use gnulib module rename for more portability"); #endif #if @GNULIB_RENAMEAT@ # if @REPLACE_RENAMEAT@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef renameat # define renameat rpl_renameat # endif _GL_FUNCDECL_RPL (renameat, int, (int fd1, char const *file1, int fd2, char const *file2) _GL_ARG_NONNULL ((2, 4))); _GL_CXXALIAS_RPL (renameat, int, (int fd1, char const *file1, int fd2, char const *file2)); # else # if !@HAVE_RENAMEAT@ _GL_FUNCDECL_SYS (renameat, int, (int fd1, char const *file1, int fd2, char const *file2) _GL_ARG_NONNULL ((2, 4))); # endif _GL_CXXALIAS_SYS (renameat, int, (int fd1, char const *file1, int fd2, char const *file2)); # endif _GL_CXXALIASWARN (renameat); #elif defined GNULIB_POSIXCHECK # undef renameat # if HAVE_RAW_DECL_RENAMEAT _GL_WARN_ON_USE (renameat, "renameat is not portable - " "use gnulib module renameat for portability"); # endif #endif #if @GNULIB_SCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if defined __GNUC__ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef scanf /* Don't break __attribute__((format(scanf,M,N))). */ # define scanf __scanf__ # endif _GL_FUNCDECL_RPL_1 (__scanf__, int, (const char *format, ...) __asm__ (@ASM_SYMBOL_PREFIX@ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...)); # else # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef scanf # define scanf rpl_scanf # endif _GL_FUNCDECL_RPL (scanf, int, (const char *format, ...) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (scanf, int, (const char *format, ...)); # endif # else _GL_CXXALIAS_SYS (scanf, int, (const char *format, ...)); # endif _GL_CXXALIASWARN (scanf); #endif #if @GNULIB_SNPRINTF@ # if @REPLACE_SNPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define snprintf rpl_snprintf # endif _GL_FUNCDECL_RPL (snprintf, int, (char *str, size_t size, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) _GL_ARG_NONNULL ((3))); _GL_CXXALIAS_RPL (snprintf, int, (char *str, size_t size, const char *format, ...)); # else # if !@HAVE_DECL_SNPRINTF@ _GL_FUNCDECL_SYS (snprintf, int, (char *str, size_t size, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) _GL_ARG_NONNULL ((3))); # endif _GL_CXXALIAS_SYS (snprintf, int, (char *str, size_t size, const char *format, ...)); # endif _GL_CXXALIASWARN (snprintf); #elif defined GNULIB_POSIXCHECK # undef snprintf # if HAVE_RAW_DECL_SNPRINTF _GL_WARN_ON_USE (snprintf, "snprintf is unportable - " "use gnulib module snprintf for portability"); # endif #endif /* Some people would argue that all sprintf uses should be warned about (for example, OpenBSD issues a link warning for it), since it can cause security holes due to buffer overruns. However, we believe that sprintf can be used safely, and is more efficient than snprintf in those safe cases; and as proof of our belief, we use sprintf in several gnulib modules. So this header intentionally avoids adding a warning to sprintf except when GNULIB_POSIXCHECK is defined. */ #if @GNULIB_SPRINTF_POSIX@ # if @REPLACE_SPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define sprintf rpl_sprintf # endif _GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); # else _GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...)); # endif _GL_CXXALIASWARN (sprintf); #elif defined GNULIB_POSIXCHECK # undef sprintf /* Assume sprintf is always declared. */ _GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - " "use gnulib module sprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_TMPFILE@ # if @REPLACE_TMPFILE@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define tmpfile rpl_tmpfile # endif _GL_FUNCDECL_RPL (tmpfile, FILE *, (void)); _GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); # else _GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); # endif _GL_CXXALIASWARN (tmpfile); #elif defined GNULIB_POSIXCHECK # undef tmpfile # if HAVE_RAW_DECL_TMPFILE _GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " "use gnulib module tmpfile for portability"); # endif #endif #if @GNULIB_VASPRINTF@ /* Write formatted output to a string dynamically allocated with malloc(). If the memory allocation succeeds, store the address of the string in *RESULT and return the number of resulting bytes, excluding the trailing NUL. Upon memory allocation error, or some other error, return -1. */ # if @REPLACE_VASPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define asprintf rpl_asprintf # endif _GL_FUNCDECL_RPL (asprintf, int, (char **result, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (asprintf, int, (char **result, const char *format, ...)); # else # if !@HAVE_VASPRINTF@ _GL_FUNCDECL_SYS (asprintf, int, (char **result, const char *format, ...) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (asprintf, int, (char **result, const char *format, ...)); # endif _GL_CXXALIASWARN (asprintf); # if @REPLACE_VASPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vasprintf rpl_vasprintf # endif _GL_FUNCDECL_RPL (vasprintf, int, (char **result, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vasprintf, int, (char **result, const char *format, va_list args)); # else # if !@HAVE_VASPRINTF@ _GL_FUNCDECL_SYS (vasprintf, int, (char **result, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (vasprintf, int, (char **result, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vasprintf); #endif #if @GNULIB_VDPRINTF@ # if @REPLACE_VDPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vdprintf rpl_vdprintf # endif _GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((2))); _GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); # else # if !@HAVE_VDPRINTF@ _GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((2))); # endif /* Need to cast, because on Solaris, the third parameter will likely be __va_list args. */ _GL_CXXALIAS_SYS_CAST (vdprintf, int, (int fd, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vdprintf); #elif defined GNULIB_POSIXCHECK # undef vdprintf # if HAVE_RAW_DECL_VDPRINTF _GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " "use gnulib module vdprintf for portability"); # endif #endif #if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@ # if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \ || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vfprintf rpl_vfprintf # endif # define GNULIB_overrides_vfprintf 1 # if @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); # else _GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); # else /* Need to cast, because on Solaris, the third parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vfprintf, int, (FILE *fp, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vfprintf); #endif #if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_vfprintf # undef vfprintf # endif /* Assume vfprintf is always declared. */ _GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " "use gnulib module vfprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_VFSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef vfscanf # define vfscanf rpl_vfscanf # endif _GL_FUNCDECL_RPL (vfscanf, int, (FILE *stream, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vfscanf, int, (FILE *stream, const char *format, va_list args)); # else _GL_CXXALIAS_SYS (vfscanf, int, (FILE *stream, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vfscanf); #endif #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@ # if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \ || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)) # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vprintf rpl_vprintf # endif # define GNULIB_overrides_vprintf 1 # if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@ _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0) _GL_ARG_NONNULL ((1))); # else _GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); # else /* Need to cast, because on Solaris, the second parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args)); # endif _GL_CXXALIASWARN (vprintf); #endif #if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK # if !GNULIB_overrides_vprintf # undef vprintf # endif /* Assume vprintf is always declared. */ _GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " "use gnulib module vprintf-posix for portable " "POSIX compliance"); #endif #if @GNULIB_VSCANF@ # if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef vscanf # define vscanf rpl_vscanf # endif _GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args)); # else _GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args)); # endif _GL_CXXALIASWARN (vscanf); #endif #if @GNULIB_VSNPRINTF@ # if @REPLACE_VSNPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vsnprintf rpl_vsnprintf # endif _GL_FUNCDECL_RPL (vsnprintf, int, (char *str, size_t size, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3))); _GL_CXXALIAS_RPL (vsnprintf, int, (char *str, size_t size, const char *format, va_list args)); # else # if !@HAVE_DECL_VSNPRINTF@ _GL_FUNCDECL_SYS (vsnprintf, int, (char *str, size_t size, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3))); # endif _GL_CXXALIAS_SYS (vsnprintf, int, (char *str, size_t size, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vsnprintf); #elif defined GNULIB_POSIXCHECK # undef vsnprintf # if HAVE_RAW_DECL_VSNPRINTF _GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " "use gnulib module vsnprintf for portability"); # endif #endif #if @GNULIB_VSPRINTF_POSIX@ # if @REPLACE_VSPRINTF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define vsprintf rpl_vsprintf # endif _GL_FUNCDECL_RPL (vsprintf, int, (char *str, const char *format, va_list args) _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (vsprintf, int, (char *str, const char *format, va_list args)); # else /* Need to cast, because on Solaris, the third parameter is __va_list args and GCC's fixincludes did not change this to __gnuc_va_list. */ _GL_CXXALIAS_SYS_CAST (vsprintf, int, (char *str, const char *format, va_list args)); # endif _GL_CXXALIASWARN (vsprintf); #elif defined GNULIB_POSIXCHECK # undef vsprintf /* Assume vsprintf is always declared. */ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " "use gnulib module vsprintf-posix for portable " "POSIX compliance"); #endif #endif /* _@GUARD_PREFIX@_STDIO_H */ #endif /* _@GUARD_PREFIX@_STDIO_H */ #endif libtasn1-3.4/gl/stddef.in.h0000664000000000000000000000523212244720630012421 00000000000000/* A substitute for POSIX 2008 , for platforms that have issues. Copyright (C) 2009-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 3, 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 . */ /* Written by Eric Blake. */ /* * POSIX 2008 for platforms that have issues. * */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ #if defined __need_wchar_t || defined __need_size_t \ || defined __need_ptrdiff_t || defined __need_NULL \ || defined __need_wint_t /* Special invocation convention inside gcc header files. In particular, gcc provides a version of that blindly redefines NULL even when __need_wint_t was defined, even though wint_t is not normally provided by . Hence, we must remember if special invocation has ever been used to obtain wint_t, in which case we need to clean up NULL yet again. */ # if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T) # ifdef __need_wint_t # undef _@GUARD_PREFIX@_STDDEF_H # define _GL_STDDEF_WINT_T # endif # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # endif #else /* Normal invocation convention. */ # ifndef _@GUARD_PREFIX@_STDDEF_H /* The include_next requires a split double-inclusion guard. */ # @INCLUDE_NEXT@ @NEXT_STDDEF_H@ # ifndef _@GUARD_PREFIX@_STDDEF_H # define _@GUARD_PREFIX@_STDDEF_H /* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ #if @REPLACE_NULL@ # undef NULL # ifdef __cplusplus /* ISO C++ says that the macro NULL must expand to an integer constant expression, hence '((void *) 0)' is not allowed in C++. */ # if __GNUG__ >= 3 /* GNU C++ has a __null macro that behaves like an integer ('int' or 'long') but has the same size as a pointer. Use that, to avoid warnings. */ # define NULL __null # else # define NULL 0L # endif # else # define NULL ((void *) 0) # endif #endif /* Some platforms lack wchar_t. */ #if !@HAVE_WCHAR_T@ # define wchar_t int #endif # endif /* _@GUARD_PREFIX@_STDDEF_H */ # endif /* _@GUARD_PREFIX@_STDDEF_H */ #endif /* __need_XXX */ libtasn1-3.4/gl/version-etc.h0000664000000000000000000000555512244720630013011 00000000000000/* Print --version and bug-reporting information in a consistent format. Copyright (C) 1999, 2003, 2005, 2009-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 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 . */ /* Written by Jim Meyering. */ #ifndef VERSION_ETC_H # define VERSION_ETC_H 1 # include # include /* The 'sentinel' attribute was added in gcc 4.0. */ #ifndef _GL_ATTRIBUTE_SENTINEL # if 4 <= __GNUC__ # define _GL_ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__)) # else # define _GL_ATTRIBUTE_SENTINEL /* empty */ # endif #endif extern const char version_etc_copyright[]; /* The three functions below display the --version information in the standard way: command and package names, package version, followed by a short GPLv3+ notice and a list of up to 10 author names. If COMMAND_NAME is NULL, the PACKAGE is assumed to be the name of the program. The formats are therefore: PACKAGE VERSION or COMMAND_NAME (PACKAGE) VERSION. The functions differ in the way they are passed author names: */ /* N_AUTHORS names are supplied in array AUTHORS. */ extern void version_etc_arn (FILE *stream, const char *command_name, const char *package, const char *version, const char * const * authors, size_t n_authors); /* Names are passed in the NULL-terminated array AUTHORS. */ extern void version_etc_ar (FILE *stream, const char *command_name, const char *package, const char *version, const char * const * authors); /* Names are passed in the NULL-terminated va_list. */ extern void version_etc_va (FILE *stream, const char *command_name, const char *package, const char *version, va_list authors); /* Names are passed as separate arguments, with an additional NULL argument at the end. */ extern void version_etc (FILE *stream, const char *command_name, const char *package, const char *version, /* const char *author1, ..., NULL */ ...) _GL_ATTRIBUTE_SENTINEL; /* Display the usual "Report bugs to" stanza. */ extern void emit_bug_reporting_address (void); #endif /* VERSION_ETC_H */ libtasn1-3.4/gl/time.in.h0000664000000000000000000002151412244720630012107 00000000000000/* A more-standard . Copyright (C) 2007-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 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif @PRAGMA_COLUMNS@ /* Don't get in the way of glibc when it includes time.h merely to declare a few standard symbols, rather than to declare all the symbols. Also, Solaris 8 eventually includes itself recursively; if that is happening, just include the system without adding our own declarations. */ #if (defined __need_time_t || defined __need_clock_t \ || defined __need_timespec \ || defined _@GUARD_PREFIX@_TIME_H) # @INCLUDE_NEXT@ @NEXT_TIME_H@ #else # define _@GUARD_PREFIX@_TIME_H # @INCLUDE_NEXT@ @NEXT_TIME_H@ /* NetBSD 5.0 mis-defines NULL. */ # include /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ /* The definition of _GL_ARG_NONNULL is copied here. */ /* The definition of _GL_WARN_ON_USE is copied here. */ /* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). Or they define it with the wrong member names or define it in (e.g., FreeBSD circa 1997). Stock Mingw does not define it, but the pthreads-win32 library defines it in . */ # if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@ # if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ # include # elif @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ # include /* The pthreads-win32 also defines a couple of broken macros. */ # undef asctime_r # undef ctime_r # undef gmtime_r # undef localtime_r # undef rand_r # undef strtok_r # else # ifdef __cplusplus extern "C" { # endif # if !GNULIB_defined_struct_timespec # undef timespec # define timespec rpl_timespec struct timespec { time_t tv_sec; long int tv_nsec; }; # define GNULIB_defined_struct_timespec 1 # endif # ifdef __cplusplus } # endif # endif # endif # if !GNULIB_defined_struct_time_t_must_be_integral /* Per http://austingroupbugs.net/view.php?id=327, POSIX requires time_t to be an integer type, even though C99 permits floating point. We don't know of any implementation that uses floating point, and it is much easier to write code that doesn't have to worry about that corner case, so we force the issue. */ struct __time_t_must_be_integral { unsigned int __floating_time_t_unsupported : (time_t) 1; }; # define GNULIB_defined_struct_time_t_must_be_integral 1 # endif /* Sleep for at least RQTP seconds unless interrupted, If interrupted, return -1 and store the remaining time into RMTP. See . */ # if @GNULIB_NANOSLEEP@ # if @REPLACE_NANOSLEEP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define nanosleep rpl_nanosleep # endif _GL_FUNCDECL_RPL (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # else # if ! @HAVE_NANOSLEEP@ _GL_FUNCDECL_SYS (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (nanosleep, int, (struct timespec const *__rqtp, struct timespec *__rmtp)); # endif _GL_CXXALIASWARN (nanosleep); # endif /* Return the 'time_t' representation of TP and normalize TP. */ # if @GNULIB_MKTIME@ # if @REPLACE_MKTIME@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # define mktime rpl_mktime # endif _GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp)); # else _GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp)); # endif _GL_CXXALIASWARN (mktime); # endif /* Convert TIMER to RESULT, assuming local time and UTC respectively. See and . */ # if @GNULIB_TIME_R@ # if @REPLACE_LOCALTIME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef localtime_r # define localtime_r rpl_localtime_r # endif _GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else # if ! @HAVE_DECL_LOCALTIME_R@ _GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif # if @HAVE_DECL_LOCALTIME_R@ _GL_CXXALIASWARN (localtime_r); # endif # if @REPLACE_LOCALTIME_R@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef gmtime_r # define gmtime_r rpl_gmtime_r # endif _GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); _GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # else # if ! @HAVE_DECL_LOCALTIME_R@ _GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result) _GL_ARG_NONNULL ((1, 2))); # endif _GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, struct tm *restrict __result)); # endif # if @HAVE_DECL_LOCALTIME_R@ _GL_CXXALIASWARN (gmtime_r); # endif # endif /* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store the resulting broken-down time into TM. See . */ # if @GNULIB_STRPTIME@ # if ! @HAVE_STRPTIME@ _GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm) _GL_ARG_NONNULL ((1, 2, 3))); # endif _GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf, char const *restrict __format, struct tm *restrict __tm)); _GL_CXXALIASWARN (strptime); # endif /* Convert TM to a time_t value, assuming UTC. */ # if @GNULIB_TIMEGM@ # if @REPLACE_TIMEGM@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef timegm # define timegm rpl_timegm # endif _GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); _GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm)); # else # if ! @HAVE_TIMEGM@ _GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); # endif _GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm)); # endif _GL_CXXALIASWARN (timegm); # endif /* Encourage applications to avoid unsafe functions that can overrun buffers when given outlandish struct tm values. Portable applications should use strftime (or even sprintf) instead. */ # if defined GNULIB_POSIXCHECK # undef asctime _GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef asctime_r _GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef ctime _GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif # if defined GNULIB_POSIXCHECK # undef ctime_r _GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - " "better use strftime (or even sprintf) instead"); # endif #endif libtasn1-3.4/gl/gettimeofday.c0000664000000000000000000000775112244720630013227 00000000000000/* Provide gettimeofday for systems that don't have it or for which it's broken. Copyright (C) 2001-2003, 2005-2007, 2009-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 3, 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 . */ /* written by Jim Meyering */ #include /* Specification. */ #include #include #if HAVE_SYS_TIMEB_H # include #endif #if GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME /* Work around the bug in some systems whereby gettimeofday clobbers the static buffer that localtime uses for its return value. The gettimeofday function from Mac OS X 10.0.4 (i.e., Darwin 1.3.7) has this problem. The tzset replacement is necessary for at least Solaris 2.5, 2.5.1, and 2.6. */ static struct tm tm_zero_buffer; static struct tm *localtime_buffer_addr = &tm_zero_buffer; # undef localtime extern struct tm *localtime (time_t const *); # undef gmtime extern struct tm *gmtime (time_t const *); /* This is a wrapper for localtime. It is used only on systems for which gettimeofday clobbers the static buffer used for localtime's result. On the first call, record the address of the static buffer that localtime uses for its result. */ struct tm * rpl_localtime (time_t const *timep) { struct tm *tm = localtime (timep); if (localtime_buffer_addr == &tm_zero_buffer) localtime_buffer_addr = tm; return tm; } /* Same as above, since gmtime and localtime use the same buffer. */ struct tm * rpl_gmtime (time_t const *timep) { struct tm *tm = gmtime (timep); if (localtime_buffer_addr == &tm_zero_buffer) localtime_buffer_addr = tm; return tm; } #endif /* GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME */ #if TZSET_CLOBBERS_LOCALTIME # undef tzset extern void tzset (void); /* This is a wrapper for tzset, for systems on which tzset may clobber the static buffer used for localtime's result. */ void rpl_tzset (void) { /* Save and restore the contents of the buffer used for localtime's result around the call to tzset. */ struct tm save = *localtime_buffer_addr; tzset (); *localtime_buffer_addr = save; } #endif /* This is a wrapper for gettimeofday. It is used only on systems that lack this function, or whose implementation of this function causes problems. */ int gettimeofday (struct timeval *restrict tv, void *restrict tz) { #undef gettimeofday #if HAVE_GETTIMEOFDAY # if GETTIMEOFDAY_CLOBBERS_LOCALTIME /* Save and restore the contents of the buffer used for localtime's result around the call to gettimeofday. */ struct tm save = *localtime_buffer_addr; # endif # if defined timeval /* 'struct timeval' overridden by gnulib? */ # undef timeval struct timeval otv; int result = gettimeofday (&otv, (struct timezone *) tz); if (result == 0) { tv->tv_sec = otv.tv_sec; tv->tv_usec = otv.tv_usec; } # else int result = gettimeofday (tv, (struct timezone *) tz); # endif # if GETTIMEOFDAY_CLOBBERS_LOCALTIME *localtime_buffer_addr = save; # endif return result; #else # if HAVE__FTIME struct _timeb timebuf; _ftime (&timebuf); tv->tv_sec = timebuf.time; tv->tv_usec = timebuf.millitm * 1000; # else # if !defined OK_TO_USE_1S_CLOCK # error "Only 1-second nominal clock resolution found. Is that intended?" \ "If so, compile with the -DOK_TO_USE_1S_CLOCK option." # endif tv->tv_sec = time (NULL); tv->tv_usec = 0; # endif return 0; #endif } libtasn1-3.4/gl/Makefile.am0000664000000000000000000012312712244720630012432 00000000000000## DO NOT EDIT! GENERATED AUTOMATICALLY! ## Process this file with automake to produce Makefile.in. # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that 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 file. If not, see . # # As a special exception to the GNU General Public License, # this file may be distributed as part of a program that # contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --local-dir=gl/override --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files autobuild fdl-1.3 gendocs getopt-gnu gettime gnupload maintainer-makefile manywarnings pmccabe2html progname read-file stdint update-copyright valgrind-tests version-etc-fsf warnings AUTOMAKE_OPTIONS = 1.5 gnits SUBDIRS = noinst_HEADERS = noinst_LIBRARIES = noinst_LTLIBRARIES = EXTRA_DIST = BUILT_SOURCES = SUFFIXES = MOSTLYCLEANFILES = core *.stackdump MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = EXTRA_DIST += m4/gnulib-cache.m4 AM_CPPFLAGS = AM_CFLAGS = noinst_LTLIBRARIES += libgnu.la libgnu_la_SOURCES = libgnu_la_LIBADD = $(gl_LTLIBOBJS) libgnu_la_DEPENDENCIES = $(gl_LTLIBOBJS) EXTRA_libgnu_la_SOURCES = libgnu_la_LDFLAGS = $(AM_LDFLAGS) libgnu_la_LDFLAGS += -no-undefined libgnu_la_LDFLAGS += $(LIB_CLOCK_GETTIME) libgnu_la_LDFLAGS += $(LTLIBINTL) ## begin gnulib module errno BUILT_SOURCES += $(ERRNO_H) # We need the following in order to create when the system # doesn't have one that is POSIX compliant. if GL_GENERATE_ERRNO_H errno.h: errno.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \ < $(srcdir)/errno.in.h; \ } > $@-t && \ mv $@-t $@ else errno.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += errno.h errno.h-t EXTRA_DIST += errno.in.h ## end gnulib module errno ## begin gnulib module fstat EXTRA_DIST += fstat.c EXTRA_libgnu_la_SOURCES += fstat.c ## end gnulib module fstat ## begin gnulib module ftell EXTRA_DIST += ftell.c EXTRA_libgnu_la_SOURCES += ftell.c ## end gnulib module ftell ## begin gnulib module ftello EXTRA_DIST += ftello.c stdio-impl.h EXTRA_libgnu_la_SOURCES += ftello.c ## end gnulib module ftello ## begin gnulib module gendocs EXTRA_DIST += $(top_srcdir)/build-aux/gendocs.sh ## end gnulib module gendocs ## begin gnulib module getopt-posix BUILT_SOURCES += $(GETOPT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_GETOPT_H''@|$(HAVE_GETOPT_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_GETOPT_H''@|$(NEXT_GETOPT_H)|g' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ < $(srcdir)/getopt.in.h; \ } > $@-t && \ mv -f $@-t $@ MOSTLYCLEANFILES += getopt.h getopt.h-t EXTRA_DIST += getopt.c getopt.in.h getopt1.c getopt_int.h EXTRA_libgnu_la_SOURCES += getopt.c getopt1.c ## end gnulib module getopt-posix ## begin gnulib module gettext-h libgnu_la_SOURCES += gettext.h ## end gnulib module gettext-h ## begin gnulib module gettime libgnu_la_SOURCES += gettime.c ## end gnulib module gettime ## begin gnulib module gettimeofday EXTRA_DIST += gettimeofday.c EXTRA_libgnu_la_SOURCES += gettimeofday.c ## end gnulib module gettimeofday ## begin gnulib module gnumakefile distclean-local: clean-GNUmakefile clean-GNUmakefile: test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile EXTRA_DIST += $(top_srcdir)/GNUmakefile ## end gnulib module gnumakefile ## begin gnulib module gnupload EXTRA_DIST += $(top_srcdir)/build-aux/gnupload ## end gnulib module gnupload ## begin gnulib module lseek EXTRA_DIST += lseek.c EXTRA_libgnu_la_SOURCES += lseek.c ## end gnulib module lseek ## begin gnulib module maintainer-makefile EXTRA_DIST += $(top_srcdir)/maint.mk ## end gnulib module maintainer-makefile ## begin gnulib module malloc-posix EXTRA_DIST += malloc.c EXTRA_libgnu_la_SOURCES += malloc.c ## end gnulib module malloc-posix ## begin gnulib module msvc-inval EXTRA_DIST += msvc-inval.c msvc-inval.h EXTRA_libgnu_la_SOURCES += msvc-inval.c ## end gnulib module msvc-inval ## begin gnulib module msvc-nothrow EXTRA_DIST += msvc-nothrow.c msvc-nothrow.h EXTRA_libgnu_la_SOURCES += msvc-nothrow.c ## end gnulib module msvc-nothrow ## begin gnulib module pmccabe2html EXTRA_DIST += $(top_srcdir)/build-aux/pmccabe2html $(top_srcdir)/build-aux/pmccabe.css ## end gnulib module pmccabe2html ## begin gnulib module progname libgnu_la_SOURCES += progname.h progname.c ## end gnulib module progname ## begin gnulib module read-file libgnu_la_SOURCES += read-file.c EXTRA_DIST += read-file.h ## end gnulib module read-file ## begin gnulib module realloc-posix EXTRA_DIST += realloc.c EXTRA_libgnu_la_SOURCES += realloc.c ## end gnulib module realloc-posix ## begin gnulib module snippet/_Noreturn # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all Makefile.am that # need it. This is ensured by the applicability 'all' defined above. _NORETURN_H=$(top_srcdir)/build-aux/snippet/_Noreturn.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/_Noreturn.h ## end gnulib module snippet/_Noreturn ## begin gnulib module snippet/arg-nonnull # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += arg-nonnull.h # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/snippet/arg-nonnull.h, except that it has the copyright header cut # off. arg-nonnull.h: $(top_srcdir)/build-aux/snippet/arg-nonnull.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/GL_ARG_NONNULL/,$$p' \ < $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += arg-nonnull.h arg-nonnull.h-t ARG_NONNULL_H=arg-nonnull.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/arg-nonnull.h ## end gnulib module snippet/arg-nonnull ## begin gnulib module snippet/c++defs # The BUILT_SOURCES created by this Makefile snippet are not used via #include # statements but through direct file reference. Therefore this snippet must be # present in all Makefile.am that need it. This is ensured by the applicability # 'all' defined above. BUILT_SOURCES += c++defs.h # The c++defs.h that gets inserted into generated .h files is the same as # build-aux/snippet/c++defs.h, except that it has the copyright header cut off. c++defs.h: $(top_srcdir)/build-aux/snippet/c++defs.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/_GL_CXXDEFS/,$$p' \ < $(top_srcdir)/build-aux/snippet/c++defs.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += c++defs.h c++defs.h-t CXXDEFS_H=c++defs.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/c++defs.h ## end gnulib module snippet/c++defs ## begin gnulib module snippet/warn-on-use BUILT_SOURCES += warn-on-use.h # The warn-on-use.h that gets inserted into generated .h files is the same as # build-aux/snippet/warn-on-use.h, except that it has the copyright header cut # off. warn-on-use.h: $(top_srcdir)/build-aux/snippet/warn-on-use.h $(AM_V_GEN)rm -f $@-t $@ && \ sed -n -e '/^.ifndef/,$$p' \ < $(top_srcdir)/build-aux/snippet/warn-on-use.h \ > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += warn-on-use.h warn-on-use.h-t WARN_ON_USE_H=warn-on-use.h EXTRA_DIST += $(top_srcdir)/build-aux/snippet/warn-on-use.h ## end gnulib module snippet/warn-on-use ## begin gnulib module stdarg BUILT_SOURCES += $(STDARG_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDARG_H stdarg.h: stdarg.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDARG_H''@|$(NEXT_STDARG_H)|g' \ < $(srcdir)/stdarg.in.h; \ } > $@-t && \ mv $@-t $@ else stdarg.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdarg.h stdarg.h-t EXTRA_DIST += stdarg.in.h ## end gnulib module stdarg ## begin gnulib module stddef BUILT_SOURCES += $(STDDEF_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDDEF_H stddef.h: stddef.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \ < $(srcdir)/stddef.in.h; \ } > $@-t && \ mv $@-t $@ else stddef.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stddef.h stddef.h-t EXTRA_DIST += stddef.in.h ## end gnulib module stddef ## begin gnulib module stdint BUILT_SOURCES += $(STDINT_H) # We need the following in order to create when the system # doesn't have one that works with the given compiler. if GL_GENERATE_STDINT_H stdint.h: stdint.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \ < $(srcdir)/stdint.in.h; \ } > $@-t && \ mv $@-t $@ else stdint.h: $(top_builddir)/config.status rm -f $@ endif MOSTLYCLEANFILES += stdint.h stdint.h-t EXTRA_DIST += stdint.in.h ## end gnulib module stdint ## begin gnulib module stdio BUILT_SOURCES += stdio.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \ -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \ -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \ -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \ -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \ -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \ -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \ -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \ -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \ -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \ -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \ -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \ -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \ -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \ -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \ -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \ -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \ -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \ -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \ -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \ -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \ -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \ -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \ -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \ -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \ -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \ -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \ -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \ -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \ -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \ -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \ -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \ -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \ -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \ -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \ -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \ -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \ < $(srcdir)/stdio.in.h | \ sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += stdio.h stdio.h-t EXTRA_DIST += stdio.in.h ## end gnulib module stdio ## begin gnulib module stdlib BUILT_SOURCES += stdlib.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \ -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \ -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \ -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \ -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \ -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \ -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \ -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \ -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \ -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \ -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \ -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \ -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \ -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \ -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \ -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \ -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \ -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \ -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \ -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \ -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \ -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \ -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \ -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \ -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \ < $(srcdir)/stdlib.in.h | \ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \ -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \ -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \ -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _Noreturn/r $(_NORETURN_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += stdlib.h stdlib.h-t EXTRA_DIST += stdlib.in.h ## end gnulib module stdlib ## begin gnulib module sys_stat BUILT_SOURCES += sys/stat.h # We need the following in order to create when the system # has one that is incomplete. sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \ -e 's/@''GNULIB_FCHMODAT''@/$(GNULIB_FCHMODAT)/g' \ -e 's/@''GNULIB_FSTAT''@/$(GNULIB_FSTAT)/g' \ -e 's/@''GNULIB_FSTATAT''@/$(GNULIB_FSTATAT)/g' \ -e 's/@''GNULIB_FUTIMENS''@/$(GNULIB_FUTIMENS)/g' \ -e 's/@''GNULIB_LCHMOD''@/$(GNULIB_LCHMOD)/g' \ -e 's/@''GNULIB_LSTAT''@/$(GNULIB_LSTAT)/g' \ -e 's/@''GNULIB_MKDIRAT''@/$(GNULIB_MKDIRAT)/g' \ -e 's/@''GNULIB_MKFIFO''@/$(GNULIB_MKFIFO)/g' \ -e 's/@''GNULIB_MKFIFOAT''@/$(GNULIB_MKFIFOAT)/g' \ -e 's/@''GNULIB_MKNOD''@/$(GNULIB_MKNOD)/g' \ -e 's/@''GNULIB_MKNODAT''@/$(GNULIB_MKNODAT)/g' \ -e 's/@''GNULIB_STAT''@/$(GNULIB_STAT)/g' \ -e 's/@''GNULIB_UTIMENSAT''@/$(GNULIB_UTIMENSAT)/g' \ -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \ -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \ -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \ -e 's|@''HAVE_LCHMOD''@|$(HAVE_LCHMOD)|g' \ -e 's|@''HAVE_LSTAT''@|$(HAVE_LSTAT)|g' \ -e 's|@''HAVE_MKDIRAT''@|$(HAVE_MKDIRAT)|g' \ -e 's|@''HAVE_MKFIFO''@|$(HAVE_MKFIFO)|g' \ -e 's|@''HAVE_MKFIFOAT''@|$(HAVE_MKFIFOAT)|g' \ -e 's|@''HAVE_MKNOD''@|$(HAVE_MKNOD)|g' \ -e 's|@''HAVE_MKNODAT''@|$(HAVE_MKNODAT)|g' \ -e 's|@''HAVE_UTIMENSAT''@|$(HAVE_UTIMENSAT)|g' \ -e 's|@''REPLACE_FSTAT''@|$(REPLACE_FSTAT)|g' \ -e 's|@''REPLACE_FSTATAT''@|$(REPLACE_FSTATAT)|g' \ -e 's|@''REPLACE_FUTIMENS''@|$(REPLACE_FUTIMENS)|g' \ -e 's|@''REPLACE_LSTAT''@|$(REPLACE_LSTAT)|g' \ -e 's|@''REPLACE_MKDIR''@|$(REPLACE_MKDIR)|g' \ -e 's|@''REPLACE_MKFIFO''@|$(REPLACE_MKFIFO)|g' \ -e 's|@''REPLACE_MKNOD''@|$(REPLACE_MKNOD)|g' \ -e 's|@''REPLACE_STAT''@|$(REPLACE_STAT)|g' \ -e 's|@''REPLACE_UTIMENSAT''@|$(REPLACE_UTIMENSAT)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_stat.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/stat.h sys/stat.h-t MOSTLYCLEANDIRS += sys EXTRA_DIST += sys_stat.in.h ## end gnulib module sys_stat ## begin gnulib module sys_time BUILT_SOURCES += sys/time.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \ -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ -e 's/@''REPLACE_STRUCT_TIMEVAL''@/$(REPLACE_STRUCT_TIMEVAL)/g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/sys_time.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/time.h sys/time.h-t EXTRA_DIST += sys_time.in.h ## end gnulib module sys_time ## begin gnulib module sys_types BUILT_SOURCES += sys/types.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status $(AM_V_at)$(MKDIR_P) sys $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ < $(srcdir)/sys_types.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += sys/types.h sys/types.h-t EXTRA_DIST += sys_types.in.h ## end gnulib module sys_types ## begin gnulib module time BUILT_SOURCES += time.h # We need the following in order to create when the system # doesn't have one that works with the given compiler. time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \ -e 's/@''GNULIB_MKTIME''@/$(GNULIB_MKTIME)/g' \ -e 's/@''GNULIB_NANOSLEEP''@/$(GNULIB_NANOSLEEP)/g' \ -e 's/@''GNULIB_STRPTIME''@/$(GNULIB_STRPTIME)/g' \ -e 's/@''GNULIB_TIMEGM''@/$(GNULIB_TIMEGM)/g' \ -e 's/@''GNULIB_TIME_R''@/$(GNULIB_TIME_R)/g' \ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \ -e 's|@''HAVE_TIMEGM''@|$(HAVE_TIMEGM)|g' \ -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \ -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \ -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \ -e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \ -e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e 's|@''TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ < $(srcdir)/time.in.h; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += time.h time.h-t EXTRA_DIST += time.in.h ## end gnulib module time ## begin gnulib module timespec libgnu_la_SOURCES += timespec.c EXTRA_DIST += timespec.h ## end gnulib module timespec ## begin gnulib module unistd BUILT_SOURCES += unistd.h libgnu_la_SOURCES += unistd.c # We need the following in order to create an empty placeholder for # when the system doesn't have one. unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ sed -e 's|@''GUARD_PREFIX''@|GL|g' \ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \ -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \ -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \ -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \ -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \ -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \ -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \ -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \ -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \ -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \ -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \ -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \ -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \ -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \ -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \ -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \ -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \ -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \ -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \ -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \ -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \ -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \ -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \ -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \ -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \ -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \ -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \ -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \ -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \ -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \ -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \ -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \ -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \ -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \ -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \ -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \ -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \ -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \ -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \ -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \ -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \ < $(srcdir)/unistd.in.h | \ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \ -e 's|@''HAVE_GETLOGIN''@|$(HAVE_GETLOGIN)|g' \ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \ | \ sed -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \ } > $@-t && \ mv $@-t $@ MOSTLYCLEANFILES += unistd.h unistd.h-t EXTRA_DIST += unistd.in.h ## end gnulib module unistd ## begin gnulib module update-copyright EXTRA_DIST += $(top_srcdir)/build-aux/update-copyright ## end gnulib module update-copyright ## begin gnulib module useless-if-before-free EXTRA_DIST += $(top_srcdir)/build-aux/useless-if-before-free ## end gnulib module useless-if-before-free ## begin gnulib module vc-list-files EXTRA_DIST += $(top_srcdir)/build-aux/vc-list-files ## end gnulib module vc-list-files ## begin gnulib module version-etc libgnu_la_SOURCES += version-etc.h version-etc.c ## end gnulib module version-etc ## begin gnulib module version-etc-fsf libgnu_la_SOURCES += version-etc-fsf.c ## end gnulib module version-etc-fsf mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ echo "rmdir $$dir"; rmdir $$dir; \ fi; \ done; \ : libtasn1-3.4/examples/0000775000000000000000000000000012244722065011670 500000000000000libtasn1-3.4/examples/asn1Coding_test.asg0000664000000000000000000000006112244720630015322 00000000000000 TEST Test.Sequence1 int1 10 int2 -10 libtasn1-3.4/examples/asn1Coding_test.asn0000664000000000000000000000153412244720630015337 00000000000000Test { } DEFINITIONS IMPLICIT TAGS ::= BEGIN Sequence1 ::= SEQUENCE { int1 INTEGER, int2 INTEGER } END -- Copyright (C) 2002-2013 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . libtasn1-3.4/examples/pkix.asn0000664000000000000000000007712212244720630013273 00000000000000-- Copyright (C) 2002-2013 Free Software Foundation, Inc. -- -- This file is part of LIBTASN1. -- -- 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 . PKIX1Implicit88 {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)} DEFINITIONS IMPLICIT TAGS ::= BEGIN -- ISO arc for standard certificate and CRL extensions id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} -- authority key identifier OID and syntax id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } AuthorityKeyIdentifier ::= SEQUENCE { keyIdentifier [0] KeyIdentifier OPTIONAL, authorityCertIssuer [1] GeneralNames OPTIONAL, authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL } -- authorityCertIssuer and authorityCertSerialNumber shall both -- be present or both be absgent KeyIdentifier ::= OCTET STRING -- subject key identifier OID and syntax id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } SubjectKeyIdentifier ::= KeyIdentifier -- key usage extension OID and syntax id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } KeyUsage ::= BIT STRING { digitalSignature (0), nonRepudiation (1), keyEncipherment (2), dataEncipherment (3), keyAgreement (4), keyCertSign (5), cRLSign (6), encipherOnly (7), decipherOnly (8) } -- private key usage period extension OID and syntax id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 } PrivateKeyUsagePeriod ::= SEQUENCE { notBefore [0] GeneralizedTime OPTIONAL, notAfter [1] GeneralizedTime OPTIONAL } -- either notBefore or notAfter shall be present -- certificate policies extension OID and syntax id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation PolicyInformation ::= SEQUENCE { policyIdentifier CertPolicyId, policyQualifiers SEQUENCE SIZE (1..MAX) OF PolicyQualifierInfo OPTIONAL } CertPolicyId ::= OBJECT IDENTIFIER PolicyQualifierInfo ::= SEQUENCE { policyQualifierId PolicyQualifierId, qualifier ANY DEFINED BY policyQualifierId } -- Implementations that recognize additional policy qualifiers shall -- augment the following definition for PolicyQualifierId PolicyQualifierId ::= OBJECT IDENTIFIER -- ( id-qt-cps | id-qt-unotice ) -- CPS pointer qualifier CPSuri ::= IA5String -- user notice qualifier UserNotice ::= SEQUENCE { noticeRef NoticeReference OPTIONAL, explicitText DisplayText OPTIONAL} NoticeReference ::= SEQUENCE { organization DisplayText, noticeNumbers SEQUENCE OF INTEGER } DisplayText ::= CHOICE { visibleString VisibleString (SIZE (1..200)), bmpString BMPString (SIZE (1..200)), utf8String UTF8String (SIZE (1..200)) } -- policy mapping extension OID and syntax id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { issuerDomainPolicy CertPolicyId, subjectDomainPolicy CertPolicyId } -- subject alternative name extension OID and syntax id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } SubjectAltName ::= GeneralNames GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] AnotherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER } -- AnotherName replaces OTHER-NAME ::= TYPE-IDENTIFIER, as -- TYPE-IDENTIFIER is not supported in the '88 ASN.1 syntax AnotherName ::= SEQUENCE { type-id OBJECT IDENTIFIER, value [0] EXPLICIT ANY DEFINED BY type-id } EDIPartyName ::= SEQUENCE { nameAssigner [0] DirectoryString OPTIONAL, partyName [1] DirectoryString } -- issuer alternative name extension OID and syntax id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } IssuerAltName ::= GeneralNames id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute -- basic constraints extension OID and syntax id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } BasicConstraints ::= SEQUENCE { cA BOOLEAN DEFAULT FALSE, pathLenConstraint INTEGER (0..MAX) OPTIONAL } -- name constraints extension OID and syntax id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } NameConstraints ::= SEQUENCE { permittedSubtrees [0] GeneralSubtrees OPTIONAL, excludedSubtrees [1] GeneralSubtrees OPTIONAL } GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree GeneralSubtree ::= SEQUENCE { base GeneralName, minimum [0] BaseDistance DEFAULT 0, maximum [1] BaseDistance OPTIONAL } BaseDistance ::= INTEGER (0..MAX) -- policy constraints extension OID and syntax id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } PolicyConstraints ::= SEQUENCE { requireExplicitPolicy [0] SkipCerts OPTIONAL, inhibitPolicyMapping [1] SkipCerts OPTIONAL } SkipCerts ::= INTEGER (0..MAX) -- CRL distribution points extension OID and syntax id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31} CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint DistributionPoint ::= SEQUENCE { distributionPoint [0] DistributionPointName OPTIONAL, reasons [1] ReasonFlags OPTIONAL, cRLIssuer [2] GeneralNames OPTIONAL } DistributionPointName ::= CHOICE { fullName [0] GeneralNames, nameRelativeToCRLIssuer [1] RelativeDistinguishedName } ReasonFlags ::= BIT STRING { unused (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6) } -- extended key usage extension OID and syntax id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37} ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId KeyPurposeId ::= OBJECT IDENTIFIER -- extended key purpose OIDs id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } id-kp-ipsecEndSystem OBJECT IDENTIFIER ::= { id-kp 5 } id-kp-ipsecTunnel OBJECT IDENTIFIER ::= { id-kp 6 } id-kp-ipsecUser OBJECT IDENTIFIER ::= { id-kp 7 } id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } -- authority info access id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } AuthorityInfoAccessSyntax ::= SEQUENCE SIZE (1..MAX) OF AccessDescription AccessDescription ::= SEQUENCE { accessMethod OBJECT IDENTIFIER, accessLocation GeneralName } -- CRL number extension OID and syntax id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } CRLNumber ::= INTEGER (0..MAX) -- issuing distribution point extension OID and syntax id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 } IssuingDistributionPoint ::= SEQUENCE { distributionPoint [0] DistributionPointName OPTIONAL, onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, onlySomeReasons [3] ReasonFlags OPTIONAL, indirectCRL [4] BOOLEAN DEFAULT FALSE } id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 } -- deltaCRLIndicator ::= BaseCRLNumber BaseCRLNumber ::= CRLNumber -- CRL reasons extension OID and syntax id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 } CRLReason ::= ENUMERATED { unspecified (0), keyCompromise (1), cACompromise (2), affiliationChanged (3), superseded (4), cessationOfOperation (5), certificateHold (6), removeFromCRL (8) } -- certificate issuer CRL entry extension OID and syntax id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 } CertificateIssuer ::= GeneralNames -- hold instruction extension OID and syntax id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 } HoldInstructionCode ::= OBJECT IDENTIFIER -- ANSI x9 holdinstructions -- ANSI x9 arc holdinstruction arc holdInstruction OBJECT IDENTIFIER ::= {joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2} -- ANSI X9 holdinstructions referenced by this standard id-holdinstruction-none OBJECT IDENTIFIER ::= {holdInstruction 1} -- deprecated id-holdinstruction-callissuer OBJECT IDENTIFIER ::= {holdInstruction 2} id-holdinstruction-reject OBJECT IDENTIFIER ::= {holdInstruction 3} -- invalidity date CRL entry extension OID and syntax id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 } InvalidityDate ::= GeneralizedTime -- -------------------------------------- -- EXPLICIT -- -------------------------------------- -- UNIVERSAL Types defined in '93 and '98 ASN.1 -- but required by this specification VisibleString ::= [UNIVERSAL 26] IMPLICIT OCTET STRING NumericString ::= [UNIVERSAL 18] IMPLICIT OCTET STRING IA5String ::= [UNIVERSAL 22] IMPLICIT OCTET STRING TeletexString ::= [UNIVERSAL 20] IMPLICIT OCTET STRING PrintableString ::= [UNIVERSAL 19] IMPLICIT OCTET STRING UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING -- UniversalString is defined in ASN.1:1993 BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING -- BMPString is the subtype of UniversalString and models -- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1 UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING -- The content of this type conforms to RFC 2279. -- PKIX specific OIDs id-pkix OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) } -- PKIX arcs id-pe OBJECT IDENTIFIER ::= { id-pkix 1 } -- arc for private certificate extensions id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } -- arc for policy qualifier types id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } -- arc for extended key purpose OIDS id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } -- arc for access descriptors -- policyQualifierIds for Internet policy qualifiers id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } -- OID for CPS qualifier id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } -- OID for user notice qualifier -- access descriptor definitions id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 } id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } -- attribute data types -- Attribute ::= SEQUENCE { type AttributeType, values SET OF AttributeValue -- at least one value is required -- } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } -- suggested naming attributes: Definition of the following -- information object set may be augmented to meet local -- requirements. Note that deleting members of the set may -- prevent interoperability with conforming implementations. -- presented in pairs: the AttributeType followed by the -- type definition for the corresponding AttributeValue -- Arc for standard naming attributes id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4} -- Attributes of type NameDirectoryString id-at-name AttributeType ::= {id-at 41} id-at-surname AttributeType ::= {id-at 4} id-at-givenName AttributeType ::= {id-at 42} id-at-initials AttributeType ::= {id-at 43} id-at-generationQualifier AttributeType ::= {id-at 44} X520name ::= CHOICE { teletexString TeletexString (SIZE (1..ub-name)), printableString PrintableString (SIZE (1..ub-name)), universalString UniversalString (SIZE (1..ub-name)), utf8String UTF8String (SIZE (1..ub-name)), bmpString BMPString (SIZE(1..ub-name)) } -- id-at-commonName AttributeType ::= {id-at 3} X520CommonName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-common-name)), printableString PrintableString (SIZE (1..ub-common-name)), universalString UniversalString (SIZE (1..ub-common-name)), utf8String UTF8String (SIZE (1..ub-common-name)), bmpString BMPString (SIZE(1..ub-common-name)) } -- id-at-localityName AttributeType ::= {id-at 7} X520LocalityName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-locality-name)), printableString PrintableString (SIZE (1..ub-locality-name)), universalString UniversalString (SIZE (1..ub-locality-name)), utf8String UTF8String (SIZE (1..ub-locality-name)), bmpString BMPString (SIZE(1..ub-locality-name)) } -- id-at-stateOrProvinceName AttributeType ::= {id-at 8} X520StateOrProvinceName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-state-name)), printableString PrintableString (SIZE (1..ub-state-name)), universalString UniversalString (SIZE (1..ub-state-name)), utf8String UTF8String (SIZE (1..ub-state-name)), bmpString BMPString (SIZE(1..ub-state-name)) } -- id-at-organizationName AttributeType ::= {id-at 10} X520OrganizationName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-organization-name)), printableString PrintableString (SIZE (1..ub-organization-name)), universalString UniversalString (SIZE (1..ub-organization-name)), utf8String UTF8String (SIZE (1..ub-organization-name)), bmpString BMPString (SIZE(1..ub-organization-name)) } -- id-at-organizationalUnitName AttributeType ::= {id-at 11} X520OrganizationalUnitName ::= CHOICE { teletexString TeletexString (SIZE (1..ub-organizational-unit-name)), printableString PrintableString (SIZE (1..ub-organizational-unit-name)), universalString UniversalString (SIZE (1..ub-organizational-unit-name)), utf8String UTF8String (SIZE (1..ub-organizational-unit-name)), bmpString BMPString (SIZE(1..ub-organizational-unit-name)) } -- id-at-title AttributeType ::= {id-at 12} X520Title ::= CHOICE { teletexString TeletexString (SIZE (1..ub-title)), printableString PrintableString (SIZE (1..ub-title)), universalString UniversalString (SIZE (1..ub-title)), utf8String UTF8String (SIZE (1..ub-title)), bmpString BMPString (SIZE(1..ub-title)) } -- id-at-dnQualifier AttributeType ::= {id-at 46} X520dnQualifier ::= PrintableString id-at-countryName AttributeType ::= {id-at 6} X520countryName ::= PrintableString (SIZE (2)) -- IS 3166 codes -- Legacy attributes pkcs-9 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } emailAddress AttributeType ::= { pkcs-9 1 } Pkcs9email ::= IA5String (SIZE (1..ub-emailaddress-length)) -- naming data types -- Name ::= CHOICE { -- only one possibility for now -- rdnSequence RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName DistinguishedName ::= RDNSequence RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue -- Directory string type -- DirectoryString ::= CHOICE { teletexString TeletexString (SIZE (1..MAX)), printableString PrintableString (SIZE (1..MAX)), universalString UniversalString (SIZE (1..MAX)), utf8String UTF8String (SIZE (1..MAX)), bmpString BMPString (SIZE(1..MAX)) } -- -------------------------------------------------------- -- certificate and CRL specific structures begin here -- -------------------------------------------------------- Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 extensions [3] EXPLICIT Extensions OPTIONAL -- If present, version shall be v3 -- } Version ::= INTEGER { v1(0), v2(1), v3(2) } CertificateSerialNumber ::= INTEGER Validity ::= SEQUENCE { notBefore Time, notAfter Time } Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime } UniqueIdentifier ::= BIT STRING SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING } Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension Extension ::= SEQUENCE { extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING } -- ------------------------------------------ -- CRL structures -- ------------------------------------------ CertificateList ::= SEQUENCE { tbsCertList TBSCertList, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING } TBSCertList ::= SEQUENCE { version Version OPTIONAL, -- if present, shall be v2 signature AlgorithmIdentifier, issuer Name, thisUpdate Time, nextUpdate Time OPTIONAL, revokedCertificates SEQUENCE OF SEQUENCE { userCertificate CertificateSerialNumber, revocationDate Time, crlEntryExtensions Extensions OPTIONAL -- if present, shall be v2 } OPTIONAL, crlExtensions [0] EXPLICIT Extensions OPTIONAL -- if present, shall be v2 -- } -- Version, Time, CertificateSerialNumber, and Extensions were -- defined earlier for use in the certificate structure AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } -- contains a value of the type -- registered for use with the -- algorithm object identifier value -- Algorithm OIDs and parameter structures pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } id-dsa-with-sha1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } dhpublicnumber OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1 } DomainParameters ::= SEQUENCE { p INTEGER, -- odd prime, p=jq +1 g INTEGER, -- generator, g q INTEGER, -- factor of p-1 j INTEGER OPTIONAL, -- subgroup factor, j>= 2 validationParms ValidationParms OPTIONAL } ValidationParms ::= SEQUENCE { seed BIT STRING, pgenCounter INTEGER } id-dsa OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } Dss-Parms ::= SEQUENCE { p INTEGER, q INTEGER, g INTEGER } -- x400 address syntax starts here -- OR Names ORAddress ::= SEQUENCE { built-in-standard-attributes BuiltInStandardAttributes, built-in-domain-defined-attributes BuiltInDomainDefinedAttributes OPTIONAL, -- see also teletex-domain-defined-attributes extension-attributes ExtensionAttributes OPTIONAL } -- The OR-address is semantically absent from the OR-name if the -- built-in-standard-attribute sequence is empty and the -- built-in-domain-defined-attributes and extension-attributes are -- both omitted. -- Built-in Standard Attributes BuiltInStandardAttributes ::= SEQUENCE { country-name CountryName OPTIONAL, administration-domain-name AdministrationDomainName OPTIONAL, network-address [0] EXPLICIT NetworkAddress OPTIONAL, -- see also extended-network-address terminal-identifier [1] EXPLICIT TerminalIdentifier OPTIONAL, private-domain-name [2] EXPLICIT PrivateDomainName OPTIONAL, organization-name [3] EXPLICIT OrganizationName OPTIONAL, -- see also teletex-organization-name numeric-user-identifier [4] EXPLICIT NumericUserIdentifier OPTIONAL, personal-name [5] EXPLICIT PersonalName OPTIONAL, -- see also teletex-personal-name organizational-unit-names [6] EXPLICIT OrganizationalUnitNames OPTIONAL -- see also teletex-organizational-unit-names -- } CountryName ::= [APPLICATION 1] CHOICE { x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), iso-3166-alpha2-code PrintableString (SIZE (ub-country-name-alpha-length)) } AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE { numeric NumericString (SIZE (0..ub-domain-name-length)), printable PrintableString (SIZE (0..ub-domain-name-length)) } NetworkAddress ::= X121Address -- see also extended-network-address X121Address ::= NumericString (SIZE (1..ub-x121-address-length)) TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length)) PrivateDomainName ::= CHOICE { numeric NumericString (SIZE (1..ub-domain-name-length)), printable PrintableString (SIZE (1..ub-domain-name-length)) } OrganizationName ::= PrintableString (SIZE (1..ub-organization-name-length)) -- see also teletex-organization-name NumericUserIdentifier ::= NumericString (SIZE (1..ub-numeric-user-id-length)) PersonalName ::= SET { surname [0] PrintableString (SIZE (1..ub-surname-length)), given-name [1] PrintableString (SIZE (1..ub-given-name-length)) OPTIONAL, initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL, generation-qualifier [3] PrintableString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL } -- see also teletex-personal-name OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF OrganizationalUnitName -- see also teletex-organizational-unit-names OrganizationalUnitName ::= PrintableString (SIZE (1..ub-organizational-unit-name-length)) -- Built-in Domain-defined Attributes BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE (1..ub-domain-defined-attributes) OF BuiltInDomainDefinedAttribute BuiltInDomainDefinedAttribute ::= SEQUENCE { type PrintableString (SIZE (1..ub-domain-defined-attribute-type-length)), value PrintableString (SIZE (1..ub-domain-defined-attribute-value-length))} -- Extension Attributes ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF ExtensionAttribute ExtensionAttribute ::= SEQUENCE { extension-attribute-type [0] EXPLICIT INTEGER (0..ub-extension-attributes), extension-attribute-value [1] EXPLICIT ANY DEFINED BY extension-attribute-type } -- Extension types and attribute values -- common-name INTEGER ::= 1 CommonName ::= PrintableString (SIZE (1..ub-common-name-length)) teletex-common-name INTEGER ::= 2 TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length)) teletex-organization-name INTEGER ::= 3 TeletexOrganizationName ::= TeletexString (SIZE (1..ub-organization-name-length)) teletex-personal-name INTEGER ::= 4 TeletexPersonalName ::= SET { surname [0] EXPLICIT TeletexString (SIZE (1..ub-surname-length)), given-name [1] EXPLICIT TeletexString (SIZE (1..ub-given-name-length)) OPTIONAL, initials [2] EXPLICIT TeletexString (SIZE (1..ub-initials-length)) OPTIONAL, generation-qualifier [3] EXPLICIT TeletexString (SIZE (1..ub-generation-qualifier-length)) OPTIONAL } teletex-organizational-unit-names INTEGER ::= 5 TeletexOrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units) OF TeletexOrganizationalUnitName TeletexOrganizationalUnitName ::= TeletexString (SIZE (1..ub-organizational-unit-name-length)) pds-name INTEGER ::= 7 PDSName ::= PrintableString (SIZE (1..ub-pds-name-length)) physical-delivery-country-name INTEGER ::= 8 PhysicalDeliveryCountryName ::= CHOICE { x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)), iso-3166-alpha2-code PrintableString (SIZE (ub-country-name-alpha-length)) } postal-code INTEGER ::= 9 PostalCode ::= CHOICE { numeric-code NumericString (SIZE (1..ub-postal-code-length)), printable-code PrintableString (SIZE (1..ub-postal-code-length)) } physical-delivery-office-name INTEGER ::= 10 PhysicalDeliveryOfficeName ::= PDSParameter physical-delivery-office-number INTEGER ::= 11 PhysicalDeliveryOfficeNumber ::= PDSParameter extension-OR-address-components INTEGER ::= 12 ExtensionORAddressComponents ::= PDSParameter physical-delivery-personal-name INTEGER ::= 13 PhysicalDeliveryPersonalName ::= PDSParameter physical-delivery-organization-name INTEGER ::= 14 PhysicalDeliveryOrganizationName ::= PDSParameter extension-physical-delivery-address-components INTEGER ::= 15 ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter unformatted-postal-address INTEGER ::= 16 UnformattedPostalAddress ::= SET { printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL, teletex-string TeletexString (SIZE (1..ub-unformatted-address-length)) OPTIONAL } street-address INTEGER ::= 17 StreetAddress ::= PDSParameter post-office-box-address INTEGER ::= 18 PostOfficeBoxAddress ::= PDSParameter poste-restante-address INTEGER ::= 19 PosteRestanteAddress ::= PDSParameter unique-postal-name INTEGER ::= 20 UniquePostalName ::= PDSParameter local-postal-attributes INTEGER ::= 21 LocalPostalAttributes ::= PDSParameter PDSParameter ::= SET { printable-string PrintableString (SIZE(1..ub-pds-parameter-length)) OPTIONAL, teletex-string TeletexString (SIZE(1..ub-pds-parameter-length)) OPTIONAL } extended-network-address INTEGER ::= 22 ExtendedNetworkAddress ::= CHOICE { e163-4-address SEQUENCE { number [0] EXPLICIT NumericString (SIZE (1..ub-e163-4-number-length)), sub-address [1] EXPLICIT NumericString (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL }, psap-address [0] EXPLICIT PresentationAddress } PresentationAddress ::= SEQUENCE { pSelector [0] EXPLICIT OCTET STRING OPTIONAL, sSelector [1] EXPLICIT OCTET STRING OPTIONAL, tSelector [2] EXPLICIT OCTET STRING OPTIONAL, nAddresses [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING } terminal-type INTEGER ::= 23 TerminalType ::= INTEGER { telex (3), teletex (4), g3-facsimile (5), g4-facsimile (6), ia5-terminal (7), videotex (8) } (0..ub-integer-options) -- Extension Domain-defined Attributes teletex-domain-defined-attributes INTEGER ::= 6 TeletexDomainDefinedAttributes ::= SEQUENCE SIZE (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute TeletexDomainDefinedAttribute ::= SEQUENCE { type TeletexString (SIZE (1..ub-domain-defined-attribute-type-length)), value TeletexString (SIZE (1..ub-domain-defined-attribute-value-length)) } -- specifications of Upper Bounds shall be regarded as mandatory -- from Annex B of ITU-T X.411 Reference Definition of MTS Parameter -- Upper Bounds -- Upper Bounds ub-name INTEGER ::= 32768 ub-common-name INTEGER ::= 64 ub-locality-name INTEGER ::= 128 ub-state-name INTEGER ::= 128 ub-organization-name INTEGER ::= 64 ub-organizational-unit-name INTEGER ::= 64 ub-title INTEGER ::= 64 ub-match INTEGER ::= 128 ub-emailaddress-length INTEGER ::= 128 ub-common-name-length INTEGER ::= 64 ub-country-name-alpha-length INTEGER ::= 2 ub-country-name-numeric-length INTEGER ::= 3 ub-domain-defined-attributes INTEGER ::= 4 ub-domain-defined-attribute-type-length INTEGER ::= 8 ub-domain-defined-attribute-value-length INTEGER ::= 128 ub-domain-name-length INTEGER ::= 16 ub-extension-attributes INTEGER ::= 256 ub-e163-4-number-length INTEGER ::= 15 ub-e163-4-sub-address-length INTEGER ::= 40 ub-generation-qualifier-length INTEGER ::= 3 ub-given-name-length INTEGER ::= 16 ub-initials-length INTEGER ::= 5 ub-integer-options INTEGER ::= 256 ub-numeric-user-id-length INTEGER ::= 32 ub-organization-name-length INTEGER ::= 64 ub-organizational-unit-name-length INTEGER ::= 32 ub-organizational-units INTEGER ::= 4 ub-pds-name-length INTEGER ::= 16 ub-pds-parameter-length INTEGER ::= 30 ub-pds-physical-address-lines INTEGER ::= 6 ub-postal-code-length INTEGER ::= 16 ub-surname-length INTEGER ::= 40 ub-terminal-id-length INTEGER ::= 24 ub-unformatted-address-length INTEGER ::= 180 ub-x121-address-length INTEGER ::= 16 -- Note - upper bounds on string types, such as TeletexString, are -- measured in characters. Excepting PrintableString or IA5String, a -- significantly greater number of octets will be required to hold -- such a value. As a minimum, 16 octets, or twice the specified upper -- bound, whichever is the larger, should be allowed for TeletexString. -- For UTF8String or UniversalString at least four times the upper -- bound should be allowed. END libtasn1-3.4/examples/CrlExample.c0000664000000000000000000003755012244720630014016 00000000000000/* * Copyright (C) 2000-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: CrlExample.c */ /* Description: An example on how to use the ASN1 */ /* parser with the Certificate.txt file */ /*****************************************************/ #include #include #include #include "libtasn1.h" static char * my_ltostr (long v, char *str) { long d, r; char temp[20]; int count, k, start; if (v < 0) { str[0] = '-'; start = 1; v = -v; } else start = 0; count = 0; do { d = v / 10; r = v - d * 10; temp[start + count] = '0' + (char) r; count++; v = d; } while (v); for (k = 0; k < count; k++) str[k + start] = temp[start + count - k - 1]; str[count + start] = 0; return str; } /******************************************************/ /* Function : get_name_type */ /* Description: analyze a structure of type Name */ /* Parameters: */ /* char *root: the structure identifier */ /* char *answer: the string with elements like: */ /* "C=US O=gov" */ /******************************************************/ static void get_Name_type (ASN1_TYPE cert_def, ASN1_TYPE cert, const char *root, unsigned char *ans) { int k, k2, result, len; char name[128], str[1024], str2[1024], name2[128], counter[5], name3[128]; ASN1_TYPE value = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; char *answer = (char *) ans; answer[0] = 0; k = 1; do { strcpy (name, root); strcat (name, ".rdnSequence.?"); my_ltostr (k, counter); strcat (name, counter); len = sizeof (str) - 1; result = asn1_read_value (cert, name, str, &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; k2 = 1; do { strcpy (name2, name); strcat (name2, ".?"); my_ltostr (k2, counter); strcat (name2, counter); len = sizeof (str) - 1; result = asn1_read_value (cert, name2, str, &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; strcpy (name3, name2); strcat (name3, ".type"); len = sizeof (str) - 1; result = asn1_read_value (cert, name3, str, &len); strcpy (name3, name2); strcat (name3, ".value"); if (result == ASN1_SUCCESS) { len = sizeof (str2); result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); result = asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " C="); strcat (answer, str); asn1_delete_structure (&value); } else { len = sizeof (str2); result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " O="); strcat (answer, str); asn1_delete_structure (&value); } else { len = sizeof (str2); result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " OU="); strcat (answer, str); asn1_delete_structure (&value); } } } } k2++; } while (1); k++; } while (1); } /******************************************************/ /* Function : create_certificate */ /* Description: creates a certificate named */ /* "certificate1". Values are the same */ /* as in rfc2459 Appendix D.1 */ /* Parameters: */ /* unsigned char *der: contains the der encoding */ /* int *der_len: number of bytes of der string */ /******************************************************/ static void create_CRL (ASN1_TYPE cert_def, unsigned char *der, int *der_len) { int result, k, len; unsigned char str[1024]; const unsigned char *str2; ASN1_TYPE crl = ASN1_TYPE_EMPTY; ASN1_TYPE value = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int max_len; max_len = *der_len; result = asn1_create_element (cert_def, "PKIX1Implicit88.CertificateList", &crl); /* Use the next 3 lines to visit the empty certificate */ /* printf("-----------------\n"); asn1_visit_tree(crl,""); printf("-----------------\n"); */ /* version: v2(1) */ result = asn1_write_value (crl, "tbsCertList.version", "v2", 0); /* signature: dsa-with-sha */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str, &len); result = asn1_write_value (crl, "tbsCertList.signature.algorithm", str, 1); result = asn1_write_value (crl, "tbsCertList.signature.parameters", NULL, 0); /* issuer: Country="US" Organization="gov" OrganizationUnit="nist" */ result = asn1_write_value (crl, "tbsCertList.issuer", "rdnSequence", 1); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST", "NEW", 1); /* C */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str, &len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520countryName", &value); result = asn1_write_value (value, "", "US", 2); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence", "NEW", 4); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST", "NEW", 4); /* O */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str, &len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.type", str, 8); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "gov", 3); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST", "NEW", 1); /* OU */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str, &len); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "nist", 4); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (crl, "tbsCertList.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); /* validity */ result = asn1_write_value (crl, "tbsCertList.thisUpdate", "utcTime", 1); result = asn1_write_value (crl, "tbsCertList.thisUpdate.utcTime", "970801000000Z", 1); result = asn1_write_value (crl, "tbsCertList.nextUpdate", "utcTime", 1); result = asn1_write_value (crl, "tbsCertList.nextUpdate.utcTime", "970808000000Z", 1); /* revokedCertificates */ result = asn1_write_value (crl, "tbsCertList.revokedCertificates", "NEW", 1); str[0] = 18; result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.userCertificate", str, 1); result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.revocationDate", "utcTime", 1); result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.revocationDate.utcTime", "970731000000Z", 1); result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions", "NEW", 1); len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-ce-cRLReasons", str, &len); result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions.?LAST.extnID", str, 1); /* reasonCode */ result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions.?LAST.critical", "FALSE", 1); str2 = (const unsigned char *) "\x0a\x01\x01"; result = asn1_write_value (crl, "tbsCertList.revokedCertificates.?LAST.crlEntryExtensions.?LAST.extnValue", str2, 3); /* crlExtensions */ result = asn1_write_value (crl, "tbsCertList.crlExtensions", NULL, 0); /* signatureAlgorithm: dsa-with-sha */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str, &len); result = asn1_write_value (crl, "signatureAlgorithm.algorithm", str, 1); result = asn1_write_value (crl, "signatureAlgorithm.parameters", NULL, 0); /* NO OPTION */ /* signature */ *der_len = max_len; result = asn1_der_coding (crl, "tbsCertList", der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("\n'tbsCertList' encoding creation: ERROR\n"); return; } /* add the lines for the signature on der[0]..der[der_len-1]: result in str2 */ result = asn1_write_value (crl, "signature", str2, 46 * 8); /* Use the next 3 lines to visit the certificate */ /* printf("-----------------\n"); asn1_visit_tree(crl,""); printf("-----------------\n"); */ *der_len = max_len; result = asn1_der_coding (crl, "", der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("\n'crl1' encoding creation: ERROR\n"); return; } /* Print the 'Certificate1' DER encoding */ printf ("-----------------\nCrl1 Encoding:\nNumber of bytes=%i\n", *der_len); for (k = 0; k < *der_len; k++) printf ("%02x ", der[k]); printf ("\n-----------------\n"); /* Clear the "certificate1" structure */ asn1_delete_structure (&crl); } /******************************************************/ /* Function : get_certificate */ /* Description: creates a certificate named */ /* "certificate2" from a der encoding */ /* string */ /* Parameters: */ /* unsigned char *der: the encoding string */ /* int der_len: number of bytes of der string */ /******************************************************/ static void get_CRL (ASN1_TYPE cert_def, unsigned char *der, int der_len) { int result, len, start, end; unsigned char str[1024], str2[1024]; ASN1_TYPE crl2 = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; asn1_create_element (cert_def, "PKIX1Implicit88.CertificateList", &crl2); result = asn1_der_decoding (&crl2, der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("Problems with DER encoding\n"); return; } /* issuer */ get_Name_type (cert_def, crl2, "tbsCertList.issuer", str); printf ("crl2:\nissuer: %s\n", str); /* Verify sign */ len = sizeof (str) - 1; result = asn1_read_value (crl2, "signatureAlgorithm.algorithm", str, &len); result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str2, &len); if (!strcmp ((char *) str, (char *) str2)) { /* dsa-with-sha */ result = asn1_der_decoding_startEnd (crl2, der, der_len, "tbsCertList", &start, &end); /* add the lines to calculate the sha on der[start]..der[end] */ result = asn1_read_value (crl2, "signature", str, &len); /* compare the previous value to signature ( with issuer public key) */ } /* Use the next 3 lines to visit the certificate */ /* printf("-----------------\n"); asn1_visit_tree(crl2,""); printf("-----------------\n"); */ /* Clear the "crl2" structure */ asn1_delete_structure (&crl2); } extern const ASN1_ARRAY_TYPE pkix_asn1_tab[]; /********************************************************/ /* Function : main */ /* Description: reads the certificate description. */ /* Creates a certificate and calculate */ /* the der encoding. After that creates */ /* another certificate from der string */ /********************************************************/ int main (int argc, char *argv[]) { int result, der_len; unsigned char der[1024]; ASN1_TYPE PKIX1Implicit88 = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; if (1) result = asn1_array2tree (pkix_asn1_tab, &PKIX1Implicit88, errorDescription); else result = asn1_parser2tree ("pkix.asn", &PKIX1Implicit88, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("%s\n", errorDescription); exit (1); } /* Use the following 3 lines to visit the PKIX1Implicit structures */ /* printf("-----------------\n"); asn1_visit_tree(cert_def,"PKIX1Implicit88"); printf("-----------------\n"); */ der_len = 1024; create_CRL (PKIX1Implicit88, der, &der_len); get_CRL (PKIX1Implicit88, der, der_len); /* Clear the "PKIX1Implicit88" structures */ asn1_delete_structure (&PKIX1Implicit88); return 0; } libtasn1-3.4/examples/pkix_asn1_tab.c0000664000000000000000000010147112244721003014472 00000000000000#if HAVE_CONFIG_H # include "config.h" #endif #include const asn1_static_node pkix_asn1_tab[] = { { "PKIX1Implicit88", 536875024, NULL }, { NULL, 1610612748, NULL }, { "iso", 1073741825, "1"}, { "identified-organization", 1073741825, "3"}, { "dod", 1073741825, "6"}, { "internet", 1073741825, "1"}, { "security", 1073741825, "5"}, { "mechanisms", 1073741825, "5"}, { "pkix", 1073741825, "7"}, { "id-mod", 1073741825, "0"}, { "id-pkix1-implicit-88", 1, "2"}, { "id-ce", 1879048204, NULL }, { "joint-iso-ccitt", 1073741825, "2"}, { "ds", 1073741825, "5"}, { NULL, 1, "29"}, { "id-ce-authorityKeyIdentifier", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "35"}, { "AuthorityKeyIdentifier", 1610612741, NULL }, { "keyIdentifier", 1610637314, "KeyIdentifier"}, { NULL, 4104, "0"}, { "authorityCertIssuer", 1610637314, "GeneralNames"}, { NULL, 4104, "1"}, { "authorityCertSerialNumber", 536895490, "CertificateSerialNumber"}, { NULL, 4104, "2"}, { "KeyIdentifier", 1073741831, NULL }, { "id-ce-subjectKeyIdentifier", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "14"}, { "SubjectKeyIdentifier", 1073741826, "KeyIdentifier"}, { "id-ce-keyUsage", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "15"}, { "KeyUsage", 1610874886, NULL }, { "digitalSignature", 1073741825, "0"}, { "nonRepudiation", 1073741825, "1"}, { "keyEncipherment", 1073741825, "2"}, { "dataEncipherment", 1073741825, "3"}, { "keyAgreement", 1073741825, "4"}, { "keyCertSign", 1073741825, "5"}, { "cRLSign", 1073741825, "6"}, { "encipherOnly", 1073741825, "7"}, { "decipherOnly", 1, "8"}, { "id-ce-privateKeyUsagePeriod", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "16"}, { "PrivateKeyUsagePeriod", 1610612741, NULL }, { "notBefore", 1610637349, NULL }, { NULL, 4104, "0"}, { "notAfter", 536895525, NULL }, { NULL, 4104, "1"}, { "id-ce-certificatePolicies", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "32"}, { "CertificatePolicies", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "PolicyInformation"}, { "PolicyInformation", 1610612741, NULL }, { "policyIdentifier", 1073741826, "CertPolicyId"}, { "policyQualifiers", 538984459, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "PolicyQualifierInfo"}, { "CertPolicyId", 1073741836, NULL }, { "PolicyQualifierInfo", 1610612741, NULL }, { "policyQualifierId", 1073741826, "PolicyQualifierId"}, { "qualifier", 541065229, NULL }, { "policyQualifierId", 1, NULL }, { "PolicyQualifierId", 1073741836, NULL }, { "CPSuri", 1073741853, NULL }, { "UserNotice", 1610612741, NULL }, { "noticeRef", 1073758210, "NoticeReference"}, { "explicitText", 16386, "DisplayText"}, { "NoticeReference", 1610612741, NULL }, { "organization", 1073741826, "DisplayText"}, { "noticeNumbers", 536870923, NULL }, { NULL, 3, NULL }, { "DisplayText", 1610612754, NULL }, { "visibleString", 1612709923, NULL }, { "200", 524298, "1"}, { "bmpString", 1612709921, NULL }, { "200", 524298, "1"}, { "utf8String", 538968098, NULL }, { "200", 524298, "1"}, { "id-ce-policyMappings", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "33"}, { "PolicyMappings", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 536870917, NULL }, { "issuerDomainPolicy", 1073741826, "CertPolicyId"}, { "subjectDomainPolicy", 2, "CertPolicyId"}, { "id-ce-subjectAltName", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "17"}, { "SubjectAltName", 1073741826, "GeneralNames"}, { "GeneralNames", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "GeneralName"}, { "GeneralName", 1610612754, NULL }, { "otherName", 1610620930, "AnotherName"}, { NULL, 4104, "0"}, { "rfc822Name", 1610620957, NULL }, { NULL, 4104, "1"}, { "dNSName", 1610620957, NULL }, { NULL, 4104, "2"}, { "x400Address", 1610620930, "ORAddress"}, { NULL, 4104, "3"}, { "directoryName", 1610620930, "Name"}, { NULL, 4104, "4"}, { "ediPartyName", 1610620930, "EDIPartyName"}, { NULL, 4104, "5"}, { "uniformResourceIdentifier", 1610620957, NULL }, { NULL, 4104, "6"}, { "iPAddress", 1610620935, NULL }, { NULL, 4104, "7"}, { "registeredID", 536879116, NULL }, { NULL, 4104, "8"}, { "AnotherName", 1610612741, NULL }, { "type-id", 1073741836, NULL }, { "value", 541073421, NULL }, { NULL, 1073743880, "0"}, { "type-id", 1, NULL }, { "EDIPartyName", 1610612741, NULL }, { "nameAssigner", 1610637314, "DirectoryString"}, { NULL, 4104, "0"}, { "partyName", 536879106, "DirectoryString"}, { NULL, 4104, "1"}, { "id-ce-issuerAltName", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "18"}, { "IssuerAltName", 1073741826, "GeneralNames"}, { "id-ce-subjectDirectoryAttributes", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "9"}, { "SubjectDirectoryAttributes", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "Attribute"}, { "id-ce-basicConstraints", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "19"}, { "BasicConstraints", 1610612741, NULL }, { "cA", 1610645508, NULL }, { NULL, 131081, NULL }, { "pathLenConstraint", 537411587, NULL }, { "0", 10, "MAX"}, { "id-ce-nameConstraints", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "30"}, { "NameConstraints", 1610612741, NULL }, { "permittedSubtrees", 1610637314, "GeneralSubtrees"}, { NULL, 4104, "0"}, { "excludedSubtrees", 536895490, "GeneralSubtrees"}, { NULL, 4104, "1"}, { "GeneralSubtrees", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "GeneralSubtree"}, { "GeneralSubtree", 1610612741, NULL }, { "base", 1073741826, "GeneralName"}, { "minimum", 1610653698, "BaseDistance"}, { NULL, 1073741833, "0"}, { NULL, 4104, "0"}, { "maximum", 536895490, "BaseDistance"}, { NULL, 4104, "1"}, { "BaseDistance", 1611137027, NULL }, { "0", 10, "MAX"}, { "id-ce-policyConstraints", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "36"}, { "PolicyConstraints", 1610612741, NULL }, { "requireExplicitPolicy", 1610637314, "SkipCerts"}, { NULL, 4104, "0"}, { "inhibitPolicyMapping", 536895490, "SkipCerts"}, { NULL, 4104, "1"}, { "SkipCerts", 1611137027, NULL }, { "0", 10, "MAX"}, { "id-ce-cRLDistributionPoints", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "31"}, { "CRLDistPointsSyntax", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "DistributionPoint"}, { "DistributionPoint", 1610612741, NULL }, { "distributionPoint", 1610637314, "DistributionPointName"}, { NULL, 4104, "0"}, { "reasons", 1610637314, "ReasonFlags"}, { NULL, 4104, "1"}, { "cRLIssuer", 536895490, "GeneralNames"}, { NULL, 4104, "2"}, { "DistributionPointName", 1610612754, NULL }, { "fullName", 1610620930, "GeneralNames"}, { NULL, 4104, "0"}, { "nameRelativeToCRLIssuer", 536879106, "RelativeDistinguishedName"}, { NULL, 4104, "1"}, { "ReasonFlags", 1610874886, NULL }, { "unused", 1073741825, "0"}, { "keyCompromise", 1073741825, "1"}, { "cACompromise", 1073741825, "2"}, { "affiliationChanged", 1073741825, "3"}, { "superseded", 1073741825, "4"}, { "cessationOfOperation", 1073741825, "5"}, { "certificateHold", 1, "6"}, { "id-ce-extKeyUsage", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "37"}, { "ExtKeyUsageSyntax", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "KeyPurposeId"}, { "KeyPurposeId", 1073741836, NULL }, { "id-kp-serverAuth", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "1"}, { "id-kp-clientAuth", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "2"}, { "id-kp-codeSigning", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "3"}, { "id-kp-emailProtection", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "4"}, { "id-kp-ipsecEndSystem", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "5"}, { "id-kp-ipsecTunnel", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "6"}, { "id-kp-ipsecUser", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "7"}, { "id-kp-timeStamping", 1879048204, NULL }, { NULL, 1073741825, "id-kp"}, { NULL, 1, "8"}, { "id-pe-authorityInfoAccess", 1879048204, NULL }, { NULL, 1073741825, "id-pe"}, { NULL, 1, "1"}, { "AuthorityInfoAccessSyntax", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "AccessDescription"}, { "AccessDescription", 1610612741, NULL }, { "accessMethod", 1073741836, NULL }, { "accessLocation", 2, "GeneralName"}, { "id-ce-cRLNumber", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "20"}, { "CRLNumber", 1611137027, NULL }, { "0", 10, "MAX"}, { "id-ce-issuingDistributionPoint", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "28"}, { "IssuingDistributionPoint", 1610612741, NULL }, { "distributionPoint", 1610637314, "DistributionPointName"}, { NULL, 4104, "0"}, { "onlyContainsUserCerts", 1610653700, NULL }, { NULL, 1073872905, NULL }, { NULL, 4104, "1"}, { "onlyContainsCACerts", 1610653700, NULL }, { NULL, 1073872905, NULL }, { NULL, 4104, "2"}, { "onlySomeReasons", 1610637314, "ReasonFlags"}, { NULL, 4104, "3"}, { "indirectCRL", 536911876, NULL }, { NULL, 1073872905, NULL }, { NULL, 4104, "4"}, { "id-ce-deltaCRLIndicator", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "27"}, { "BaseCRLNumber", 1073741826, "CRLNumber"}, { "id-ce-cRLReasons", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "21"}, { "CRLReason", 1610874901, NULL }, { "unspecified", 1073741825, "0"}, { "keyCompromise", 1073741825, "1"}, { "cACompromise", 1073741825, "2"}, { "affiliationChanged", 1073741825, "3"}, { "superseded", 1073741825, "4"}, { "cessationOfOperation", 1073741825, "5"}, { "certificateHold", 1073741825, "6"}, { "removeFromCRL", 1, "8"}, { "id-ce-certificateIssuer", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "29"}, { "CertificateIssuer", 1073741826, "GeneralNames"}, { "id-ce-holdInstructionCode", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "23"}, { "HoldInstructionCode", 1073741836, NULL }, { "holdInstruction", 1879048204, NULL }, { "joint-iso-itu-t", 1073741825, "2"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "x9cm", 1073741825, "10040"}, { NULL, 1, "2"}, { "id-holdinstruction-none", 1879048204, NULL }, { NULL, 1073741825, "holdInstruction"}, { NULL, 1, "1"}, { "id-holdinstruction-callissuer", 1879048204, NULL }, { NULL, 1073741825, "holdInstruction"}, { NULL, 1, "2"}, { "id-holdinstruction-reject", 1879048204, NULL }, { NULL, 1073741825, "holdInstruction"}, { NULL, 1, "3"}, { "id-ce-invalidityDate", 1879048204, NULL }, { NULL, 1073741825, "id-ce"}, { NULL, 1, "24"}, { "InvalidityDate", 1073741861, NULL }, { "VisibleString", 1610620935, NULL }, { NULL, 4360, "26"}, { "NumericString", 1610620935, NULL }, { NULL, 4360, "18"}, { "IA5String", 1610620935, NULL }, { NULL, 4360, "22"}, { "TeletexString", 1610620935, NULL }, { NULL, 4360, "20"}, { "PrintableString", 1610620935, NULL }, { NULL, 4360, "19"}, { "UniversalString", 1610620935, NULL }, { NULL, 4360, "28"}, { "BMPString", 1610620935, NULL }, { NULL, 4360, "30"}, { "UTF8String", 1610620935, NULL }, { NULL, 4360, "12"}, { "id-pkix", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "identified-organization", 1073741825, "3"}, { "dod", 1073741825, "6"}, { "internet", 1073741825, "1"}, { "security", 1073741825, "5"}, { "mechanisms", 1073741825, "5"}, { "pkix", 1, "7"}, { "id-pe", 1879048204, NULL }, { NULL, 1073741825, "id-pkix"}, { NULL, 1, "1"}, { "id-qt", 1879048204, NULL }, { NULL, 1073741825, "id-pkix"}, { NULL, 1, "2"}, { "id-kp", 1879048204, NULL }, { NULL, 1073741825, "id-pkix"}, { NULL, 1, "3"}, { "id-ad", 1879048204, NULL }, { NULL, 1073741825, "id-pkix"}, { NULL, 1, "48"}, { "id-qt-cps", 1879048204, NULL }, { NULL, 1073741825, "id-qt"}, { NULL, 1, "1"}, { "id-qt-unotice", 1879048204, NULL }, { NULL, 1073741825, "id-qt"}, { NULL, 1, "2"}, { "id-ad-ocsp", 1879048204, NULL }, { NULL, 1073741825, "id-ad"}, { NULL, 1, "1"}, { "id-ad-caIssuers", 1879048204, NULL }, { NULL, 1073741825, "id-ad"}, { NULL, 1, "2"}, { "Attribute", 1610612741, NULL }, { "type", 1073741826, "AttributeType"}, { "values", 536870927, NULL }, { NULL, 2, "AttributeValue"}, { "AttributeType", 1073741836, NULL }, { "AttributeValue", 1073741837, NULL }, { "AttributeTypeAndValue", 1610612741, NULL }, { "type", 1073741826, "AttributeType"}, { "value", 2, "AttributeValue"}, { "id-at", 1879048204, NULL }, { "joint-iso-ccitt", 1073741825, "2"}, { "ds", 1073741825, "5"}, { NULL, 1, "4"}, { "id-at-name", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "41"}, { "id-at-surname", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "4"}, { "id-at-givenName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "42"}, { "id-at-initials", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "43"}, { "id-at-generationQualifier", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "44"}, { "X520name", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-name", 524298, "1"}, { "id-at-commonName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "3"}, { "X520CommonName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-common-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-common-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-common-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-common-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-common-name", 524298, "1"}, { "id-at-localityName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "7"}, { "X520LocalityName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-locality-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-locality-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-locality-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-locality-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-locality-name", 524298, "1"}, { "id-at-stateOrProvinceName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "8"}, { "X520StateOrProvinceName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-state-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-state-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-state-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-state-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-state-name", 524298, "1"}, { "id-at-organizationName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "10"}, { "X520OrganizationName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-organization-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-organization-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-organization-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-organization-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-organization-name", 524298, "1"}, { "id-at-organizationalUnitName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "11"}, { "X520OrganizationalUnitName", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-organizational-unit-name", 524298, "1"}, { "id-at-title", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "12"}, { "X520Title", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "ub-title", 524298, "1"}, { "printableString", 1612709919, NULL }, { "ub-title", 524298, "1"}, { "universalString", 1612709920, NULL }, { "ub-title", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "ub-title", 524298, "1"}, { "bmpString", 538968097, NULL }, { "ub-title", 524298, "1"}, { "id-at-dnQualifier", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "46"}, { "X520dnQualifier", 1073741855, NULL }, { "id-at-countryName", 1880096780, "AttributeType"}, { NULL, 1073741825, "id-at"}, { NULL, 1, "6"}, { "X520countryName", 1612709919, NULL }, { NULL, 1048586, "2"}, { "pkcs-9", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "rsadsi", 1073741825, "113549"}, { "pkcs", 1073741825, "1"}, { NULL, 1, "9"}, { "emailAddress", 1880096780, "AttributeType"}, { NULL, 1073741825, "pkcs-9"}, { NULL, 1, "1"}, { "Pkcs9email", 1612709917, NULL }, { "ub-emailaddress-length", 524298, "1"}, { "Name", 1610612754, NULL }, { "rdnSequence", 2, "RDNSequence"}, { "RDNSequence", 1610612747, NULL }, { NULL, 2, "RelativeDistinguishedName"}, { "DistinguishedName", 1073741826, "RDNSequence"}, { "RelativeDistinguishedName", 1612709903, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "AttributeTypeAndValue"}, { "DirectoryString", 1610612754, NULL }, { "teletexString", 1612709918, NULL }, { "MAX", 524298, "1"}, { "printableString", 1612709919, NULL }, { "MAX", 524298, "1"}, { "universalString", 1612709920, NULL }, { "MAX", 524298, "1"}, { "utf8String", 1612709922, NULL }, { "MAX", 524298, "1"}, { "bmpString", 538968097, NULL }, { "MAX", 524298, "1"}, { "Certificate", 1610612741, NULL }, { "tbsCertificate", 1073741826, "TBSCertificate"}, { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, { "signature", 6, NULL }, { "TBSCertificate", 1610612741, NULL }, { "version", 1610653698, "Version"}, { NULL, 1073741833, "v1"}, { NULL, 2056, "0"}, { "serialNumber", 1073741826, "CertificateSerialNumber"}, { "signature", 1073741826, "AlgorithmIdentifier"}, { "issuer", 1073741826, "Name"}, { "validity", 1073741826, "Validity"}, { "subject", 1073741826, "Name"}, { "subjectPublicKeyInfo", 1073741826, "SubjectPublicKeyInfo"}, { "issuerUniqueID", 1610637314, "UniqueIdentifier"}, { NULL, 4104, "1"}, { "subjectUniqueID", 1610637314, "UniqueIdentifier"}, { NULL, 4104, "2"}, { "extensions", 536895490, "Extensions"}, { NULL, 2056, "3"}, { "Version", 1610874883, NULL }, { "v1", 1073741825, "0"}, { "v2", 1073741825, "1"}, { "v3", 1, "2"}, { "CertificateSerialNumber", 1073741827, NULL }, { "Validity", 1610612741, NULL }, { "notBefore", 1073741826, "Time"}, { "notAfter", 2, "Time"}, { "Time", 1610612754, NULL }, { "utcTime", 1073741860, NULL }, { "generalTime", 37, NULL }, { "UniqueIdentifier", 1073741830, NULL }, { "SubjectPublicKeyInfo", 1610612741, NULL }, { "algorithm", 1073741826, "AlgorithmIdentifier"}, { "subjectPublicKey", 6, NULL }, { "Extensions", 1612709899, NULL }, { "MAX", 1074266122, "1"}, { NULL, 2, "Extension"}, { "Extension", 1610612741, NULL }, { "extnID", 1073741836, NULL }, { "critical", 1610645508, NULL }, { NULL, 131081, NULL }, { "extnValue", 7, NULL }, { "CertificateList", 1610612741, NULL }, { "tbsCertList", 1073741826, "TBSCertList"}, { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"}, { "signature", 6, NULL }, { "TBSCertList", 1610612741, NULL }, { "version", 1073758210, "Version"}, { "signature", 1073741826, "AlgorithmIdentifier"}, { "issuer", 1073741826, "Name"}, { "thisUpdate", 1073741826, "Time"}, { "nextUpdate", 1073758210, "Time"}, { "revokedCertificates", 1610629131, NULL }, { NULL, 536870917, NULL }, { "userCertificate", 1073741826, "CertificateSerialNumber"}, { "revocationDate", 1073741826, "Time"}, { "crlEntryExtensions", 16386, "Extensions"}, { "crlExtensions", 536895490, "Extensions"}, { NULL, 2056, "0"}, { "AlgorithmIdentifier", 1610612741, NULL }, { "algorithm", 1073741836, NULL }, { "parameters", 541081613, NULL }, { "algorithm", 1, NULL }, { "pkcs-1", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "rsadsi", 1073741825, "113549"}, { "pkcs", 1073741825, "1"}, { NULL, 1, "1"}, { "rsaEncryption", 1879048204, NULL }, { NULL, 1073741825, "pkcs-1"}, { NULL, 1, "1"}, { "md2WithRSAEncryption", 1879048204, NULL }, { NULL, 1073741825, "pkcs-1"}, { NULL, 1, "2"}, { "md5WithRSAEncryption", 1879048204, NULL }, { NULL, 1073741825, "pkcs-1"}, { NULL, 1, "4"}, { "sha1WithRSAEncryption", 1879048204, NULL }, { NULL, 1073741825, "pkcs-1"}, { NULL, 1, "5"}, { "id-dsa-with-sha1", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "x9-57", 1073741825, "10040"}, { "x9algorithm", 1073741825, "4"}, { NULL, 1, "3"}, { "Dss-Sig-Value", 1610612741, NULL }, { "r", 1073741827, NULL }, { "s", 3, NULL }, { "dhpublicnumber", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "ansi-x942", 1073741825, "10046"}, { "number-type", 1073741825, "2"}, { NULL, 1, "1"}, { "DomainParameters", 1610612741, NULL }, { "p", 1073741827, NULL }, { "g", 1073741827, NULL }, { "q", 1073741827, NULL }, { "j", 1073758211, NULL }, { "validationParms", 16386, "ValidationParms"}, { "ValidationParms", 1610612741, NULL }, { "seed", 1073741830, NULL }, { "pgenCounter", 3, NULL }, { "id-dsa", 1879048204, NULL }, { "iso", 1073741825, "1"}, { "member-body", 1073741825, "2"}, { "us", 1073741825, "840"}, { "x9-57", 1073741825, "10040"}, { "x9algorithm", 1073741825, "4"}, { NULL, 1, "1"}, { "Dss-Parms", 1610612741, NULL }, { "p", 1073741827, NULL }, { "q", 1073741827, NULL }, { "g", 3, NULL }, { "ORAddress", 1610612741, NULL }, { "built-in-standard-attributes", 1073741826, "BuiltInStandardAttributes"}, { "built-in-domain-defined-attributes", 1073758210, "BuiltInDomainDefinedAttributes"}, { "extension-attributes", 16386, "ExtensionAttributes"}, { "BuiltInStandardAttributes", 1610612741, NULL }, { "country-name", 1073758210, "CountryName"}, { "administration-domain-name", 1073758210, "AdministrationDomainName"}, { "network-address", 1610637314, "NetworkAddress"}, { NULL, 2056, "0"}, { "terminal-identifier", 1610637314, "TerminalIdentifier"}, { NULL, 2056, "1"}, { "private-domain-name", 1610637314, "PrivateDomainName"}, { NULL, 2056, "2"}, { "organization-name", 1610637314, "OrganizationName"}, { NULL, 2056, "3"}, { "numeric-user-identifier", 1610637314, "NumericUserIdentifier"}, { NULL, 2056, "4"}, { "personal-name", 1610637314, "PersonalName"}, { NULL, 2056, "5"}, { "organizational-unit-names", 536895490, "OrganizationalUnitNames"}, { NULL, 2056, "6"}, { "CountryName", 1610620946, NULL }, { NULL, 1073746952, "1"}, { "x121-dcc-code", 1612709916, NULL }, { NULL, 1048586, "ub-country-name-numeric-length"}, { "iso-3166-alpha2-code", 538968095, NULL }, { NULL, 1048586, "ub-country-name-alpha-length"}, { "AdministrationDomainName", 1610620946, NULL }, { NULL, 1073744904, "2"}, { "numeric", 1612709916, NULL }, { "ub-domain-name-length", 524298, "0"}, { "printable", 538968095, NULL }, { "ub-domain-name-length", 524298, "0"}, { "NetworkAddress", 1073741826, "X121Address"}, { "X121Address", 1612709916, NULL }, { "ub-x121-address-length", 524298, "1"}, { "TerminalIdentifier", 1612709919, NULL }, { "ub-terminal-id-length", 524298, "1"}, { "PrivateDomainName", 1610612754, NULL }, { "numeric", 1612709916, NULL }, { "ub-domain-name-length", 524298, "1"}, { "printable", 538968095, NULL }, { "ub-domain-name-length", 524298, "1"}, { "OrganizationName", 1612709919, NULL }, { "ub-organization-name-length", 524298, "1"}, { "NumericUserIdentifier", 1612709916, NULL }, { "ub-numeric-user-id-length", 524298, "1"}, { "PersonalName", 1610612750, NULL }, { "surname", 1814044703, NULL }, { NULL, 1073745928, "0"}, { "ub-surname-length", 524298, "1"}, { "given-name", 1814061087, NULL }, { NULL, 1073745928, "1"}, { "ub-given-name-length", 524298, "1"}, { "initials", 1814061087, NULL }, { NULL, 1073745928, "2"}, { "ub-initials-length", 524298, "1"}, { "generation-qualifier", 740319263, NULL }, { NULL, 1073745928, "3"}, { "ub-generation-qualifier-length", 524298, "1"}, { "OrganizationalUnitNames", 1612709899, NULL }, { "ub-organizational-units", 1074266122, "1"}, { NULL, 2, "OrganizationalUnitName"}, { "OrganizationalUnitName", 1612709919, NULL }, { "ub-organizational-unit-name-length", 524298, "1"}, { "BuiltInDomainDefinedAttributes", 1612709899, NULL }, { "ub-domain-defined-attributes", 1074266122, "1"}, { NULL, 2, "BuiltInDomainDefinedAttribute"}, { "BuiltInDomainDefinedAttribute", 1610612741, NULL }, { "type", 1612709919, NULL }, { "ub-domain-defined-attribute-type-length", 524298, "1"}, { "value", 538968095, NULL }, { "ub-domain-defined-attribute-value-length", 524298, "1"}, { "ExtensionAttributes", 1612709903, NULL }, { "ub-extension-attributes", 1074266122, "1"}, { NULL, 2, "ExtensionAttribute"}, { "ExtensionAttribute", 1610612741, NULL }, { "extension-attribute-type", 1611145219, NULL }, { NULL, 1073743880, "0"}, { "0", 10, "ub-extension-attributes"}, { "extension-attribute-value", 541073421, NULL }, { NULL, 1073743880, "1"}, { "extension-attribute-type", 1, NULL }, { "common-name", 1342177283, "1"}, { "CommonName", 1612709919, NULL }, { "ub-common-name-length", 524298, "1"}, { "teletex-common-name", 1342177283, "2"}, { "TeletexCommonName", 1612709918, NULL }, { "ub-common-name-length", 524298, "1"}, { "teletex-organization-name", 1342177283, "3"}, { "TeletexOrganizationName", 1612709918, NULL }, { "ub-organization-name-length", 524298, "1"}, { "teletex-personal-name", 1342177283, "4"}, { "TeletexPersonalName", 1610612750, NULL }, { "surname", 1814044702, NULL }, { NULL, 1073743880, "0"}, { "ub-surname-length", 524298, "1"}, { "given-name", 1814061086, NULL }, { NULL, 1073743880, "1"}, { "ub-given-name-length", 524298, "1"}, { "initials", 1814061086, NULL }, { NULL, 1073743880, "2"}, { "ub-initials-length", 524298, "1"}, { "generation-qualifier", 740319262, NULL }, { NULL, 1073743880, "3"}, { "ub-generation-qualifier-length", 524298, "1"}, { "teletex-organizational-unit-names", 1342177283, "5"}, { "TeletexOrganizationalUnitNames", 1612709899, NULL }, { "ub-organizational-units", 1074266122, "1"}, { NULL, 2, "TeletexOrganizationalUnitName"}, { "TeletexOrganizationalUnitName", 1612709918, NULL }, { "ub-organizational-unit-name-length", 524298, "1"}, { "pds-name", 1342177283, "7"}, { "PDSName", 1612709919, NULL }, { "ub-pds-name-length", 524298, "1"}, { "physical-delivery-country-name", 1342177283, "8"}, { "PhysicalDeliveryCountryName", 1610612754, NULL }, { "x121-dcc-code", 1612709916, NULL }, { NULL, 1048586, "ub-country-name-numeric-length"}, { "iso-3166-alpha2-code", 538968095, NULL }, { NULL, 1048586, "ub-country-name-alpha-length"}, { "postal-code", 1342177283, "9"}, { "PostalCode", 1610612754, NULL }, { "numeric-code", 1612709916, NULL }, { "ub-postal-code-length", 524298, "1"}, { "printable-code", 538968095, NULL }, { "ub-postal-code-length", 524298, "1"}, { "physical-delivery-office-name", 1342177283, "10"}, { "PhysicalDeliveryOfficeName", 1073741826, "PDSParameter"}, { "physical-delivery-office-number", 1342177283, "11"}, { "PhysicalDeliveryOfficeNumber", 1073741826, "PDSParameter"}, { "extension-OR-address-components", 1342177283, "12"}, { "ExtensionORAddressComponents", 1073741826, "PDSParameter"}, { "physical-delivery-personal-name", 1342177283, "13"}, { "PhysicalDeliveryPersonalName", 1073741826, "PDSParameter"}, { "physical-delivery-organization-name", 1342177283, "14"}, { "PhysicalDeliveryOrganizationName", 1073741826, "PDSParameter"}, { "extension-physical-delivery-address-components", 1342177283, "15"}, { "ExtensionPhysicalDeliveryAddressComponents", 1073741826, "PDSParameter"}, { "unformatted-postal-address", 1342177283, "16"}, { "UnformattedPostalAddress", 1610612750, NULL }, { "printable-address", 1814052875, NULL }, { "ub-pds-physical-address-lines", 1074266122, "1"}, { NULL, 538968095, NULL }, { "ub-pds-parameter-length", 524298, "1"}, { "teletex-string", 740311070, NULL }, { "ub-unformatted-address-length", 524298, "1"}, { "street-address", 1342177283, "17"}, { "StreetAddress", 1073741826, "PDSParameter"}, { "post-office-box-address", 1342177283, "18"}, { "PostOfficeBoxAddress", 1073741826, "PDSParameter"}, { "poste-restante-address", 1342177283, "19"}, { "PosteRestanteAddress", 1073741826, "PDSParameter"}, { "unique-postal-name", 1342177283, "20"}, { "UniquePostalName", 1073741826, "PDSParameter"}, { "local-postal-attributes", 1342177283, "21"}, { "LocalPostalAttributes", 1073741826, "PDSParameter"}, { "PDSParameter", 1610612750, NULL }, { "printable-string", 1814052895, NULL }, { "ub-pds-parameter-length", 524298, "1"}, { "teletex-string", 740311070, NULL }, { "ub-pds-parameter-length", 524298, "1"}, { "extended-network-address", 1342177283, "22"}, { "ExtendedNetworkAddress", 1610612754, NULL }, { "e163-4-address", 1610612741, NULL }, { "number", 1612718108, NULL }, { NULL, 1073743880, "0"}, { "ub-e163-4-number-length", 524298, "1"}, { "sub-address", 538992668, NULL }, { NULL, 1073743880, "1"}, { "ub-e163-4-sub-address-length", 524298, "1"}, { "psap-address", 536879106, "PresentationAddress"}, { NULL, 2056, "0"}, { "PresentationAddress", 1610612741, NULL }, { "pSelector", 1610637319, NULL }, { NULL, 2056, "0"}, { "sSelector", 1610637319, NULL }, { NULL, 2056, "1"}, { "tSelector", 1610637319, NULL }, { NULL, 2056, "2"}, { "nAddresses", 538976271, NULL }, { NULL, 1073743880, "3"}, { "MAX", 1074266122, "1"}, { NULL, 7, NULL }, { "terminal-type", 1342177283, "23"}, { "TerminalType", 1611137027, NULL }, { "0", 10, "ub-integer-options"}, { "teletex-domain-defined-attributes", 1342177283, "6"}, { "TeletexDomainDefinedAttributes", 1612709899, NULL }, { "ub-domain-defined-attributes", 1074266122, "1"}, { NULL, 2, "TeletexDomainDefinedAttribute"}, { "TeletexDomainDefinedAttribute", 1610612741, NULL }, { "type", 1612709918, NULL }, { "ub-domain-defined-attribute-type-length", 524298, "1"}, { "value", 538968094, NULL }, { "ub-domain-defined-attribute-value-length", 524298, "1"}, { "ub-name", 1342177283, "32768"}, { "ub-common-name", 1342177283, "64"}, { "ub-locality-name", 1342177283, "128"}, { "ub-state-name", 1342177283, "128"}, { "ub-organization-name", 1342177283, "64"}, { "ub-organizational-unit-name", 1342177283, "64"}, { "ub-title", 1342177283, "64"}, { "ub-match", 1342177283, "128"}, { "ub-emailaddress-length", 1342177283, "128"}, { "ub-common-name-length", 1342177283, "64"}, { "ub-country-name-alpha-length", 1342177283, "2"}, { "ub-country-name-numeric-length", 1342177283, "3"}, { "ub-domain-defined-attributes", 1342177283, "4"}, { "ub-domain-defined-attribute-type-length", 1342177283, "8"}, { "ub-domain-defined-attribute-value-length", 1342177283, "128"}, { "ub-domain-name-length", 1342177283, "16"}, { "ub-extension-attributes", 1342177283, "256"}, { "ub-e163-4-number-length", 1342177283, "15"}, { "ub-e163-4-sub-address-length", 1342177283, "40"}, { "ub-generation-qualifier-length", 1342177283, "3"}, { "ub-given-name-length", 1342177283, "16"}, { "ub-initials-length", 1342177283, "5"}, { "ub-integer-options", 1342177283, "256"}, { "ub-numeric-user-id-length", 1342177283, "32"}, { "ub-organization-name-length", 1342177283, "64"}, { "ub-organizational-unit-name-length", 1342177283, "32"}, { "ub-organizational-units", 1342177283, "4"}, { "ub-pds-name-length", 1342177283, "16"}, { "ub-pds-parameter-length", 1342177283, "30"}, { "ub-pds-physical-address-lines", 1342177283, "6"}, { "ub-postal-code-length", 1342177283, "16"}, { "ub-surname-length", 1342177283, "40"}, { "ub-terminal-id-length", 1342177283, "24"}, { "ub-unformatted-address-length", 1342177283, "180"}, { "ub-x121-address-length", 268435459, "16"}, { NULL, 0, NULL } }; libtasn1-3.4/examples/Makefile.in0000664000000000000000000011732612244721750013667 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ noinst_PROGRAMS = CertificateExample$(EXEEXT) CrlExample$(EXEEXT) subdir = examples DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/build-aux/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_CertificateExample_OBJECTS = CertificateExample.$(OBJEXT) \ pkix_asn1_tab.$(OBJEXT) CertificateExample_OBJECTS = $(am_CertificateExample_OBJECTS) CertificateExample_LDADD = $(LDADD) CertificateExample_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_CrlExample_OBJECTS = CrlExample.$(OBJEXT) pkix_asn1_tab.$(OBJEXT) CrlExample_OBJECTS = $(am_CrlExample_OBJECTS) CrlExample_LDADD = $(LDADD) CrlExample_DEPENDENCIES = ../lib/libtasn1.la ../gl/libgnu.la 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=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 = SOURCES = $(CertificateExample_SOURCES) $(CrlExample_SOURCES) DIST_SOURCES = $(CertificateExample_SOURCES) $(CrlExample_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) # 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 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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 = $(WARN_CFLAGS) $(WERROR_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_builddir)/gl EXTRA_DIST = asn1Coding_test.asn asn1Coding_test.asg LDADD = ../lib/libtasn1.la ../gl/libgnu.la CertificateExample_SOURCES = CertificateExample.c pkix_asn1_tab.c pkix.asn CrlExample_SOURCES = CrlExample.c pkix_asn1_tab.c pkix.asn BUILT_SOURCES = pkix_asn1_tab.c MAINTAINERCLEANFILES = pkix_asn1_tab.c all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(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 examples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu examples/Makefile .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list CertificateExample$(EXEEXT): $(CertificateExample_OBJECTS) $(CertificateExample_DEPENDENCIES) $(EXTRA_CertificateExample_DEPENDENCIES) @rm -f CertificateExample$(EXEEXT) $(AM_V_CCLD)$(LINK) $(CertificateExample_OBJECTS) $(CertificateExample_LDADD) $(LIBS) CrlExample$(EXEEXT): $(CrlExample_OBJECTS) $(CrlExample_DEPENDENCIES) $(EXTRA_CrlExample_DEPENDENCIES) @rm -f CrlExample$(EXEEXT) $(AM_V_CCLD)$(LINK) $(CrlExample_OBJECTS) $(CrlExample_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CertificateExample.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CrlExample.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkix_asn1_tab.Po@am__quote@ .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 $< .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 `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs 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-am 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: $(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) installdirs: 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." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ 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-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 -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags 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-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am pkix_asn1_tab.c: $(srcdir)/pkix.asn ../src/asn1Parser -o $@ $(srcdir)/pkix.asn # 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: libtasn1-3.4/examples/CertificateExample.c0000664000000000000000000005165312244720630015520 00000000000000/* * Copyright (C) 2000-2013 Free Software Foundation, Inc. * * This file is part of LIBTASN1. * * 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 . * */ /*****************************************************/ /* File: CertificateExample.c */ /* Description: An example on how to use the ASN1 */ /* parser with the Certificate.txt file */ /*****************************************************/ #include #include #include #include "libtasn1.h" static char * my_ltostr (long v, char *str) { long d, r; char temp[20]; int count, k, start; if (v < 0) { str[0] = '-'; start = 1; v = -v; } else start = 0; count = 0; do { d = v / 10; r = v - d * 10; temp[start + count] = '0' + (char) r; count++; v = d; } while (v); for (k = 0; k < count; k++) str[k + start] = temp[start + count - k - 1]; str[count + start] = 0; return str; } /******************************************************/ /* Function : get_name_type */ /* Description: analyze a structure of type Name */ /* Parameters: */ /* char *root: the structure identifier */ /* char *answer: the string with elements like: */ /* "C=US O=gov" */ /******************************************************/ static void get_Name_type (ASN1_TYPE cert_def, ASN1_TYPE cert, const char *root, unsigned char *ans) { int k, k2, result, len; char name[128], str[1024], str2[1024], name2[128], counter[5], name3[128]; ASN1_TYPE value = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; char *answer = (char *) ans; answer[0] = 0; k = 1; do { strcpy (name, root); strcat (name, ".rdnSequence.?"); my_ltostr (k, counter); strcat (name, counter); len = sizeof (str) - 1; result = asn1_read_value (cert, name, str, &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; k2 = 1; do { strcpy (name2, name); strcat (name2, ".?"); my_ltostr (k2, counter); strcat (name2, counter); len = sizeof (str) - 1; result = asn1_read_value (cert, name2, str, &len); if (result == ASN1_ELEMENT_NOT_FOUND) break; strcpy (name3, name2); strcat (name3, ".type"); len = sizeof (str) - 1; result = asn1_read_value (cert, name3, str, &len); strcpy (name3, name2); strcat (name3, ".value"); if (result == ASN1_SUCCESS) { len = sizeof (str2) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " C="); strcat (answer, str); asn1_delete_structure (&value); } else { len = sizeof (str2) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " O="); strcat (answer, str); asn1_delete_structure (&value); } else { len = sizeof (str2) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str2, &len); if (!strcmp (str, str2)) { asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); len = sizeof (str) - 1; asn1_read_value (cert, name3, str, &len); asn1_der_decoding (&value, str, len, errorDescription); len = sizeof (str) - 1; asn1_read_value (value, "", str, &len); /* CHOICE */ strcpy (name3, str); len = sizeof (str) - 1; asn1_read_value (value, name3, str, &len); str[len] = 0; strcat (answer, " OU="); strcat (answer, str); asn1_delete_structure (&value); } } } } k2++; } while (1); k++; } while (1); } /******************************************************/ /* Function : create_certificate */ /* Description: creates a certificate named */ /* "certificate1". Values are the same */ /* as in rfc2459 Appendix D.1 */ /* Parameters: */ /* unsigned char *der: contains the der encoding */ /* int *der_len: number of bytes of der string */ /******************************************************/ static void create_certificate (ASN1_TYPE cert_def, unsigned char *der, int *der_len) { int result, k, len; unsigned char str[1024]; const unsigned char *str2; ASN1_TYPE cert1 = ASN1_TYPE_EMPTY; ASN1_TYPE value = ASN1_TYPE_EMPTY; ASN1_TYPE param = ASN1_TYPE_EMPTY; ASN1_TYPE constr = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; int max_len; max_len = *der_len; result = asn1_create_element (cert_def, "PKIX1Implicit88.Certificate", &cert1); /* Use the next 3 lines to visit the empty certificate */ /* printf("-----------------\n"); asn1_visit_tree(cert1,""); printf("-----------------\n"); */ /* version: v3(2) */ result = asn1_write_value (cert1, "tbsCertificate.version", "v3", 0); /* serialNumber: 17 */ result = asn1_write_value (cert1, "tbsCertificate.serialNumber", "17", 0); /* signature: dsa-with-sha1 */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str, &len); result = asn1_write_value (cert1, "tbsCertificate.signature.algorithm", str, 1); result = asn1_write_value (cert1, "tbsCertificate.signature.parameters", NULL, 0); /* issuer: Country="US" Organization="gov" OrganizationUnit="nist" */ result = asn1_write_value (cert1, "tbsCertificate.issuer", "rdnSequence", 12); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST", "NEW", 1); /* C */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520countryName", &value); result = asn1_write_value (value, "", "US", 2); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST", "NEW", 1); /* O */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "gov", 3); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence", "NEW", 1); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST", "NEW", 1); /* OU */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "nist", 4); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.issuer.rdnSequence.?LAST.?LAST.value", der, *der_len); /* validity */ result = asn1_write_value (cert1, "tbsCertificate.validity.notBefore", "utcTime", 1); result = asn1_write_value (cert1, "tbsCertificate.validity.notBefore.utcTime", "970630000000Z", 1); result = asn1_write_value (cert1, "tbsCertificate.validity.notAfter", "utcTime", 1); result = asn1_write_value (cert1, "tbsCertificate.validity.notAfter.utcTime", "971231000000Z", 1); /* subject: Country="US" Organization="gov" OrganizationUnit="nist" */ result = asn1_write_value (cert1, "tbsCertificate.subject", "rdnSequence", 1); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence", "NEW", 1); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); /* C */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-countryName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520countryName", &value); result = asn1_write_value (value, "", "US", 2); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence", "NEW", 4); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 4); /* O */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "gov", 3); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.value", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence", "NEW", 4); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 4); /* OU */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-at-organizationalUnitName", str, &len); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.type", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.X520OrganizationalUnitName", &value); result = asn1_write_value (value, "", "printableString", 1); result = asn1_write_value (value, "printableString", "nist", 4); *der_len = max_len; result = asn1_der_coding (value, "", der, der_len, errorDescription); asn1_delete_structure (&value); result = asn1_write_value (cert1, "tbsCertificate.subject.rdnSequence.?LAST.?LAST.value", der, *der_len); /* subjectPublicKeyInfo: dsa with parameters=Dss-Parms */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa", str, &len); result = asn1_write_value (cert1, "tbsCertificate.subjectPublicKeyInfo.algorithm.algorithm", str, 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.Dss-Parms", ¶m); str2 = (const unsigned char *) "\xd4\x38"; /* only an example */ result = asn1_write_value (param, "p", str2, 128); str2 = (const unsigned char *) "\xd4\x38"; /* only an example */ result = asn1_write_value (param, "q", str2, 20); str2 = (const unsigned char *) "\xd4\x38"; /* only an example */ result = asn1_write_value (param, "g", str2, 128); *der_len = max_len; result = asn1_der_coding (param, "", der, der_len, errorDescription); asn1_delete_structure (¶m); result = asn1_write_value (cert1, "tbsCertificate.subjectPublicKeyInfo.algorithm.parameters", der, *der_len); /* subjectPublicKey */ str2 = (const unsigned char *) "\x02\x81"; /* only an example */ result = asn1_write_value (cert1, "tbsCertificate.subjectPublicKeyInfo.subjectPublicKey", str2, 1048); result = asn1_write_value (cert1, "tbsCertificate.issuerUniqueID", NULL, 0); /* NO OPTION */ result = asn1_write_value (cert1, "tbsCertificate.subjectUniqueID", NULL, 0); /* NO OPTION */ /* extensions */ result = asn1_write_value (cert1, "tbsCertificate.extensions", "NEW", 1); len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-ce-basicConstraints", str, &len); result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.extnID", str, 1); /* basicConstraints */ result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.critical", "TRUE", 1); result = asn1_create_element (cert_def, "PKIX1Implicit88.BasicConstraints", &constr); result = asn1_write_value (constr, "cA", "TRUE", 1); result = asn1_write_value (constr, "pathLenConstraint", NULL, 0); *der_len = max_len; result = asn1_der_coding (constr, "", der, der_len, errorDescription); result = asn1_delete_structure (&constr); result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.extnValue", der, *der_len); result = asn1_write_value (cert1, "tbsCertificate.extensions", "NEW", 1); len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-ce-subjectKeyIdentifier", str, &len); result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.extnID", str, 1); /* subjectKeyIdentifier */ result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.critical", "FALSE", 1); str2 = (const unsigned char *) "\x04\x14\xe7\x26\xc5"; /* only an example */ result = asn1_write_value (cert1, "tbsCertificate.extensions.?LAST.extnValue", str2, 22); /* signatureAlgorithm: dsa-with-sha */ len = sizeof (str) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str, &len); result = asn1_write_value (cert1, "signatureAlgorithm.algorithm", str, 1); result = asn1_write_value (cert1, "signatureAlgorithm.parameters", NULL, 0); /* NO OPTION */ /* signature */ *der_len = max_len; result = asn1_der_coding (cert1, "tbsCertificate", der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("\n'tbsCertificate' encoding creation: ERROR\n"); } /* add the lines for the signature on der[0]..der[der_len-1]: result in str2 */ result = asn1_write_value (cert1, "signature", str2, 368); /* dsa-with-sha */ /* Use the next 3 lines to visit the certificate */ /* printf("-----------------\n"); asn1_visit_tree(cert1,""); printf("-----------------\n"); */ *der_len = max_len; result = asn1_der_coding (cert1, "", der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("\n'certificate' encoding creation: ERROR\n"); return; } /* Print the 'Certificate1' DER encoding */ printf ("-----------------\nCertificate Encoding:\nNumber of bytes=%i\n", *der_len); for (k = 0; k < *der_len; k++) printf ("%02x ", der[k]); printf ("\n-----------------\n"); /* Clear the "certificate1" structure */ asn1_delete_structure (&cert1); } /******************************************************/ /* Function : get_certificate */ /* Description: creates a certificate named */ /* "certificate2" from a der encoding */ /* string */ /* Parameters: */ /* unsigned char *der: the encoding string */ /* int der_len: number of bytes of der string */ /******************************************************/ static void get_certificate (ASN1_TYPE cert_def, unsigned char *der, int der_len) { int result, len, start, end; unsigned char str[1024], str2[1024]; ASN1_TYPE cert2 = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; asn1_create_element (cert_def, "PKIX1Implicit88.Certificate", &cert2); result = asn1_der_decoding (&cert2, der, der_len, errorDescription); if (result != ASN1_SUCCESS) { printf ("Problems with DER encoding\n"); return; } /* issuer */ get_Name_type (cert_def, cert2, "tbsCertificate.issuer", str); printf ("certificate:\nissuer :%s\n", str); /* subject */ get_Name_type (cert_def, cert2, "tbsCertificate.subject", str); printf ("subject:%s\n", str); /* Verify sign */ len = sizeof (str) - 1; result = asn1_read_value (cert2, "signatureAlgorithm.algorithm", str, &len); len = sizeof (str2) - 1; result = asn1_read_value (cert_def, "PKIX1Implicit88.id-dsa-with-sha1", str2, &len); if (!strcmp ((char *) str, (char *) str2)) { /* dsa-with-sha */ result = asn1_der_decoding_startEnd (cert2, der, der_len, "tbsCertificate", &start, &end); /* add the lines to calculate the sha on der[start]..der[end] */ len = sizeof (str) - 1; result = asn1_read_value (cert2, "signature", str, &len); /* compare the previous value to signature ( with issuer public key) */ } /* Use the next 3 lines to visit the certificate */ /* printf("-----------------\n"); asn1_visit_tree(cert2,""); printf("-----------------\n"); */ /* Clear the "certificate2" structure */ asn1_delete_structure (&cert2); } extern const ASN1_ARRAY_TYPE pkix_asn1_tab[]; /********************************************************/ /* Function : main */ /* Description: reads the certificate description. */ /* Creates a certificate and calculate */ /* the der encoding. After that creates */ /* another certificate from der string */ /********************************************************/ int main (int argc, char *argv[]) { int result, der_len; unsigned char der[1024]; ASN1_TYPE PKIX1Implicit88 = ASN1_TYPE_EMPTY; char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; if (1) result = asn1_array2tree (pkix_asn1_tab, &PKIX1Implicit88, errorDescription); else result = asn1_parser2tree ("pkix.asn", &PKIX1Implicit88, errorDescription); if (result != ASN1_SUCCESS) { asn1_perror (result); printf ("%s", errorDescription); exit (1); } /* Use the following 3 lines to visit the PKIX1Implicit structures */ /* printf("-----------------\n"); asn1_visit_tree(PKIX1Implicit88,"PKIX1Implicit88"); printf("-----------------\n"); */ der_len = 1024; create_certificate (PKIX1Implicit88, der, &der_len); get_certificate (PKIX1Implicit88, der, der_len); /* Clear the "PKIX1Implicit88" structures */ asn1_delete_structure (&PKIX1Implicit88); return 0; } libtasn1-3.4/examples/Makefile.am0000664000000000000000000000247512244720630013650 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_builddir)/gl EXTRA_DIST = asn1Coding_test.asn asn1Coding_test.asg LDADD = ../lib/libtasn1.la ../gl/libgnu.la noinst_PROGRAMS = CertificateExample CrlExample CertificateExample_SOURCES = CertificateExample.c pkix_asn1_tab.c pkix.asn CrlExample_SOURCES = CrlExample.c pkix_asn1_tab.c pkix.asn BUILT_SOURCES = pkix_asn1_tab.c MAINTAINERCLEANFILES = pkix_asn1_tab.c pkix_asn1_tab.c: $(srcdir)/pkix.asn ../src/asn1Parser -o $@ $(srcdir)/pkix.asn libtasn1-3.4/cfg.mk0000664000000000000000000001265612244720630011070 00000000000000# Copyright (C) 2006-2013 Free Software Foundation, Inc. # Author: Simon Josefsson # # This file is part of LIBTASN1. # # 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 . WFLAGS ?= --enable-gcc-warnings ADDFLAGS ?= CFGFLAGS ?= --enable-gtk-doc --enable-gtk-doc-pdf $(ADDFLAGS) $(WFLAGS) INDENT_SOURCES = `find . -name \*.[ch]|grep -v -e ^./gl -e ^./lib/gl -e ^./build-aux/ -e ^./lib/ASN1.c -e ^./tests/Test_tree_asn1_tab.c` ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile) .DEFAULT_GOAL := bootstrap endif local-checks-to-skip = sc_prohibit_strcmp sc_prohibit_have_config_h \ sc_require_config_h sc_require_config_h_first \ sc_immutable_NEWS sc_prohibit_magic_number_exit \ sc_bindtextdomain VC_LIST_ALWAYS_EXCLUDE_REGEX = ^(maint.mk|gtk-doc.make|build-aux/.*|gl/.*|lib/gllib/.*|lib/glm4/.*|lib/ASN1\.c|m4/pkg.m4|doc/gdoc|windows/.*|doc/fdl-1.3.texi)$$ update-copyright-env = UPDATE_COPYRIGHT_USE_INTERVALS=1 # Explicit syntax-check exceptions. exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = ^tests/TestIndef.p12$$ exclude_file_name_regexp--sc_GPL_version = ^lib/libtasn1.h$$ exclude_file_name_regexp--sc_program_name = ^tests/|examples/ exclude_file_name_regexp--sc_prohibit_atoi_atof = ^src/asn1Coding.c|src/asn1Decoding.c$$ exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = ^tests/crlf.cer|tests/TestIndef.p12$$ exclude_file_name_regexp--sc_error_message_uppercase = ^tests/Test_tree.c$$ exclude_file_name_regexp--sc_unmarked_diagnostics = ^tests/Test_tree.c$$ bootstrap-tools := autoconf,automake,libtool,bison gpg_key_ID = b565716f autoreconf: touch ChangeLog test -f ./configure || autoreconf --install bootstrap: autoreconf ./configure $(CFGFLAGS) review-diff: git diff `git describe --abbrev=0`.. \ | grep -v -e ^index -e '^diff --git' \ | filterdiff -p 1 -x 'gl/*' -x 'build-aux/*' -x 'lib/gl*' -x 'po/*' -x 'maint.mk' -x '.gitignore' -x '.x-sc*' -x ChangeLog -x GNUmakefile -x 'lib/ASN1.c' \ | less # Release htmldir = ../www-$(PACKAGE) coverage-copy: rm -fv `find $(htmldir)/coverage -type f | grep -v CVS` mkdir -p $(htmldir)/coverage/ cp -rv $(COVERAGE_OUT)/* $(htmldir)/coverage/ coverage-upload: cd $(htmldir) && \ find coverage -type d -! -name CVS -! -name '.' \ -exec cvs add {} \; && \ find coverage -type d -! -name CVS -! -name '.' \ -exec sh -c "cvs add -kb {}/*.png" \; && \ find coverage -type d -! -name CVS -! -name '.' \ -exec sh -c "cvs add {}/*.html" \; && \ cvs add coverage/libtasn1.info coverage/gcov.css || true && \ cvs commit -m "Update." coverage clang: make clean scan-build ./configure rm -rf scan.tmp scan-build -o scan.tmp make clang-copy: rm -fv `find $(htmldir)/clang-analyzer -type f | grep -v CVS` mkdir -p $(htmldir)/clang-analyzer/ cp -rv scan.tmp/*/* $(htmldir)/clang-analyzer/ clang-upload: cd $(htmldir) && \ cvs add clang-analyzer || true && \ cvs add clang-analyzer/*.css clang-analyzer/*.js \ clang-analyzer/*.html || true && \ cvs commit -m "Update." clang-analyzer cyclo-copy: cp -v doc/cyclo/cyclo-$(PACKAGE).html $(htmldir)/cyclo/index.html cyclo-upload: cd $(htmldir) && cvs commit -m "Update." cyclo/index.html gendoc-copy: cd doc && $(SHELL) ../build-aux/gendocs.sh \ --html "--css-include=texinfo.css" \ -o ../$(htmldir)/manual/ $(PACKAGE) "$(PACKAGE_NAME)" gendoc-upload: cd $(htmldir) && \ cvs add manual || true && \ cvs add manual/html_node || true && \ cvs add -kb manual/*.gz manual/*.pdf || true && \ cvs add manual/*.txt manual/*.html \ manual/html_node/*.html || true && \ cvs commit -m "Update." manual/ gtkdoc-copy: mkdir -p $(htmldir)/reference/ cp -v doc/reference/$(PACKAGE).pdf \ doc/reference/html/*.html \ doc/reference/html/*.png \ doc/reference/html/*.devhelp2 \ doc/reference/html/*.css \ $(htmldir)/reference/ gtkdoc-upload: cd $(htmldir) && \ cvs add reference || true && \ cvs add -kb reference/*.png reference/*.pdf || true && \ cvs add reference/*.html reference/*.css \ reference/*.devhelp2 || true && \ cvs commit -m "Update." reference/ ChangeLog: git2cl > ChangeLog cat .clcopying >> ChangeLog tag = $(PACKAGE)_`echo $(VERSION) | sed 's/\./_/g'` tarball: ! git tag -l $(tag) | grep $(PACKAGE) > /dev/null rm -f ChangeLog $(MAKE) ChangeLog distcheck libtasn14win: cd windows && make -f libtasn14win.mk libtasn14win VERSION=$(VERSION) libtasn14win-upload: cd windows && make -f libtasn14win.mk upload VERSION=$(VERSION) source: git tag -u b565716f -m $(VERSION) $(tag) release-check: syntax-check tarball libtasn14win gendoc-copy gtkdoc-copy coverage coverage-copy clang clang-copy release-upload-www: gendoc-upload gtkdoc-upload coverage-upload clang-upload release-upload-ftp: build-aux/gnupload --to ftp.gnu.org:$(PACKAGE) $(distdir).tar.gz cp $(distdir).tar.gz $(distdir).tar.gz.sig ../releases/$(PACKAGE)/ git push git push --tags release: release-check release-upload-www source release-upload-ftp libtasn14win-upload libtasn1-3.4/build-aux/0000775000000000000000000000000012244722065011744 500000000000000libtasn1-3.4/build-aux/pmccabe2html0000664000000000000000000006041312244720630014150 00000000000000# pmccabe2html - AWK script to convert pmccabe output to html -*- awk -*- # Copyright (C) 2007-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 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 . # Written by Jose E. Marchesi . # Adapted for gnulib by Simon Josefsson . # Added support for C++ by Giuseppe Scrivano . # Typical Invocation is from a Makefile.am: # # CYCLO_SOURCES = ${top_srcdir}/src/*.[ch] # # cyclo-$(PACKAGE).html: $(CYCLO_SOURCES) # $(PMCCABE) $(CYCLO_SOURCES) \ # | sort -nr \ # | $(AWK) -f ${top_srcdir}/build-aux/pmccabe2html \ # -v lang=html -v name="$(PACKAGE_NAME)" \ # -v vcurl="http://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=%FILENAME%;hb=HEAD" \ # -v url="http://www.gnu.org/software/$(PACKAGE)/" \ # -v css=${top_srcdir}/build-aux/pmccabe.css \ # -v cut_dir=${top_srcdir}/ \ # > $@-tmp # mv $@-tmp $@ # # The variables available are: # lang output language, either 'html' or 'wiki' # name project name # url link to project's home page # vcurl URL to version controlled source code browser, # a %FILENAME% in the string is replaced with the relative # source filename # css CSS stylesheet filename, included verbatim in HTML output # css_url link to CSS stylesheet, an URL # Prologue & configuration BEGIN { section_global_stats_p = 1 section_function_cyclo_p = 1 # "html" or "wiki" package_name = name output_lang = lang # General Options cyclo_simple_max = 10 cyclo_moderate_max = 20 cyclo_high_max = 50 source_file_link_tmpl = vcurl # HTML options if (url != "") { html_prolog = "Back to " package_name " Homepage

" } html_epilog = "
\ Copyright (c) 2007, 2008 Free Software Foundation, Inc." html_doctype = "" html_comment = "" html_title = "Cyclomatic Complexity report for " package_name # Wiki options wiki_prolog = "{{Note|This page has been automatically generated}}" wiki_epilog = "" # Internal variables nfuncs = 0; } # Functions function build_stats() { # Maximum modified cyclo for (fcn in mcyclo) { num_of_functions++ if (mcyclo[fcn] > max_mcyclo) { max_mcyclo = mcyclo[fcn] } if (mcyclo[fcn] > cyclo_high_max) { num_of_untestable_functions++ } else if (mcyclo[fcn] > cyclo_moderate_max) { num_of_high_functions++ } else if (mcyclo[fcn] > cyclo_simple_max) { num_of_moderate_functions++ } else { num_of_simple_functions++ } } } function html_fnc_table_complete (caption) { html_fnc_table(caption, 1, 1, 0, 1, 1, 0, 1) } function html_fnc_table_abbrev (caption) { html_fnc_table(caption, 1, 1, 0, 0, 1, 0, 0) } function html_fnc_table (caption, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { print "" if (caption != "") { print "" } html_fnc_header(fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) for (nfnc = 1; nfnc <= nfuncs; nfnc++) { html_fnc(nfnc, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) } print "
" caption "
" } function html_header () { print html_doctype print "" print html_comment print "" print "" html_title "" print "" print "" print "" print "" print "" print "" print "" print "" if (css_url != "") { print "" } if (css != "") { print "" close(css) } print "" print "" } function html_footer () { print "" print "" } function html_fnc_header (fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { print "" if (fname_p) { # Function name print "" print "" print "" print "" print "Function Name" print "" } if (mcyclo_p) { # Modified cyclo print "" print "Modified Cyclo" print "" } if (cyclo_p) { # Cyclo print "" print "Cyclomatic" print "
" print "Complexity" print "" } if (num_statements_p) { print "" print "Number of" print "
" print "Statements" print "" } if (num_lines_p) { print "" print "Number of" print "
" print "Lines" print "" } if (first_line_p) { print "" print "First Line" print "" } if (file_p) { print "" print "Source File" print "" } print "" } function html_fnc (nfun, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { fname = fnames[nfun] # Function name trclass = "function_entry_simple" if (mcyclo[nfun] > cyclo_high_max) { trclass="function_entry_untestable" } else if (mcyclo[nfun] > cyclo_moderate_max) { trclass="function_entry_high" } else if (mcyclo[nfun] > cyclo_simple_max) { trclass="function_entry_moderate" } print "" if (fname_p) { print "" if (file_p && mcyclo[nfun] > cyclo_simple_max) { print "\ " } else { print " " } print "" print "" print fname print "" } if (mcyclo_p) { # Modified cyclo print "" print mcyclo[nfun] print "" } if (cyclo_p) { # Cyclo print "" print cyclo[nfun] print "" } if (num_statements_p) { # Number of statements print "" print num_statements[nfun] print "" } if (num_lines_p) { # Number of lines print "" print num_lines[nfun] print "" } if (first_line_p) { # First line print "" print first_line[nfun] print "" } if (file_p) { href = "" if (source_file_link_tmpl != "") { # Get href target href = source_file_link_tmpl sub(/%FILENAME%/, file[nfun], href) } # Source file print "" if (href != "") { print "" file[nfun] "" } else { print file[nfun] } print "" print "" if (mcyclo[nfun] > cyclo_simple_max) { print "" num_columns = 1; if (fname_p) { num_columns++ } if (mcyclo_p) { num_columns++ } if (cyclo_p) { num_columns++ } if (num_statements_p) { num_columns++ } if (num_lines_p) { num_columns++ } if (first_line_p) { num_columns++ } if (file_p) { num_columns++ } print "" print "
" print "
"

            while ((getline codeline < (fname nfun "_fn.txt")) > 0)
            {
                sub(/\\/, ">", codeline)
                sub(/&/, "&", codeline)

                print codeline
            }
            close(fname nfun "_fn.txt")
            system("rm " "'" fname "'" nfun "_fn.txt")
            print "
" print "
" print "" print "" } } } function html_global_stats () { print "
Summary
" print "" # Total number of functions print "" print "" print "" print "" # Number of simple functions print "" print "" print "" print "" # Number of moderate functions print "" print "" print "" print "" # Number of high functions print "" print "" print "" print "" # Number of untestable functions print "" print "" print "" print "" print "
" print "Total number of functions" print "" print num_of_functions print "
" print "Number of low risk functions" print "" print num_of_simple_functions print "
" print "Number of moderate risk functions" print "" print num_of_moderate_functions print "
" print "Number of high risk functions" print "" print num_of_high_functions print "
" print "Number of untestable functions" print "" print num_of_untestable_functions print "
" print "
" } function html_function_cyclo () { print "
Details for all functions
" print "" print "" print "" print "" print "" print "" # Simple print "" print "" print "" print "" print "" # Moderate print "" print "" print "" print "" print "" # High print "" print "" print "" print "" print "" # Untestable print "" print "" print "" print "" print "" print "
" print " " print "" print "Cyclomatic Complexity" print "" print "Risk Evaluation" print "
" print " " print "" print "0 - " cyclo_simple_max print "" print "Simple module, without much risk" print "
" print " " print "" print cyclo_simple_max + 1 " - " cyclo_moderate_max print "" print "More complex module, moderate risk" print "
" print " " print "" print cyclo_moderate_max + 1 " - " cyclo_high_max print "" print "Complex module, high risk" print "
" print " " print "" print "greater than " cyclo_high_max print "" print "Untestable module, very high risk" print "
" print "
" html_fnc_table_complete("") } function wiki_global_stats () { print "{| class=\"cyclo_summary_table\"" # Total number of functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Total number of functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_functions # Number of simple functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Number of low risk functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_simple_functions # Number of moderate functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Number of moderate risk functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_moderate_functions # Number of high functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Number of high risk functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_high_functions # Number of untestable functions print "|-" print "| class=\"cyclo_summary_header_entry\" | Number of untestable functions" print "| class=\"cyclo_summary_number_entry\" |" num_of_untestable_functions print "|}" } function wiki_function_cyclo () { print "==Details for all functions==" print "Used ranges:" print "{| class =\"cyclo_ranges_table\"" print "|-" print "| class=\"cyclo_ranges_header_entry\" | " print "| class=\"cyclo_ranges_header_entry\" | Cyclomatic Complexity" print "| class=\"cyclo_ranges_header_entry\" | Risk Evaluation" # Simple print "|-" print "| class=\"cyclo_ranges_entry_simple\" | " print "| class=\"cyclo_ranges_entry\" | 0 - " cyclo_simple_max print "| class=\"cyclo_ranges_entry\" | Simple module, without much risk" # Moderate print "|-" print "| class=\"cyclo_ranges_entry_moderate\" | " print "| class=\"cyclo_ranges_entry\" |" cyclo_simple_max + 1 " - " cyclo_moderate_max print "| class=\"cyclo_ranges_entry\" | More complex module, moderate risk" # High print "|-" print "| class=\"cyclo_ranges_entry_high\" | " print "| class=\"cyclo_ranges_entry\" |" cyclo_moderate_max + 1 " - " cyclo_high_max print "| class=\"cyclo_ranges_entry\" | Complex module, high risk" # Untestable print "|-" print "| class=\"cyclo_ranges_entry_untestable\" | " print "| class=\"cyclo_ranges_entry\" | greater than " cyclo_high_max print "| class=\"cyclo_ranges_entry\" | Untestable module, very high risk" print "|}" print "" print "" wiki_fnc_table_complete("") } function wiki_fnc_table_complete (caption) { wiki_fnc_table(caption, 1, 1, 0, 1, 1, 0, 1) } function wiki_fnc_table_abbrev (caption) { wiki_fnc_table(caption, 1, 0, 0, 0, 0, 0, 0) } function wiki_fnc_table (caption, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { print "{| width=\"90%\" class=\"cyclo_function_table\" cellpadding=\"0\" cellspacing=\"0\">" if (caption != "") { print "|+" caption } wiki_fnc_header(fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) for (nfnc = 1; nfnc <= nfuncs; nfnc++) { wiki_fnc(nfnc, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) } print "|}" } function wiki_fnc_header (fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { if (fname_p) { # Function name print "! class=\"cyclo_function_table_header_entry\" | Function Name" } if (mcyclo_p) { # Modified cyclo print "! class=\"cyclo_function_table_header_entry\" | Modified Cyclo" } if (cyclo_p) { # Cyclo print "! class=\"cyclo_function_table_header_entry\" | Cyclomatic Complexity" } if (num_statements_p) { print "! class=\"cyclo_function_table_header_entry\" | Number of Statements" } if (num_lines_p) { print "! class=\"cyclo_function_table_header_entry\" | Number of Lines" } if (first_line_p) { print "! class=\"cyclo_function_table_header_entry\" | First Line" } if (file_p) { print "! class=\"cyclo_function_table_header_entry\" | Source File" } } function wiki_fnc (nfnc, fname_p, mcyclo_p, cyclo_p, num_statements_p, num_lines_p, first_line_p, file_p) { fname = fnames[nfnc] # Function name trclass = "cyclo_function_entry_simple" if (mcyclo[nfnc] > cyclo_high_max) { trclass="cyclo_function_entry_untestable" } else if (mcyclo[nfnc] > cyclo_moderate_max) { trclass="cyclo_function_entry_high" } else if (mcyclo[nfnc] > cyclo_simple_max) { trclass="cyclo_function_entry_moderate" } print "|- class=\"" trclass "\"" if (fname_p) { print "| class=\"cyclo_function_entry_name\" |" fname } if (mcyclo_p) { # Modified cyclo print "| class=\"cyclo_function_entry_cyclo\" |" mcyclo[nfnc] } if (cyclo_p) { # Cyclo print "| class=\"cyclo_function_entry_cyclo\" |" cyclo[nfnc] } if (num_statements_p) { # Number of statements print "| class=\"cyclo_function_entry_number\" |" num_statements[nfnc] } if (num_lines_p) { # Number of lines print "| class=\"cyclo_function_entry_number\" |" num_lines[nfnc] } if (first_line_p) { # First line print "| class=\"cyclo_function_entry_number\" |" first_line[nfnc] } if (file_p) { href = "" if (source_file_link_tmpl != "") { # Get href target href = source_file_link_tmpl sub(/%FILENAME%/, file[nfnc], href) } # Source file print "| class=\"cyclo_function_entry_filename\" |" \ ((href != "") ? "[" href " " file[nfnc] "]" : "[" file[nfnc] "]") } } # Scan data from a line { function_name = $7 nfuncs++; fnames[nfuncs] = function_name mcyclo[nfuncs] = $1 cyclo[nfuncs] = $2 num_statements[nfuncs] = $3 first_line[nfuncs] = $4 num_lines[nfuncs] = $5 # Build the filename from the file_spec ($6) begin_util_path = index($6, cut_dir) tmpfilename = substr($6, begin_util_path + length(cut_dir)) sub(/\([0-9]+\):/, "", tmpfilename) file[nfuncs] = tmpfilename if (mcyclo[nfuncs] > cyclo_simple_max) { # Extract function contents to a fn_txt file filepath = $6 sub(/\([0-9]+\):/, "", filepath) num_line = 0 while ((getline codeline < filepath) > 0) { num_line++; if ((num_line >= first_line[nfuncs]) && (num_line < first_line[nfuncs] + num_lines[nfuncs])) { print codeline > (function_name nfuncs "_fn.txt") } } close (function_name nfuncs "_fn.txt") close(filepath) } # Initial values for statistics variables num_of_functions = 0 max_mcyclo = 0 max_function_length = 0 num_of_simple_functions = 0 num_of_moderate_functions = 0 num_of_high_functions = 0 num_of_untestable_functions = 0 } # Epilogue END { # Print header (only for html) if (output_lang == "html") { html_header() } # Print prolog if ((output_lang == "html") && (html_prolog != "")) { print html_prolog } if ((output_lang == "wiki") && (wiki_prolog != "")) { print wiki_prolog } if (output_lang == "html") { print "
" package_name " Cyclomatic Complexity Report
" print "

Report generated at: " strftime() "

" } if (output_lang == "wiki") { print "==" package_name " Cyclomatic Complexity Report==" print "Report generated at: '''" strftime() "'''" } if (section_global_stats_p) { build_stats() if (output_lang == "html") { html_global_stats() } if (output_lang == "wiki") { wiki_global_stats() } } if (section_function_cyclo_p) { if (output_lang == "html") { html_function_cyclo() } if (output_lang == "wiki") { wiki_function_cyclo() } } # Print epilog if ((output_lang == "html") && (html_epilog != "")) { print html_epilog } if ((output_lang == "wiki") && (wiki_epilog != "")) { print wiki_epilog } # Print footer (html only) if (output_lang == "html") { html_footer() } } # End of pmccabe2html libtasn1-3.4/build-aux/test-driver0000755000000000000000000000761112244721751014066 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2012-06-27.10; # UTC # Copyright (C) 2011-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. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then estatus=1 fi case $estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # 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: libtasn1-3.4/build-aux/vc-list-files0000775000000000000000000000734312244720630014276 00000000000000#!/bin/sh # List version-controlled file names. # Print a version string. scriptversion=2011-05-16.22; # UTC # Copyright (C) 2006-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 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 . # List the specified version-controlled files. # With no argument, list them all. With a single DIRECTORY argument, # list the version-controlled files in that directory. # If there's an argument, it must be a single, "."-relative directory name. # cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/ postprocess= case $1 in --help) cat <. EOF exit ;; --version) year=`echo "$scriptversion" | sed 's/[^0-9].*//'` cat < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. EOF exit ;; -C) test "$2" = . || postprocess="| sed 's|^|$2/|'" cd "$2" || exit 1 shift; shift ;; esac test $# = 0 && set . for dir do if test -d .git; then test "x$dir" = x. \ && dir= sed_esc= \ || { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; } # Ignore git symlinks - either they point into the tree, in which case # we don't need to visit the target twice, or they point somewhere # else (often into a submodule), in which case the content does not # belong to this package. eval exec git ls-tree -r 'HEAD:"$dir"' \ \| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess elif test -d .hg; then eval exec hg locate '"$dir/*"' $postprocess elif test -d .bzr; then test "$postprocess" = '' && postprocess="| sed 's|^\./||'" eval exec bzr ls -R --versioned '"$dir"' $postprocess elif test -d CVS; then test "$postprocess" = '' && postprocess="| sed 's|^\./||'" if test -x build-aux/cvsu; then eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess elif (cvsu --help) >/dev/null 2>&1; then eval cvsu --find --types=AFGM '"$dir"' $postprocess else eval awk -F/ \''{ \ if (!$1 && $3 !~ /^-/) { \ f=FILENAME; \ if (f ~ /CVS\/Entries$/) \ f = substr(f, 1, length(f)-11); \ print f $2; \ }}'\'' \ `find "$dir" -name Entries -print` /dev/null' $postprocess fi elif test -d .svn; then eval exec svn list -R '"$dir"' $postprocess else echo "$0: Failed to determine type of version control used in `pwd`" 1>&2 exit 1 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: libtasn1-3.4/build-aux/texinfo.tex0000644000000000000000000116703612244721750014076 00000000000000% texinfo.tex -- TeX macros to handle Texinfo files. % % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % \def\texinfoversion{2013-02-01.11} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as % published by the Free Software Foundation, either version 3 of the % License, or (at your option) any later version. % % This texinfo.tex file is distributed in the hope that 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, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. This Exception is an additional permission under section 7 % of the GNU General Public License, version 3 ("GPLv3"). % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or % http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or % http://www.gnu.org/software/texinfo/ (the Texinfo home page) % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include including a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever; this makes foo.ps. % The extra TeX runs get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. % % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. \message{Loading texinfo [version \texinfoversion]:} % If in a .fmt file, print the version number % and turn on active characters that we couldn't do earlier because % they might have appeared in the input file name. \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexfootnote=\footnote \let\ptexgtr=> \let\ptexhat=^ \let\ptexi=\i \let\ptexindent=\indent \let\ptexinsert=\insert \let\ptexlbrace=\{ \let\ptexless=< \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ \let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{l.\the\inputlineno:\space} \fi % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi \ifx\putworderror\undefined \gdef\putworderror{error}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi % Since the category of space is not known, we have to be careful. \chardef\spacecat = 10 \def\spaceisspace{\catcode`\ =\spacecat} % sometimes characters are active, so we need control sequences. \chardef\ampChar = `\& \chardef\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! \chardef\hashChar = `\# \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; \chardef\slashChar = `\/ \chardef\underChar = `\_ % Ignore a token. % \def\gobble#1{} % The following is used inside several \edef's. \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} % Hyphenation fixes. \hyphenation{ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } % Margin to add to right of even pages, to left of odd pages. \newdimen\bindingoffset \newdimen\normaloffset \newdimen\pagewidth \newdimen\pageheight % For a final copy, take out the rectangles % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % \def\finalout{\overfullrule=0pt } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make % some effort to order the tracing commands to reduce output in the log % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \def\loggingall{% \tracingstats2 \tracingpages1 \tracinglostchars2 % 2 gives us more in etex \tracingparagraphs1 \tracingoutput1 \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen \ifx\eTeXversion\thisisundefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 \tracingnesting2 \tracingassigns1 \fi \tracingcommands3 % 3 gives us more in etex \errorcontextlines16 }% % @errormsg{MSG}. Do the index-like expansions on MSG, but if things % aren't perfect, it's not the end of the world, being an error message, % after all. % \def\errormsg{\begingroup \indexnofonts \doerrormsg} \def\doerrormsg#1{\errmessage{#1}} % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount \removelastskip\penalty-100\medskip\fi\fi} \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} % Do @cropmarks to get crop marks. % \newif\ifcropmarks \let\cropmarks = \cropmarkstrue % % Dimensions to add cropmarks at corners. % Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines \newdimen\cornerlong \cornerlong=1pc \newdimen\cornerthick \cornerthick=.3pt \newdimen\topandbottommargin \topandbottommargin=.75in % Output a mark which sets \thischapter, \thissection and \thiscolor. % We dump everything together because we only have one kind of mark. % This works because we only use \botmark / \topmark, not \firstmark. % % A mark contains a subexpression of the \ifcase ... \fi construct. % \get*marks macros below extract the needed part using \ifcase. % % Another complication is to let the user choose whether \thischapter % (\thissection) refers to the chapter (section) in effect at the top % of a page, or that at the bottom of a page. The solution is % described on page 260 of The TeXbook. It involves outputting two % marks for the sectioning macros, one before the section break, and % one after. I won't pretend I can describe this better than DEK... \def\domark{% \toks0=\expandafter{\lastchapterdefs}% \toks2=\expandafter{\lastsectiondefs}% \toks4=\expandafter{\prevchapterdefs}% \toks6=\expandafter{\prevsectiondefs}% \toks8=\expandafter{\lastcolordefs}% \mark{% \the\toks0 \the\toks2 \noexpand\or \the\toks4 \the\toks6 \noexpand\else \the\toks8 }% } % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., % @setcolor (or @url, or @link, etc.) between @contents and the very % first @chapter. \def\gettopheadingmarks{% \ifcase0\topmark\fi \ifx\thischapter\empty \ifcase0\firstmark\fi \fi } \def\getbottomheadingmarks{\ifcase1\botmark\fi} \def\getcolormarks{\ifcase2\topmark\fi} % Avoid "undefined control sequence" errors. \def\lastchapterdefs{} \def\lastsectiondefs{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\lastcolordefs{} % Main output routine. \chardef\PAGE = 255 \output = {\onepageout{\pagecontents\PAGE}} \newbox\headlinebox \newbox\footlinebox % \onepageout takes a vbox as an argument. Note that \pagecontents % does insertions, but you have to call it yourself. \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% % {% % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \indexdummies % don't expand commands in the output. \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. % We don't want .vr (or whatever) entries like this: % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; % it needs to be % {\code {{\tt \backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi % \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize \vskip-\topandbottommargin \vtop to0pt{% \line{\ewtop\hfil\ewtop}% \nointerlineskip \line{% \vbox{\moveleft\cornerthick\nstop}% \hfill \vbox{\moveright\cornerthick\nstop}% }% \vss}% \vskip\topandbottommargin \line\bgroup \hfil % center the page within the outer (page) hsize. \ifodd\pageno\hskip\bindingoffset\fi \vbox\bgroup \fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingyyy.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 24pt \unvbox\footlinebox \fi % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick \vbox to0pt{\vss \line{% \vbox{\moveleft\cornerthick\nsbot}% \hfill \vbox{\moveright\cornerthick\nsbot}% }% \nointerlineskip \line{\ewbot\hfil\ewbot}% }% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox }% end of group with \indexdummies \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi % marginal hacks, juha@viisa.uucp (Juha Takala) \ifvoid\margin\else % marginal info is present \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi \dimen@=\dp#1\relax \unvbox#1\relax \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) % \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} \def\nstop{\vbox {\hrule height\cornerthick depth\cornerlong width\cornerthick}} \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% \def\argtorun{#2}% \begingroup \obeylines \spaceisspace #1% \parseargline\empty% Insert the \empty token, see \finishparsearg below. } {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. \argremovecomment #1\comment\ArgTerm% }% } % First remove any @comment, then any @c comment. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo % This space token undergoes the same procedure and is eventually removed % by \finishparsearg. % \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% \def\temp{#3}% \ifx\temp\empty % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: \let\temp\finishparsearg \else \let\temp\argcheckspaces \fi % Put the space token in: \temp#1 #3\ArgTerm } % If a _delimited_ argument is enclosed in braces, they get stripped; so % to get _exactly_ the rest of the line, we had to prevent such situation. % We prepended an \empty token at the very beginning and we expand it now, % just before passing the control to \argtorun. % (Similarly, we have to think about #3 of \argcheckspacesY above: it is % either the null string, or it ends with \^^M---thus there is no danger % that a pair of braces would be stripped. % % But first, we have to remove the trailing space token. % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} % % Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my % favourite TeX trick. --kasal, 16nov03 \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } \def\doparseargdef#1#2{% \def#2{\parsearg#1}% \def#1##1% } % Several utility definitions with active space: { \obeyspaces \gdef\obeyedspace{ } % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % \gdef\sepspaces{\obeyspaces\let =\tie} % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\leavevmode \penalty \@M \ ). \gdef\unsepspaces{\let =\space} } \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: % % \envdef\foo{...} % \def\Efoo{...} % % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % used to check whether the current environment is the one expected. % % Non-false conditionals (@iftex, @ifset) don't fit into this, so they % are not treated as environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) % At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty % ... but they get defined via ``\envdef\foo{...}'': \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} \def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} % Check whether we're in the right environment: \def\checkenv#1{% \def\temp{#1}% \ifx\thisenv\temp \else \badenverr \fi } % Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, not \inenvironment\thisenv}% } \def\inenvironment#1{% \ifx#1\empty outside of any environment% \else in environment \expandafter\string#1% \fi } % @end foo executes the definition of \Efoo. % But first, it executes a specialized version of \checkenv % \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal. \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup \fi } \newhelp\EMsimple{Press RETURN to continue.} % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\unskip\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. \def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. \def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. % \def\onword{on} \def\offword{off} % \parseargdef\frenchspacing{% \def\temp{#1}% \ifx\temp\onword \plainfrenchspacing \else\ifx\temp\offword \plainnonfrenchspacing \else \errhelp = \EMsimple \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% \fi\fi } % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % % Another complication is that the group might be very large. This can % cause the glue on the previous page to be unduly stretched, because it % does not have much material. In this case, it's better to add an % explicit \vfill so that the extra space is at the bottom. The % threshold for doing this is if the group is more than \vfilllimit % percent of a page (\vfilllimit can be changed inside of @tex). % \newbox\groupbox \def\vfilllimit{0.7} % \envdef\group{% \ifnum\catcode`\^^M=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi \startsavinginserts % \setbox\groupbox = \vtop\bgroup % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment } % % The \vtop produces a box with normal height and large depth; thus, TeX puts % \baselineskip glue before it, and (when the next line of text is done) % \lineskip glue after it. Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% % To get correct interline space between the last line of the group % and the first line afterwards, we have to propagate \prevdepth. \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). \dimen2 = \pageheight \advance\dimen2 by -\pagetotal % if the group doesn't fit on the current page, and it's a big big % group, force a page break. \ifdim \dimen0 > \dimen2 \ifdim \pagetotal < \vfilllimit\pageheight \page \fi \fi \box\groupbox \prevdepth = \dimen1 \checkinserts } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % % Do a \strut just to make the height of this box be normal, so the % normal leading is inserted relative to the preceding line. % And a page break here is fine. \vtop to #1\mil{\strut\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak \fi } % @br forces paragraph break (and is undocumented). \let\br = \par % @page forces the start of a new page. % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} % This defn is used inside nofill environments such as @example. \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion % class. WHICH is `l' or `r'. Not documented, written for gawk manual. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} % \def\doinmargin#1#2{\strut\vadjust{% \nobreak \kern-\strutdepth \vtop to \strutdepth{% \baselineskip=\strutdepth \vss % if you have multiple lines of stuff to put here, you'll need to % make the vbox yourself of the appropriate size. \ifx#1l% \llap{\ignorespaces #2\hskip\inmarginspacing}% \else \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% \fi \null }% }} \def\inleftmargin{\doinmargin l} \def\inrightmargin{\doinmargin r} % % @inmargin{TEXT [, RIGHT-TEXT]} % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts \def\righttext{#2}% \else \def\lefttext{#1}% have only one text \def\righttext{#1}% \fi % \ifodd\pageno \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin \else \def\temp{\inleftmargin\lefttext}% \fi \temp } % @| inserts a changebar to the left of the current line. It should % surround any changed text. This approach does *not* work if the % change spans more than two lines of output. To handle that, we would % have adopt a much more difficult approach (putting marks into the main % vertical list for the beginning and end of each change). This command % is not documented, not supported, and doesn't work. % \def\|{% % \vadjust can only be used in horizontal mode. \leavevmode % % Append this vertical mode material after the current line in the output. \vadjust{% % We want to insert a rule with the height and depth of the current % leading; that is exactly what \strutbox is supposed to record. \vskip-\baselineskip % % \vadjust-items are inserted at the left edge of the type. So % the \llap here moves out into the left-hand margin. \llap{% % % For a thicker or thinner bar, change the `1pt'. \vrule height\baselineskip width1pt % % This is the space between the bar and the text. \hskip 12pt }% }% } % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#1}% {% \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @include of #1^^J}% \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes % definitions, etc. \expandafter }\temp \popthisfilestack } \def\filenamecatcodes{% \catcode`\\=\other \catcode`~=\other \catcode`^=\other \catcode`_=\other \catcode`|=\other \catcode`<=\other \catcode`>=\other \catcode`+=\other \catcode`-=\other \catcode`\`=\other \catcode`\'=\other } \def\pushthisfilestack{% \expandafter\pushthisfilestackX\popthisfilestack\StackTerm } \def\pushthisfilestackX{% \expandafter\pushthisfilestackY\thisfile\StackTerm } \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% } \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} % \def\thisfile{} % @center line % outputs that line, centered. % \parseargdef\center{% \ifhmode \let\centersub\centerH \else \let\centersub\centerV \fi \centersub{\hfil \ignorespaces#1\unskip \hfil}% \let\centersub\relax % don't let the definition persist, just in case } \def\centerH#1{{% \hfil\break \advance\hsize by -\leftskip \advance\hsize by -\rightskip \line{#1}% \break }} % \newcount\centerpenalty \def\centerV#1{% % The idea here is the same as in \startdefun, \cartouche, etc.: if % @center is the first thing after a section heading, we need to wipe % out the negative parskip inserted by \sectionheading, but still % prevent a page break here. \centerpenalty = \lastpenalty \ifnum\centerpenalty>10000 \vskip\parskip \fi \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi \line{\kern\leftskip #1\kern\rightskip}% } % @sp n outputs n lines of vertical space % \parseargdef\sp{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment % \def\comment{\begingroup \catcode`\^^M=\other% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \commentxxx} {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} % \let\c=\comment % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. % NCHARS can also be the word `asis' or `none'. % We cannot feasibly implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \parseargdef\paragraphindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \parseargdef\exampleindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @firstparagraphindent WORD % If WORD is `none', then suppress indentation of the first paragraph % after a section heading. If WORD is `insert', then do indent at such % paragraphs. % % The paragraph indentation is suppressed or not by calling % \suppressfirstparagraphindent, which the sectioning commands do. % We switch the definition of this back and forth according to WORD. % By default, we suppress indentation. % \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} \def\insertword{insert} % \parseargdef\firstparagraphindent{% \def\temp{#1}% \ifx\temp\noneword \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent \else\ifx\temp\insertword \let\suppressfirstparagraphindent = \relax \else \errhelp = \EMsimple \errmessage{Unknown @firstparagraphindent option `\temp'}% \fi\fi } % Here is how we actually suppress indentation. Redefine \everypar to % \kern backwards by \parindent, and then reset itself to empty. % % We also make \indent itself not actually do anything until the next % paragraph. % \gdef\dosuppressfirstparagraphindent{% \gdef\indent{% \restorefirstparagraphindent \indent }% \gdef\noindent{% \restorefirstparagraphindent \noindent }% \global\everypar = {% \kern -\parindent \restorefirstparagraphindent }% } \gdef\restorefirstparagraphindent{% \global \let \indent = \ptexindent \global \let \noindent = \ptexnoindent \global \everypar = {}% } % @refill is a no-op. \let\refill=\relax % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate (before @setfilename). % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % @setfilename is done at the beginning of every texinfo file. % So open here the files we need to have open while reading the input. % This makes it possible to make a .fmt file for texinfo. \def\setfilename{% \fixbackslash % Turn off hack to swallow `\input texinfo'. \iflinks \tryauxfile % Open the new aux file. TeX will close it automatically at exit. \immediate\openout\auxfile=\jobname.aux \fi % \openindices needs to do some work in any case. \openindices \let\setfilename=\comment % Ignore extra @setfilename cmds. % % If texinfo.cnf is present on the system, read it. % Useful for site-wide @afourpaper, etc. \openin 1 texinfo.cnf \ifeof 1 \else \input texinfo.cnf \fi \closein 1 % \comment % Ignore the actual filename. } % Called from \setfilename. % \def\openindices{% \newindex{cp}% \newcodeindex{fn}% \newcodeindex{vr}% \newcodeindex{tp}% \newcodeindex{ky}% \newcodeindex{pg}% } % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 % can be set). So we test for \relax and 0 as well as being undefined. \ifx\pdfoutput\thisisundefined \else \ifx\pdfoutput\relax \else \ifcase\pdfoutput \else \pdftrue \fi \fi \fi % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. % % See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and % related messages. The final outcome is that it is up to the TeX user % to double the backslashes and otherwise make the string valid, so % that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to % do this reliably, so we use it. % #1 is a control sequence in which to do the replacements, % which we \xdef. \def\txiescapepdf#1{% \ifx\pdfescapestring\thisisundefined % No primitive available; should we give a warning or log? % Many times it won't matter. \else % The expandable \pdfescapestring primitive escapes parentheses, % backslashes, and other special chars. \xdef#1{\pdfescapestring{#1}}% \fi } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images with PDF output, and none of those formats could be found. (.eps cannot be supported due to the design of the PDF format; use regular TeX (DVI output) for that.)} \ifpdf % % Color manipulation macros based on pdfcolor.tex, % except using rgb instead of cmyk; the latter is said to render as a % very dark gray on-screen and a very dark halftone in print, instead % of actual black. \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % % k sets the color for filling (usual text, etc.); % K sets the color for stroking (thin rules, e.g., normal _'s). \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\setcolor#1{% \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% \domark \pdfsetcolor{#1}% } % \def\maincolor{\rgbBlack} \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\lastcolordefs{} % \def\makefootline{% \baselineskip24pt \line{\pdfsetcolor{\maincolor}\the\footline}% } % \def\makeheadline{% \vbox to 0pt{% \vskip-22.5pt \line{% \vbox to8.5pt{}% % Extract \thiscolor definition from the marks. \getcolormarks % Typeset the headline with \maincolor, then restore the color. \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% }% \vss }% \nointerlineskip } % % \pdfcatalog{/PageMode /UseOutlines} % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\dopdfimage#1#2#3{% \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % pdftex (and the PDF format) support .pdf, .png, .jpg (among % others). Let's try in that order, PDF first since if % someone has a scalable image, presumably better to use that than a % bitmap. \let\pdfimgext=\empty \begingroup \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% \else \gdef\pdfimgext{JPG}% \fi \else \gdef\pdfimgext{jpeg}% \fi \else \gdef\pdfimgext{jpg}% \fi \else \gdef\pdfimgext{png}% \fi \else \gdef\pdfimgext{PDF}% \fi \else \gdef\pdfimgext{pdf}% \fi \closein 1 \endgroup % % without \immediate, ancient pdftex seg faults when the same image is % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) \ifnum\pdftexversion < 14 \immediate\pdfimage \else \immediate\pdfximage \fi \ifdim \wd0 >0pt width \pdfimagewidth \fi \ifdim \wd2 >0pt height \pdfimageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else {#1.\pdfimgext}% \fi \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} % \def\pdfmkdest#1{{% % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts \turnoffactive \makevalueexpandable \def\pdfdestname{#1}% \txiescapepdf\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % % by default, use a color that is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. \def\urlcolor{\rgbDarkRed} \def\linkcolor{\rgbDarkRed} \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines % come from Petr Olsak \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by 1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} % % #1 is the section text, which is what will be displayed in the % outline by the pdf viewer. #2 is the pdf expression for the number % of subentries (or empty, for subsubsections). #3 is the node text, % which might be empty if this toc entry had no corresponding node. % #4 is the page number % \def\dopdfoutline#1#2#3#4{% % Generate a link to the node text if that exists; else, use the % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. \edef\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else \txiescapepdf\pdfoutlinedest \fi % % Also escape PDF chars in the display string. \edef\pdfoutlinetext{#1}% \txiescapepdf\pdfoutlinetext % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup % Read toc silently, to get counts of subentries for \pdfoutline. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% \def\thissubsecnum{0}% }% \def\numsecentry##1##2##3##4{% \advancenumber{chap\thischapnum}% \def\thissecnum{##2}% \def\thissubsecnum{0}% }% \def\numsubsecentry##1##2##3##4{% \advancenumber{sec\thissecnum}% \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% \advancenumber{subsec\thissubsecnum}% }% \def\thischapnum{0}% \def\thissecnum{0}% \def\thissubsecnum{0}% % % use \def rather than \let here because we redefine \chapentry et % al. a second time, below. \def\appentry{\numchapentry}% \def\appsecentry{\numsecentry}% \def\appsubsecentry{\numsubsecentry}% \def\appsubsubsecentry{\numsubsubsecentry}% \def\unnchapentry{\numchapentry}% \def\unnsecentry{\numsecentry}% \def\unnsubsecentry{\numsubsecentry}% \def\unnsubsubsecentry{\numsubsubsecentry}% \readdatafile{toc}% % % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. \def\numchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% count is always zero \dopdfoutline{##1}{}{##3}{##4}}% % % PDF outlines are displayed using system fonts, instead of % document fonts. Therefore we cannot use special characters, % since the encoding is unknown. For example, the eogonek from % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % % TODO this right, we have to translate 8-bit characters to % their "best" equivalent, based on the @documentencoding. Too % much work for too little return. Just use the ASCII equivalents % we use for the index sort strings. % \indexnofonts \setupdatafile % We can have normal brace characters in the PDF outlines, unlike % Texinfo index files. So set that up. \def\{{\lbracecharliteral}% \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } {\catcode`[=1 \catcode`]=2 \catcode`{=\other \catcode`}=\other \gdef\lbracecharliteral[{]% \gdef\rbracecharliteral[}]% ] % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \nextsp} \def\getfilename#1{% \filenamelength=0 % If we don't expand the argument now, \skipspaces will get % snagged on things like "@value{foo}". \edef\temp{#1}% \expandafter\skipspaces\temp|\relax } \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi % make a live url in pdf output. \def\pdfurl#1{% \begingroup % it seems we really need yet another set of dummies; have not % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable % do we want to go so far as to use \indexnofonts instead of just % special-casing \var here? \def\var##1{##1}% % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% \endgroup} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \setcolor{\linkcolor}#1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\setcolor = \gobble \let\pdfsetcolor = \gobble \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput \message{fonts,} % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. % \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname ten#1\endcsname % change the current font } % Select #1 fonts with the current style. % \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} \def\rm{\fam=0 \setfontstyle{rm}} \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} \def\tt{\fam=\ttfam \setfontstyle{tt}} % Unfortunately, we have to override this for titles and the like, since % in those cases "rm" is bold. Sigh. \def\rmisbold{\rm\def\curfontstyle{bf}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. \newfam\sffam \def\sf{\fam=\sffam \setfontstyle{sf}} \let\li = \sf % Sometimes we call it \li, not \sf. % We don't need math for this font style. \def\ttsl{\setfontstyle{ttsl}} % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % \newdimen\textleading \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % PDF CMaps. See also LaTeX's t1.cmap. % % do nothing with this by default. \expandafter\let\csname cmapOT1\endcsname\gobble \expandafter\let\csname cmapOT1IT\endcsname\gobble \expandafter\let\csname cmapOT1TT\endcsname\gobble % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) \ifpdf \ifx\pdffontattr\thisisundefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1-0) %%Title: (TeX-OT1-0 TeX OT1 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1) /Supplement 0 >> def /CMapName /TeX-OT1-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 40 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1IT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1IT-0) %%Title: (TeX-OT1IT-0 TeX OT1IT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1IT) /Supplement 0 >> def /CMapName /TeX-OT1IT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <25> <26> <0025> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 42 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <23> <0023> <24> <00A3> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1IT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1TT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1TT-0) %%Title: (TeX-OT1TT-0 TeX OT1TT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1TT) /Supplement 0 >> def /CMapName /TeX-OT1TT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 5 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> endbfrange 32 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <2191> <0C> <2193> <0D> <0027> <0E> <00A1> <0F> <00BF> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <20> <2423> <27> <2019> <60> <2018> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1TT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi % Set the font macro #1 to the font named \fontprefix#2. % #3 is the font's design size, #4 is a scale factor, #5 is the CMap % encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). % Example: % #1 = \textrm % #2 = \rmshape % #3 = 10 % #4 = \mainmagstep % #5 = OT1 % \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% } % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble % % (end of cmaps) % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. \ifx\fontprefix\thisisundefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} \def\rmbshape{bx} % where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} % Definitions for a main text size of 11pt. (The default in Texinfo.) % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} \edef\mainmagstep{\magstephalf} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1095} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter (and unnumbered) fonts (17.28pt). \def\chapnominalsize{17pt} \setfont\chaprm\rmbshape{12}{\magstep2}{OT1} \setfont\chapit\itbshape{10}{\magstep3}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep3}{OT1} \setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} \setfont\chapsf\sfbshape{17}{1000}{OT1} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3}{OT1} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 \def\chapecsize{1728} % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\secsf\sfbshape{12}{\magstep1}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep2}{OT1} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 \def\sececsize{1440} % Subsection fonts (13.15pt). \def\ssecnominalsize{13pt} \setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} \setfont\ssecit\itbshape{10}{1315}{OT1IT} \setfont\ssecsl\slbshape{10}{1315}{OT1} \setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} \setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1315}{OT1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 \def\ssececsize{1200} % Reduced fonts for @acro in text (10pt). \def\reducednominalsize{10pt} \setfont\reducedrm\rmshape{10}{1000}{OT1} \setfont\reducedtt\ttshape{10}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{1000}{OT1} \setfont\reducedit\itshape{10}{1000}{OT1IT} \setfont\reducedsl\slshape{10}{1000}{OT1} \setfont\reducedsf\sfshape{10}{1000}{OT1} \setfont\reducedsc\scshape{10}{1000}{OT1} \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} \font\reducedi=cmmi10 \font\reducedsy=cmsy10 \def\reducedecsize{1000} \textleading = 13.2pt % line spacing for 11pt CM \textfonts % reset the current fonts \rm } % end of 11pt text font size definitions, \definetextfontsizexi % Definitions to make the main text be 10pt Computer Modern, with % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. % \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} \edef\mainmagstep{1000} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1000} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter fonts (14.4pt). \def\chapnominalsize{14pt} \setfont\chaprm\rmbshape{12}{\magstep1}{OT1} \setfont\chapit\itbshape{10}{\magstep2}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep2}{OT1} \setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\chapsf\sfbshape{12}{\magstep1}{OT1} \let\chapbf\chaprm \setfont\chapsc\scbshape{10}{\magstep2}{OT1} \font\chapi=cmmi12 scaled \magstep1 \font\chapsy=cmsy10 scaled \magstep2 \def\chapecsize{1440} % Section fonts (12pt). \def\secnominalsize{12pt} \setfont\secrm\rmbshape{12}{1000}{OT1} \setfont\secit\itbshape{10}{\magstep1}{OT1IT} \setfont\secsl\slbshape{10}{\magstep1}{OT1} \setfont\sectt\ttbshape{12}{1000}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} \font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} % Subsection fonts (10pt). \def\ssecnominalsize{10pt} \setfont\ssecrm\rmbshape{10}{1000}{OT1} \setfont\ssecit\itbshape{10}{1000}{OT1IT} \setfont\ssecsl\slbshape{10}{1000}{OT1} \setfont\ssectt\ttbshape{10}{1000}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} \setfont\ssecsf\sfbshape{10}{1000}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1000}{OT1} \font\sseci=cmmi10 \font\ssecsy=cmsy10 \def\ssececsize{1000} % Reduced fonts for @acro in text (9pt). \def\reducednominalsize{9pt} \setfont\reducedrm\rmshape{9}{1000}{OT1} \setfont\reducedtt\ttshape{9}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{900}{OT1} \setfont\reducedit\itshape{9}{1000}{OT1IT} \setfont\reducedsl\slshape{9}{1000}{OT1} \setfont\reducedsf\sfshape{9}{1000}{OT1} \setfont\reducedsc\scshape{10}{900}{OT1} \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} \font\reducedi=cmmi9 \font\reducedsy=cmsy9 \def\reducedecsize{0900} \divide\parskip by 2 % reduce space between paragraphs \textleading = 12pt % line spacing for 10pt CM \textfonts % reset the current fonts \rm } % end of 10pt text font size definitions, \definetextfontsizex % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % \def\xiword{11} \def\xword{10} \def\xwordpt{10pt} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% %\wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi \else \errhelp=\EMsimple \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} \fi\fi \endgroup } % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. Since % texinfo doesn't allow for producing subscripts and superscripts except % in the main text, we don't bother to reset \scriptfont and % \scriptscriptfont (which would also require loading a lot more fonts). % \def\resetmathfonts{% \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf \textfont\ttfam=\tentt \textfont\sffam=\tensf } % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this because \STYLE needs to also set the % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire % \tenSTYLE to set the current font. % % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used in % the LaTeX logo and acronyms. % % This all needs generalizing, badly. % \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \def\curfontsize{text}% \def\lsize{reduced}\def\lllsize{smaller}% \resetmathfonts \setleading{\textleading}} \def\titlefonts{% \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy \let\tenttsl=\titlettsl \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% \resetmathfonts \setleading{27pt}} \def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl \def\curfontsize{chap}% \def\lsize{sec}\def\lllsize{text}% \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl \def\curfontsize{sec}% \def\lsize{subsec}\def\lllsize{reduced}% \resetmathfonts \setleading{16pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl \def\curfontsize{ssec}% \def\lsize{text}\def\lllsize{small}% \resetmathfonts \setleading{15pt}} \let\subsubsecfonts = \subsecfonts \def\reducedfonts{% \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy \let\tenttsl=\reducedttsl \def\curfontsize{reduced}% \def\lsize{small}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallfonts{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy \let\tenttsl=\smallttsl \def\curfontsize{small}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallerfonts{% \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy \let\tenttsl=\smallerttsl \def\curfontsize{smaller}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{9.5pt}} % Fonts for short table of contents. \setfont\shortcontrm\rmshape{12}{1000}{OT1} \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 \setfont\shortcontsl\slshape{12}{1000}{OT1} \setfont\shortconttt\ttshape{12}{1000}{OT1TT} % Define these just so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample % can fit this many characters: % 8.5x11=86 smallbook=72 a4=90 a5=69 % If we use \scriptfonts (8pt), then we can fit this many characters: % 8.5x11=90+ smallbook=80 a4=90+ a5=77 % For me, subjectively, the few extra characters that fit aren't worth % the additional smallness of 8pt. So I'm making the default 9pt. % % By the way, for comparison, here's what fits with @example (10pt): % 8.5x11=71 smallbook=60 a4=75 a5=58 % --karl, 24jan03. % Set up the default fonts, so we can use them for creating boxes. % \definetextfontsizexi \message{markup,} % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Markup style infrastructure. \defmarkupstylesetup\INITMACRO will % define and register \INITMACRO to be called on markup style changes. % \INITMACRO can check \currentmarkupstyle for the innermost % style and the set of \ifmarkupSTYLE switches for all styles % currently in effect. \newif\ifmarkupvar \newif\ifmarkupsamp \newif\ifmarkupkey %\newif\ifmarkupfile % @file == @samp. %\newif\ifmarkupoption % @option == @samp. \newif\ifmarkupcode \newif\ifmarkupkbd %\newif\ifmarkupenv % @env == @code. %\newif\ifmarkupcommand % @command == @code. \newif\ifmarkuptex % @tex (and part of @math, for now). \newif\ifmarkupexample \newif\ifmarkupverb \newif\ifmarkupverbatim \let\currentmarkupstyle\empty \def\setupmarkupstyle#1{% \csname markup#1true\endcsname \def\currentmarkupstyle{#1}% \markupstylesetup } \let\markupstylesetup\empty \def\defmarkupstylesetup#1{% \expandafter\def\expandafter\markupstylesetup \expandafter{\markupstylesetup #1}% \def#1% } % Markup style setup for left and right quotes. \defmarkupstylesetup\markupsetuplq{% \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuplqdefault \else \temp \fi } \defmarkupstylesetup\markupsetuprq{% \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuprqdefault \else \temp \fi } { \catcode`\'=\active \catcode`\`=\active \gdef\markupsetuplqdefault{\let`\lq} \gdef\markupsetuprqdefault{\let'\rq} \gdef\markupsetcodequoteleft{\let`\codequoteleft} \gdef\markupsetcodequoteright{\let'\codequoteright} } \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright % \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright % \let\markupsetuplqkbd \markupsetcodequoteleft \let\markupsetuprqkbd \markupsetcodequoteright % \let\markupsetuplqsamp \markupsetcodequoteleft \let\markupsetuprqsamp \markupsetcodequoteright % \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright % \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it % works for pasting with more pdf viewers (at least evince), the % lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax '% \else \char'15 \fi \else \char'15 \fi } % % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. % \def\codequoteleft{% \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax % [Knuth] pp. 380,381,391 % \relax disables Spanish ligatures ?` and !` of \tt font. \relax`% \else \char'22 \fi \else \char'22 \fi } % Commands to set the quote options. % \parseargdef\codequoteundirected{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequoteundirected\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequoteundirected\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% \fi\fi } % \parseargdef\codequotebacktick{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequotebacktick\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequotebacktick\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% \fi\fi } % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 % Font commands. % #1 is the font command (\sl or \it), #2 is the text to slant. % If we are in a monospaced environment, however, 1) always use \ttsl, % and 2) do not add an italic correction. \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% \next } \def\smartslanted{\dosmartslant\sl} \def\smartitalic{\dosmartslant\it} % Output an italic correction unless \next (presumed to be the following % character) is such as not to need one. \def\smartitaliccorrection{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% \else\ptexslash \fi\fi\fi \aftersmartic } % Unconditional use \ttsl, and no ic. @var is set to this for defuns. \def\ttslanted#1{{\ttsl #1}} % @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% \smartslanted{#1}% } \let\i=\smartitalic \let\slanted=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic % Explicit font changes: @r, @sc, undocumented @ii. \def\r#1{{\rm #1}} % roman font \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font % @b, explicit bold. Also @strong. \def\b#1{{\bf #1}} \let\strong=\b % @sansserif, explicit sans. \def\sansserif#1{{\sf #1}} % We can't just use \exhyphenpenalty, because that only has effect at % the end of a paragraph. Restore normal hyphenation at the end of the % group within which \nohyphenation is presumably called. % \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} \def\restorehyphenation{\hyphenchar\font = `- } % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % \catcode`@=11 \def\plainfrenchspacing{% \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m \def\endofsentencespacefactor{1000}% for @. and friends } \def\plainnonfrenchspacing{% \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 \def\endofsentencespacefactor{3000}% for @. and friends } \catcode`@=\other \def\endofsentencespacefactor{3000}% default % @t, explicit typewriter. \def\t#1{% {\tt \rawbackslash \plainfrenchspacing #1}% \null } % @samp. \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} % @indicateurl is \samp, that is, with quotes. \let\indicateurl=\samp % @code (and similar) prints in typewriter, but with spaces the same % size as normal in the surrounding text, without hyphenation, etc. % This is a subroutine for that. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \plainfrenchspacing #1% }% \null % reset spacefactor to 1000 } % We *must* turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) % and arrange explicitly to hyphenate at a dash. % -- rms. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup \setupmarkupstyle{code}% % The following should really be moved into \setupmarkupstyle handlers. \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else \let-\normaldash \let_\realunder \fi \codex } } \def\codex #1{\tclose{#1}\endgroup} \def\normaldash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}% } % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is bad. % @allowcodebreaks provides a document-level way to turn breaking at - % and _ on and off. % \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} \def\keywordfalse{false} \parseargdef\allowcodebreaks{% \def\txiarg{#1}% \ifx\txiarg\keywordtrue \allowcodebreakstrue \else\ifx\txiarg\keywordfalse \allowcodebreaksfalse \else \errhelp = \EMsimple \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% \fi\fi } % For @command, @env, @file, @option quotes seem unnecessary, % so use \code rather than \samp. \let\command=\code \let\env=\code \let\file=\code \let\option=\code % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url % itself. First (mandatory) arg is the url. % (This \urefnobreak definition isn't used now, leaving it for a while % for comparison.) \def\urefnobreak#1{\dourefnobreak #1,,,\finish} \def\dourefnobreak#1,#2,#3,#4\finish{\begingroup \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url \fi \else \code{#1}% only url given, so show it \fi \fi \endlink \endgroup} % This \urefbreak definition is the active one. \def\urefbreak{\begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} \def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url \fi \else \urefcode{#1}% only url given, so show it \fi \fi \endlink \endgroup} % Allow line breaks around only a few characters (only). \def\urefcatcodes{% \catcode\ampChar=\active \catcode\dotChar=\active \catcode\hashChar=\active \catcode\questChar=\active \catcode\slashChar=\active } { \urefcatcodes % \global\def\urefcode{\begingroup \setupmarkupstyle{code}% \urefcatcodes \let&\urefcodeamp \let.\urefcodedot \let#\urefcodehash \let?\urefcodequest \let/\urefcodeslash \codex } % % By default, they are just regular characters. \global\def&{\normalamp} \global\def.{\normaldot} \global\def#{\normalhash} \global\def?{\normalquest} \global\def/{\normalslash} } % we put a little stretch before and after the breakable chars, to help % line breaking of long url's. The unequal skips make look better in % cmtt at least, especially for dots. \def\urefprestretch{\urefprebreak \hskip0pt plus.13em } \def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } % \def\urefcodeamp{\urefprestretch \&\urefpoststretch} \def\urefcodedot{\urefprestretch .\urefpoststretch} \def\urefcodehash{\urefprestretch \#\urefpoststretch} \def\urefcodequest{\urefprestretch ?\urefpoststretch} \def\urefcodeslash{\futurelet\next\urefcodeslashfinish} { \catcode`\/=\active \global\def\urefcodeslashfinish{% \urefprestretch \slashChar % Allow line break only after the final / in a sequence of % slashes, to avoid line break between the slashes in http://. \ifx\next/\else \urefpoststretch \fi } } % One more complication: by default we'll break after the special % characters, but some people like to break before the special chars, so % allow that. Also allow no breaking at all, for manual control. % \parseargdef\urefbreakstyle{% \def\txiarg{#1}% \ifx\txiarg\wordnone \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordbefore \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordafter \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} \else \errhelp = \EMsimple \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% \fi\fi\fi } \def\wordafter{after} \def\wordbefore{before} \def\wordnone{none} \urefbreakstyle after % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \let\email=\uref \fi % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \parseargdef\kbdinputstyle{% \def\txiarg{#1}% \ifx\txiarg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\txiarg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\txiarg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} \def\wordexample{example} \def\wordcode{code} % Default is `distinct'. \kbdinputstyle distinct % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. \def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} \def\xkey{\key} \def\kbdsub#1#2#3\par{% \def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi } % definition of @key that produces a lozenge. Doesn't adjust to text size. %\setfont\keyrm\rmshape{8}{1000}{OT1} %\font\keysy=cmsy9 %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% % \vbox{\hrule\kern-0.4pt % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% % \kern-0.4pt\hrule}% % \kern-.06em\raise0.4pt\hbox{\angleright}}}} % definition of @key with no lozenge. If the current font is already % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % \def\key#1{{\setupmarkupstyle{key}% \nohyphenation \ifmonospace\else\tt\fi #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} % @clickstyle @arrow (by default) \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} % @l was never documented to mean ``switch to the Lisp font'', % and it is not used as such in any manual I can find. We need it for % Polish suppressed-l. --karl, 22sep96. %\def\l#1{{\li #1}\null} % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. % \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @abbr for "Comput. J." and the like. % No font change, but don't do end-of-sentence spacing. % \def\abbr#1{\doabbr #1,,\finish} \def\doabbr#1,#2,#3\finish{% {\plainfrenchspacing #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @asis just yields its argument. Used with @table, for example. % \def\asis#1{#1} % @math outputs its argument in math mode. % % One complication: _ usually means subscripts, but it could also mean % an actual _ character, as in @math{@var{some_variable} + 1}. So make % _ active, and distinguish by seeing if the current family is \slfam, % which is what @var uses. { \catcode`\_ = \active \gdef\mathunderscore{% \catcode`\_=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% } } % Another complication: we want \\ (and @\) to output a math (or tt) \. % FYI, plain.tex uses \\ as a temporary control sequence (for no % particular reason), but this is not advertised and we don't care. % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} % \def\math{% \tex \mathunderscore \let\\ = \mathbackslash \mathactive % make the texinfo accent commands work in math mode \let\"=\ddot \let\'=\acute \let\==\bar \let\^=\hat \let\`=\grave \let\u=\breve \let\v=\check \let\~=\tilde \let\dotaccent=\dot $\finishmath } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. % Some active characters (such as <) are spaced differently in math. % We have to reset their definitions in case the @math was an argument % to a command which sets the catcodes (such as @item or @section). % { \catcode`^ = \active \catcode`< = \active \catcode`> = \active \catcode`+ = \active \catcode`' = \active \gdef\mathactive{% \let^ = \ptexhat \let< = \ptexless \let> = \ptexgtr \let+ = \ptexplus \let' = \ptexquoteright } } % ctrl is no longer a Texinfo command, but leave this definition for fun. \def\ctrl #1{{\tt \rawbackslash \hat}#1} % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. % \def\outfmtnametex{tex} % \long\def\inlinefmt#1{\doinlinefmt #1,\finish} \long\def\doinlinefmt#1,#2,\finish{% \def\inlinefmtname{#1}% \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi } % For raw, must switch into @tex before parsing the argument, to avoid % setting catcodes prematurely. Doing it this way means that, for % example, @inlineraw{html, foo{bar} gets a parse error instead of being % ignored. But this isn't important because if people want a literal % *right* brace they would have to use a command anyway, so they may as % well use a command to get a left brace too. We could re-use the % delimiter character idea from \verb, but it seems like overkill. % \long\def\inlineraw{\tex \doinlineraw} \long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} \def\doinlinerawtwo#1,#2,\finish{% \def\inlinerawname{#1}% \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi \endgroup % close group opened by \tex. } \message{glyphs,} % and logos. % @@ prints an @, as does @atchar{}. \def\@{\char64 } \let\atchar=\@ % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. % Unless we're in typewriter, use \ecfont because the CM text fonts do % not have braces, and we don't want to switch into math. \def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} \def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} \let\{=\mylbrace \let\lbracechar=\{ \let\}=\myrbrace \let\rbracechar=\} \begingroup % Definitions to produce \{ and \} commands for indices, % and @{ and @} for the aux/toc files. \catcode`\{ = \other \catcode`\} = \other \catcode`\[ = 1 \catcode`\] = 2 \catcode`\! = 0 \catcode`\\ = \other !gdef!lbracecmd[\{]% !gdef!rbracecmd[\}]% !gdef!lbraceatcmd[@{]% !gdef!rbraceatcmd[@}]% !endgroup % @comma{} to avoid , parsing problems. \let\comma = , % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. \let\, = \ptexc \let\dotaccent = \ptexdot \def\ringaccent#1{{\accent23 #1}} \let\tieaccent = \ptext \let\ubaraccent = \ptexb \let\udotaccent = \d % Other special characters: @questiondown @exclamdown @ordf @ordm % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} % Dotless i and dotless j, used for accents. \def\imacro{i} \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi \else \errmessage{@dotless can be used only with i or j}% \fi\fi } % The \TeX{} logo, as in plain, but resetting the spacing so that a % period following counts as ending a sentence. (Idea found in latex.) % \edef\TeX{\TeX \spacefactor=1000 } % @LaTeX{} logo. Not quite the same results as the definition in % latex.ltx, since we use a different font for the raised A; it's most % convenient for us to use an explicitly smaller font, rather than using % the \scriptstyle font (since we don't reset \scriptstyle and % \scriptscriptstyle). % \def\LaTeX{% L\kern-.36em {\setbox0=\hbox{T}% \vbox to \ht0{\hbox{% \ifx\textnominalsize\xwordpt % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. % Revert to plain's \scriptsize, which is 7pt. \count255=\the\fam $\fam\count255 \scriptstyle A$% \else % For 11pt, we can use our lllsize. \selectfonts\lllsize A% \fi }% \vss }}% \kern-.15em \TeX } % Some math mode symbols. \def\bullet{$\ptexbullet$} \def\geq{\ifmmode \ge\else $\ge$\fi} \def\leq{\ifmmode \le\else $\le$\fi} \def\minus{\ifmmode -\else $-$\fi} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm % typewriter fonts as three actual period characters; on the other hand, % in other typewriter fonts three periods are wider than 1.5em. So do % whichever is larger. % \def\dots{% \leavevmode \setbox0=\hbox{...}% get width of three periods \ifdim\wd0 > 1.5em \dimen0 = \wd0 \else \dimen0 = 1.5em \fi \hbox to \dimen0{% \hskip 0pt plus.25fil .\hskip 0pt plus1fil .\hskip 0pt plus1fil .\hskip 0pt plus.5fil }% } % @enddots{} is an end-of-sentence ellipsis. % \def\enddots{% \dots \spacefactor=\endofsentencespacefactor } % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % % Since these characters are used in examples, they should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. % \def\point{$\star$} \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} % The @error{} command. % Adapted from the TeXbook's \boxit. % \newbox\errorbox % {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) \setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. \advance\hsize by -2\dimen2 % Rules. \vbox{% \hrule height\dimen2 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. \kern3pt\vrule width\dimen2}% Space to right. \hrule height\dimen2} \hfil} % \def\error{\leavevmode\lower.7ex\copy\errorbox} % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % \def\pounds{{\it\$}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. % % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. % % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted % % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. % % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. % % \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } % Glyphs from the EC fonts. We don't use \let for the aliases, because % sometimes we redefine the original macro, and the alias should reflect % the redefinition. % % Use LaTeX names for the Icelandic letters. \def\DH{{\ecfont \char"D0}} % Eth \def\dh{{\ecfont \char"F0}} % eth \def\TH{{\ecfont \char"DE}} % Thorn \def\th{{\ecfont \char"FE}} % thorn % \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} \def\guillemotright{\guillemetright} \def\guilsinglleft{{\ecfont \char"0E}} \def\guilsinglright{{\ecfont \char"0F}} \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % % This positioning is not perfect (see the ogonek LaTeX package), but % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer % dummy definitions to worry about for index entries, etc. % % ogonek is also used with other letters in Lithuanian (IOU), but using % the precomposed glyphs for those is not so easy since they aren't in % the same EC font. \def\ogonek#1{{% \def\temp{#1}% \ifx\temp\macrocharA\Aogonek \else\ifx\temp\macrochara\aogonek \else\ifx\temp\macrocharE\Eogonek \else\ifx\temp\macrochare\eogonek \else \ecfont \setbox0=\hbox{#1}% \ifdim\ht0=1ex\accent"0C #1% \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% \fi \fi\fi\fi\fi }% } \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % % Use the ec* fonts (cm-super in outline format) for non-CM glyphs. \def\ecfont{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifmonospace % typewriter: \font\thisecfont = ectt\ecsize \space at \nominalsize \else \ifx\curfontstyle\bfstylename % bold: \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi \fi \thisecfont } % @registeredsymbol - R in a circle. The font for the R should really % be smaller yet, but lllsize is the best we can do for now. % Adapted from the plain.tex definition of \copyright. % \def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% \hfil\crcr\Orb}}% }$% } % @textdegree - the normal degrees sign. % \def\textdegree{$^\circ$} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % \ifx\Orb\thisisundefined \def\Orb{\mathhexbox20D} \fi % Quotes. \chardef\quotedblleft="5C \chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % Do an implicit @contents or @shortcontents after @end titlepage if the % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. % \newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue \parseargdef\shorttitlepage{% \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }% } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % Need this before the \...aftertitlepage checks so that if they are % in effect the toc pages will come out with page numbers. \HEADINGSon % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } % Settings used for typesetting titles: no hyphenation, no indentation, % don't worry much about spacing, ragged right. This should be used % inside a \vbox, and fonts need to be set appropriately first. Because % it is always used for titles, nothing else, we call \rmisbold. \par % should be specified before the end of the \vbox, since a vbox is a group. % \def\raggedtitlesettings{% \rmisbold \hyphenpenalty=10000 \parindent=0pt \tolerance=5000 \ptexraggedright } % Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% \checkenv\titlepage \vbox{\titlefonts \raggedtitlesettings #1\par}% % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt } \parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}% } % @author should come last, but may come many times. % It can also be used inside @quotation. % \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp \def\quotationauthor{#1}% printed in \Equotation. \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi {\secfonts\rmisbold \leftline{#1}}% \fi } % Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \def\evenfooting{\parsearg\evenfootingxxx} \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddfooting{\parsearg\oddfootingxxx} \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \global\advance\pageheight by -12pt \global\advance\vsize by -12pt } \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} % @evenheadingmarks top \thischapter <- chapter at the top of a page % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page % % The same set of arguments for: % % @oddheadingmarks % @evenfootingmarks % @oddfootingmarks % @everyheadingmarks % @everyfootingmarks \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} \def\oddfootingmarks{\headingmarks{odd}{footing}} \def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} \headingmarks{odd}{heading}{#1} } \def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} \headingmarks{odd}{footing}{#1} } % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. \def\headingmarks#1#2#3 {% \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname \global\expandafter\let\csname get#1#2marks\endcsname \temp } \everyheadingmarks bottom \everyfootingmarks bottom % @headings double turns headings on for double-sided printing. % @headings single turns headings on for single-sided printing. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination \evenheadline={\hfil}\evenfootline={\hfil}% \oddheadline={\hfil}\oddfootline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting \HEADINGSoff % it's the default % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). \ifx\today\thisisundefined \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} \fi % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg{\gdef\thistitle}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @ftable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemindicate{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % If the item text does not fit in the space we have, put it on a line % by itself, and do not allow a page break either before or after that % line. We do not start a paragraph here because then if the next % command is, e.g., @kindex, the whatsit would get put into the % horizontal list on a line by itself, resulting in extra blank space. \ifdim \wd0>\itemmax % % Make this a paragraph so we get the \parskip glue and wrapping, % but leave it ragged-right. \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent \advance\rightskip by0pt plus1fil\relax \leavevmode\unhbox0\par \endgroup % % We're going to be starting a paragraph, but we don't want the % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. However, if % what follows is an environment such as @example, there will be no % \parskip glue; then the negative vskip we just inserted would % cause the example and the item to crash together. So we use this % bizarre value of 10001 as a signal to \aboveenvbreak to insert % \parskip glue after all. Section titles are handled this way also. % \penalty 10001 \endgroup \itemxneedsnegativevskipfalse \else % The item text fits into the space. Start a paragraph, so that the % following text (if any) will end up on the same line. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \tablecheck{vtable}% } \def\tablecheck#1{% \ifnum \the\catcode`\^^M=\active \endgroup \errmessage{This command won't work in this context; perhaps the problem is that we are \inenvironment\thisenv}% \def\next{\doignore{#1}}% \else \let\next\tablex \fi \next } \def\tablex#1{% \def\itemindicate{#1}% \parsearg\tabley } \def\tabley#1{% {% \makevalueexpandable \edef\temp{\noexpand\tablez #1\space\space\space}% \expandafter }\temp \endtablez } \def\tablez #1 #2 #3 #4\endtablez{% \aboveenvbreak \ifnum 0#1>0 \advance \leftskip by #1\mil \fi \ifnum 0#2>0 \tableindent=#2\mil \fi \ifnum 0#3>0 \advance \rightskip by #3\mil \fi \itemmax=\tableindent \advance \itemmax by -\itemmargin \advance \leftskip by \tableindent \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi \let\item = \internalBitem \let\itemx = \internalBitemx } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \envdef\itemize{\parsearg\doitemize} \def\doitemize#1{% \aboveenvbreak \itemmax=\itemindent \advance\itemmax by -\itemmargin \advance\leftskip by \itemindent \exdentamount=\itemindent \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi % % Try typesetting the item mark that if the document erroneously says % something like @itemize @samp (intending @table), there's an error % right away at the @itemize. It's not the best error message in the % world, but it's better than leaving it to the @item. This means if % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% \setbox0 = \hbox{\itemcontents}% % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi % \let\item=\itemizeitem } % Definition of @item while inside @itemize and @enumerate. % \def\itemizeitem{% \advance\itemno by 1 % for enumerations {\let\par=\endgraf \smallbreak}% reasonable place to break {% % If the document has an @itemize directly after a section title, a % \nobreak will be last on the list, and \sectionheading will have % done a \vskip-\parskip. In that case, we don't want to zero % parskip, or the item text will crash with the heading. On the % other hand, when there is normal text preceding the item (as there % usually is), we do want to zero parskip, or there would be too much % space. In that case, we won't have a \nobreak before. At least % that's the theory. \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % \vadjust{\penalty 1200}}% not good to break after first line of item. \flushcr } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call \doitemize, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \doitemize{#1.}\flushcr } % @alphaenumerate and @capsenumerate are abbreviations for giving an arg % to @enumerate. % \def\alphaenumerate{\enumerate{a}} \def\capsenumerate{\enumerate{A}} \def\Ealphaenumerate{\Eenumerate} \def\Ecapsenumerate{\Eenumerate} % @multitable macros % Amy Hendrickson, 8/18/94, 3/6/96 % % @multitable ... @end multitable will make as many columns as desired. % Contents of each column will wrap at width given in preamble. Width % can be specified either with sample text given in a template line, % or in percent of \hsize, the current width of text on page. % Table can continue over pages but will only break between lines. % To make preamble: % % Either define widths of columns in terms of percent of \hsize: % @multitable @columnfractions .25 .3 .45 % @item ... % % Numbers following @columnfractions are the percent of the total % current hsize to be used for each column. You may use as many % columns as desired. % Or use a template: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item ... % using the widest term desired in each column. % Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. % @item, @tab do not need to be on their own lines, but it will not hurt % if they are. % Sample multitable: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item first col stuff @tab second col stuff @tab third col % @item % first col stuff % @tab % second col stuff % @tab % third col % @item first col stuff @tab second col stuff % @tab Many paragraphs of text may be used in any column. % % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. % @end multitable % Default dimensions may be reset by user. % @multitableparskip is vertical space between paragraphs in table. % @multitableparindent is paragraph indent in table. % @multitablecolmargin is horizontal space to be left between columns. % @multitablelinespace is space to leave between table items, baseline % to baseline. % 0pt means it depends on current normal line spacing. % \newskip\multitableparskip \newskip\multitableparindent \newdimen\multitablecolspace \newskip\multitablelinespace \multitableparskip=0pt \multitableparindent=6pt \multitablecolspace=12pt \multitablelinespace=0pt % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. % \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % multitable-only commands. % % @headitem starts a heading row, which we typeset in bold. % Assignments have to be global since we are inside the implicit group % of an alignment entry. \everycr resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \checkenv\multitable \crcr \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until % we again encounter the problem the 1sp was intended to solve. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% % @multitable ... @end multitable definitions: % \newtoks\everytab % insert after every tab. % \envdef\multitable{% \vskip\parskip \startsavinginserts % % @item within a multitable starts a normal row. % We use \def instead of \let so that if one of the multitable entries % contains an @itemize, we don't choke on the \item (seen as \crcr aka % \endtemplate) expanding \doitemize. \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 \setmultitablespacing \parskip=\multitableparskip \parindent=\multitableparindent \overfullrule=0pt \global\colcount=0 % \everycr = {% \noalign{% \global\everytab={}% \global\colcount=0 % Reset the column counter. % Check for saved footnotes, etc. \checkinserts % Keeps underfull box messages off when table breaks over pages. %\filbreak % Maybe so, but it also creates really weird page breaks when the % table breaks over pages. Wouldn't \vfil be better? Wait until the % problem manifests itself, so it can be fixed for real --karl. }% }% % \parsearg\domultitable } \def\domultitable#1{% % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 \multistrut \vtop{% % Use the current \colcount to find the correct column width: \hsize=\expandafter\csname col\the\colcount\endcsname % % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. % % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % % If the user has set preamble in terms of percent of \hsize we will % use that dimension as the width of the column, and the \leftskip % will keep entries from bumping into each other. Table will start at % left margin and final column will justify at right margin. % % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 % The first column will be indented with the surrounding text. \advance\hsize by\leftskip \else \ifsetpercent \else % If user has not set preamble in terms of percent of \hsize % we will advance \hsize by \multitablecolspace. \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi % Ignoring space at the beginning and end avoids an occasional spurious % blank line, when TeX decides to break the line at the space before the % box from the multistrut, so the strut ends up on a line by itself. % For example: % @multitable @columnfractions .11 .89 % @item @code{#} % @tab Legal holiday which is valid in major parts of the whole country. % Is automatically provided with highlighting sequences respectively % marking characters. \noindent\ignorespaces##\unskip\multistrut }\cr } \def\Emultitable{% \crcr \egroup % end the \halign \global\setpercentfalse } \def\setmultitablespacing{% \def\multistrut{\strut}% just use the standard line spacing % % Compute \multitablelinespace (if not defined by user) for use in % \multitableparskip calculation. We used define \multistrut based on % this, but (ironically) that caused the spacing to be off. % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. \ifdim\multitablelinespace=0pt \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 \fi % Test to see if parskip is larger than space between lines of % table. If not, do nothing. % If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi} \message{conditionals,} % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't % attempt to close an environment group. % \def\makecond#1{% \expandafter\let\csname #1\endcsname = \relax \expandafter\let\csname iscond.#1\endcsname = 1 } \makecond{iftex} \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} \makecond{ifnotplaintext} \makecond{ifnotxml} % Ignore @ignore, @ifhtml, @ifinfo, and the like. % \def\direntry{\doignore{direntry}} \def\documentdescription{\doignore{documentdescription}} \def\docbook{\doignore{docbook}} \def\html{\doignore{html}} \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} % Ignore text until a line `@end #1', keeping track of nested conditionals. % % A count to remember the depth of nesting. \newcount\doignorecount \def\doignore#1{\begingroup % Scan in ``verbatim'' mode: \obeylines \catcode`\@ = \other \catcode`\{ = \other \catcode`\} = \other % % Make sure that spaces turn into tokens that match what \doignoretext wants. \spaceisspace % % Count number of #1's that we've seen. \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% % #1 contains the command name as a string, e.g., `ifinfo'. % % Define a command to find the next `@end #1'. \long\def\doignoretext##1^^M@end #1{% \doignoretextyyy##1^^M@#1\_STOP_}% % % And this command to find another #1 command, at the beginning of a % line. (Otherwise, we would consider a line `@c @ifset', for % example, to count as an @ifset for nesting.) \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% % % And now expand that command. \doignoretext ^^M% }% } \def\doignoreyyy#1{% \def\temp{#1}% \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz \else % Found a nested condition, ... \advance\doignorecount by 1 \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". % \def\doignoretextzzz#1{% \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi \next } % Finish off ignored text. { \obeylines% % Ignore anything after the last `@end #1'; this matters in verbatim % environments, where otherwise the newline after an ignored conditional % would result in a blank line in the output. \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% } % @set VAR sets the variable VAR to an empty value. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. % We rely on the fact that \parsearg sets \catcode`\ =10. % \parseargdef\set{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% {% \makevalueexpandable \def\temp{#2}% \edef\next{\gdef\makecsname{SET#1}}% \ifx\temp\empty \next{}% \else \setzzz#2\endsetzzz \fi }% } % Remove the trailing space \setxxx inserted. \def\setzzz#1 \endsetzzz{\next{#1}} % @clear VAR clears (i.e., unsets) the variable VAR. % \parseargdef\clear{% {% \makevalueexpandable \global\expandafter\let\csname SET#1\endcsname=\relax }% } % @value{foo} gets the text saved in variable foo. \def\value{\begingroup\makevalueexpandable\valuexxx} \def\valuexxx#1{\expandablevalue{#1}\endgroup} { \catcode`\- = \active \catcode`\_ = \active % \gdef\makevalueexpandable{% \let\value = \expandablevalue % We don't want these characters active, ... \catcode`\-=\other \catcode`\_=\other % ..., but we might end up with active ones in the argument if % we're called from @code, as @code{@value{foo-bar_}}, though. % So \let them to their normal equivalents. \let-\normaldash \let_\normalunderscore } } % We have this subroutine so that we can handle at least some @value's % properly in indexes (we call \makevalueexpandable in \indexdummies). % The command has to be fully expandable (if the variable is set), since % the result winds up in the index file. This means that if the % variable's value contains other Texinfo commands, it's almost certain % it will fail (although perhaps we could fix that with sufficient work % to do a one-level expansion on the result, instead of complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % % To get special treatment of `@end ifset,' call \makeond and the redefine. % \makecond{ifset} \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} \def\doifset#1#2{% {% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname SET#2\endcsname\relax #1% If not set, redefine \next. \fi \expandafter }\next } \def\ifsetfail{\doignore{ifset}} % @ifclear VAR ... @end executes the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the % above code: if the variable is not set, do nothing, if it is set, % then redefine \next to \ifclearfail. % \makecond{ifclear} \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} % @ifcommandisdefined CMD ... @end executes the `...' if CMD (written % without the @) is in fact defined. We can only feasibly check at the % TeX level, so something like `mathcode' is going to considered % defined even though it is not a Texinfo command. % \makecond{ifcommanddefined} \def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} % \def\doifcmddefined#1#2{{% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname #2\endcsname\relax #1% If not defined, \let\next as above. \fi \expandafter }\next } \def\ifcmddefinedfail{\doignore{ifcommanddefined}} % @ifcommandnotdefined CMD ... handled similar to @ifclear above. \makecond{ifcommandnotdefined} \def\ifcommandnotdefined{% \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} \def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} % Set the `txicommandconditionals' variable, so documents have a way to % test if the @ifcommand...defined conditionals are available. \set txicommandconditionals % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} % \newindex {foo} defines an index named foo. % It automatically defines \fooindex such that % \fooindex ...rest of line... puts an entry in the index foo. % It also defines \fooindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is foo. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 % Open the file \fi \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} % \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. % \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 \fi \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), % #3 the target index (bar). \def\dosynindex#1#2#3{% % Only do \closeout if we haven't already done it, else we'll end up % closing the target index. \expandafter \ifx\csname donesynindex#2\endcsname \relax % The \closeout helps reduce unnecessary open files; the limit on the % Acorn RISC OS is a mere 16 files. \expandafter\closeout\csname#2indfile\endcsname \expandafter\let\csname donesynindex#2\endcsname = 1 \fi % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname \expandafter\let\csname#2indfile\endcsname=\temp % redefine \fooindex: \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } % Define \doindex, the driver for all \fooindex macros. % Argument #1 is generated by the calling \fooindex macro, % and it is "foo", the name of the index. % \doindex just uses \parsearg; it calls \doind for the actual work. % This is because \doind is more useful to call from other macros. % There is also \dosubind {index}{topic}{subtopic} % which makes an entry in a two-level index such as the operation index. \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} \def\singleindexer #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} % Take care of Texinfo commands that can appear in an index entry. % Since there are some commands we want to expand, and others we don't, % we have to laboriously prevent expansion for those that we don't. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % % Need these unexpandable (because we define \tt as a dummy) % definitions when @{ or @} appear in index entry text. Also, more % complicated, when \tex is in effect and \{ is a \delimiter again. % We can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. Perhaps we % should define @lbrace and @rbrace commands a la @comma. \def\{{{\tt\char123}}% \def\}{{\tt\char125}}% % % I don't entirely understand this, but when an index entry is % generated from a macro call, the \endinput which \scanmacro inserts % causes processing to be prematurely terminated. This is, % apparently, because \indexsorttmp is fully expanded, and \endinput % is an expandable command. The redefinition below makes \endinput % disappear altogether for that purpose -- although logging shows that % processing continues to some further point. On the other hand, it % seems \endinput does not hurt in the printed index arg, since that % is still getting written without apparent harm. % % Sample source (mac-idx3.tex, reported by Graham Percival to % help-texinfo, 22may06): % @macro funindex {WORD} % @findex xyz % @end macro % ... % @funindex commtest % % The above is not enough to reproduce the bug, but it gives the flavor. % % Sample whatsit resulting: % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} % % So: \let\endinput = \empty % % Do the redefinitions. \commondummies } % For the aux and toc files, @ is the escape character. So we want to % redefine everything using @ as the escape character (instead of % \realbackslash, still used for index files). When everything uses @, % this will be simpler. % \def\atdummies{% \def\@{@@}% \def\ {@ }% \let\{ = \lbraceatcmd \let\} = \rbraceatcmd % % Do the redefinitions. \commondummies \otherbackslash } % Called from \indexdummies and \atdummies. % \def\commondummies{% % % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. % % For control letters, we have \definedummyletter, which omits the % space. % % These can be used both for control words that take an argument and % those that do not. If it is followed by {arg} in the input, then % that will dutifully get written to the index (or wherever). % \def\definedummyword ##1{\def##1{\string##1\space}}% \def\definedummyletter##1{\def##1{\string##1}}% \let\definedummyaccent\definedummyletter % \commondummiesnofonts % \definedummyletter\_% \definedummyletter\-% % % Non-English letters. \definedummyword\AA \definedummyword\AE \definedummyword\DH \definedummyword\L \definedummyword\O \definedummyword\OE \definedummyword\TH \definedummyword\aa \definedummyword\ae \definedummyword\dh \definedummyword\exclamdown \definedummyword\l \definedummyword\o \definedummyword\oe \definedummyword\ordf \definedummyword\ordm \definedummyword\questiondown \definedummyword\ss \definedummyword\th % % Although these internal commands shouldn't show up, sometimes they do. \definedummyword\bf \definedummyword\gtr \definedummyword\hat \definedummyword\less \definedummyword\sf \definedummyword\sl \definedummyword\tclose \definedummyword\tt % \definedummyword\LaTeX \definedummyword\TeX % % Assorted special characters. \definedummyword\arrow \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots \definedummyword\entrybreak \definedummyword\equiv \definedummyword\error \definedummyword\euro \definedummyword\expansion \definedummyword\geq \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright \definedummyword\lbracechar \definedummyword\leq \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds \definedummyword\point \definedummyword\print \definedummyword\quotedblbase \definedummyword\quotedblleft \definedummyword\quotedblright \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase \definedummyword\rbracechar \definedummyword\result \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. \macrolist % \normalturnoffactive % % Handle some cases of @value -- where it does not contain any % (non-fully-expandable) commands. \makevalueexpandable } % \commondummiesnofonts: common to \commondummies and \indexnofonts. % \def\commondummiesnofonts{% % Control letters and accents. \definedummyletter\!% \definedummyaccent\"% \definedummyaccent\'% \definedummyletter\*% \definedummyaccent\,% \definedummyletter\.% \definedummyletter\/% \definedummyletter\:% \definedummyaccent\=% \definedummyletter\?% \definedummyaccent\^% \definedummyaccent\`% \definedummyaccent\~% \definedummyword\u \definedummyword\v \definedummyword\H \definedummyword\dotaccent \definedummyword\ogonek \definedummyword\ringaccent \definedummyword\tieaccent \definedummyword\ubaraccent \definedummyword\udotaccent \definedummyword\dotless % % Texinfo font commands. \definedummyword\b \definedummyword\i \definedummyword\r \definedummyword\sansserif \definedummyword\sc \definedummyword\slanted \definedummyword\t % % Commands that take arguments. \definedummyword\abbr \definedummyword\acronym \definedummyword\anchor \definedummyword\cite \definedummyword\code \definedummyword\command \definedummyword\dfn \definedummyword\dmn \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file \definedummyword\image \definedummyword\indicateurl \definedummyword\inforef \definedummyword\kbd \definedummyword\key \definedummyword\math \definedummyword\option \definedummyword\pxref \definedummyword\ref \definedummyword\samp \definedummyword\strong \definedummyword\tie \definedummyword\uref \definedummyword\url \definedummyword\var \definedummyword\verb \definedummyword\w \definedummyword\xref } % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string % would be for a given command (usually its argument). % \def\indexnofonts{% % Accent commands should become @asis. \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent % \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command % and is used in the definitions of the active chars like <, >, |, etc. % Likewise with the other plain tex font commands. %\let\tt=\asis % \def\ { }% \def\@{@}% \def\_{\normalunderscore}% \def\-{}% @- shouldn't affect sorting % % Unfortunately, texindex is not prepared to handle braces in the % content at all. So for index sorting, we map @{ and @} to strings % starting with |, since that ASCII character is between ASCII { and }. \def\{{|a}% \def\lbracechar{|a}% % \def\}{|b}% \def\rbracechar{|b}% % % Non-English letters. \def\AA{AA}% \def\AE{AE}% \def\DH{DZZ}% \def\L{L}% \def\OE{OE}% \def\O{O}% \def\TH{ZZZ}% \def\aa{aa}% \def\ae{ae}% \def\dh{dzz}% \def\exclamdown{!}% \def\l{l}% \def\oe{oe}% \def\ordf{a}% \def\ordm{o}% \def\o{o}% \def\questiondown{?}% \def\ss{ss}% \def\th{zzz}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) \def\arrow{->}% \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% \def\expansion{==>}% \def\geq{>=}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% \def\leq{<=}% \def\minus{-}% \def\point{.}% \def\pounds{pounds}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% \def\quotedblright{"}% \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% \def\registeredsymbol{R}% \def\result{=>}% \def\textdegree{o}% % \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax \else \indexlquoteignore \fi % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up % writing an index entry, and texindex isn't prepared for an index sort entry % that starts with \. % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that % goes to end-of-line is not handled. % \macrolist } % Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us % ignore left quotes in the sort term. {\catcode`\`=\active \gdef\indexlquoteignore{\let`=\empty}} \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} % Workhorse for all \fooindexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % empty if called from \doind, as we usually are (the main exception % is with most defuns, which call us directly). % \def\dosubind#1#2#3{% \iflinks {% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. \def\thirdarg{#3}% \ifx\thirdarg\empty \else \toks0 = \expandafter{\the\toks0 \space #3}% \fi % \edef\writeto{\csname#1indfile\endcsname}% % \safewhatsit\dosubindwrite }% \fi } % Write the entry in \toks0 to the index file: % \def\dosubindwrite{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% \fi % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % % Process the index entry with all font commands turned off, to % get the string to sort by. {\indexnofonts \edef\temp{\the\toks0}% need full expansion \xdef\indexsorttmp{\temp}% }% % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write % three arguments to \entry to the .?? file (four in the % subentry case), texindex reduces to two when writing the .??s % sorted result. \edef\temp{% \write\writeto{% \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% }% \temp } % Take care of unwanted page breaks/skips around a whatsit: % % If a skip is the last thing on the list now, preserve it % by backing up by \lastskip, doing the \write, then inserting % the skip again. Otherwise, the whatsit generated by the % \write or \pdfdest will make \lastskip zero. The result is that % sequences like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % % But wait, there is a catch there: % We'll have to check whether \lastskip is zero skip. \ifdim is not % sufficient for this purpose, as it ignores stretch and shrink parts % of the skip. The only way seems to be to check the textual % representation of the skip. % % The following is almost like \def\zeroskipmacro{0.0pt} except that % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). % \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} % \newskip\whatsitskip \newcount\whatsitpenalty % % ..., ready, GO: % \def\safewhatsit#1{\ifhmode #1% \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% \whatsitpenalty = \lastpenalty % % If \lastskip is nonzero, that means the last item was a % skip. And since a skip is discardable, that means this % -\whatsitskip glue we're inserting is preceded by a % non-discardable item, therefore it is not a potential % breakpoint, therefore no \nobreak needed. \ifx\lastskipmacro\zeroskipmacro \else \vskip-\whatsitskip \fi % #1% % \ifx\lastskipmacro\zeroskipmacro % If \lastskip was zero, perhaps the last item was a penalty, and % perhaps it was >=10000, e.g., a \nobreak. In that case, we want % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: % @deffn deffn-whatever % @vindex index-whatever % Description. % would allow a break between the index-whatever whatsit % and the "Description." paragraph. \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi \else % On the other hand, if we had a nonzero \lastskip, % this make-up glue would be preceded by a non-discardable item % (the whatsit from the \write), so we must insert a \nobreak. \nobreak\vskip\whatsitskip \fi \fi} % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} \def\cindexsub {\begingroup\obeylines\cindexsub} {\obeylines % \gdef\cindexsub "#1" #2^^M{\endgroup % \dosubind{cp}{#2}{#1}}} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \parseargdef\printindex{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % % See if the index file exists and is nonempty. % Change catcode of @ here so that if the index file contains % \initial {@} % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 \openin 1 \jobname.#1s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \else % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \temp \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. \def\indexbackslash{\backslashcurfont}% \catcode`\\ = 0 \escapechar = `\\ \begindoublecolumns \input \jobname.#1s \enddoublecolumns \fi \fi \closein 1 \endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. \def\initial#1{{% % Some minor font changes for the special characters. \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt % % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. \nobreak \vskip 0pt plus 3\baselineskip \penalty 0 \vskip 0pt plus -3\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus .5\baselineskip \leftline{\secbf #1}% % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip }} % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % % A straightforward implementation would start like this: % \def\entry#1#2{... % But this freezes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. % The right solution is to prevent \entry from swallowing the whole text. % --kasal, 21nov03 \def\entry{% \begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % Do not fill out the last line with white space. \parfillskip = 0in % % No extra space above this paragraph. \parskip = 0in % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % \hangindent is only relevant when the entry text and page number % don't both fit on one line. In that case, bob suggests starting the % dots pretty far over on the line. Unfortunately, a large % indentation looks wrong when the entry text itself is broken across % lines. So we use a small indentation and put up with long leaders. % % \hangafter is reset to 1 (which is the value we want) at the start % of each paragraph, so we need not do anything with that. \hangindent = 2em % % When the entry text needs to be broken, just fill out the first line % with blank space. \rightskip = 0pt plus1fil % % A bit of stretch before each entry for the benefit of balancing % columns. \vskip 0pt plus1pt % % When reading the text of entry, convert explicit line breaks % from @* into spaces. The user might give these in long section % titles, for instance. \def\*{\unskip\space\ignorespaces}% \def\entrybreak{\hfil\break}% % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. } \def\finishentry#1{% % #1 is the page number. % % The following is kludged to not output a line of dots in the index if % there are no page numbers. The next person who breaks this will be % cursed by a Unix daemon. \setbox\boxA = \hbox{#1}% \ifdim\wd\boxA = 0pt \ % \else % % If we must, put the page number on a line of its own, and fill out % this line with blank space. (The \hfil is overwhelmed with the % fill leaders glue in \indexdotfill if the page number does fit.) \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. \ifpdf \pdfgettoks#1.% \ \the\toksA \else \ #1% \fi \fi \par \endgroup } % Like plain.tex's \dotfill, except uses up at least 1 em. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} \def\primary #1{\line{#1\hfil}} \newskip\secondaryindent \secondaryindent=0.5cm \def\secondary#1#2{{% \parfillskip=0in \parskip=0in \hangindent=1in \hangafter=1 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill \ifpdf \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. \else #2 \fi \par }} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 \newbox\partialpage \newdimen\doublecolumnhsize \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% % % Here is a possibility not foreseen in manmac: if we accumulate a % whole lot of material, we might end up calling this \output % routine twice in a row (see the doublecol-lose test, which is % essentially a couple of indexes with @setchapternewpage off). In % that case we just ship out what is in \partialpage with the normal % output routine. Generally, \partialpage will be empty when this % runs and this will be a no-op. See the indexspread.tex test case. \ifvoid\partialpage \else \onepageout{\pagecontents\partialpage}% \fi % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% }% \eject % run that output routine to set \partialpage % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \vsize = 2\vsize } % The double-column output routine for all double-column pages except % the last. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \dimen@ = \vsize \divide\dimen@ by 2 \advance\dimen@ by -\ht\partialpage % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty } % % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \def\pagesofar{% \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } % % All done with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the % following situation: % % The last section of the index consists only of a single entry. % Before this section, \pagetotal is less than \pagegoal, so no % break occurs before the last section starts. However, the last % section, consisting of \initial and the single \entry, does not % fit on the page and has to be broken off. Without the following % penalty the page builder will not be exercised until \eject % below, and by that time we'll already have changed the output % routine to the \balancecolumns version, so the next-to-last % double-column page will be processed with \balancecolumns, which % is wrong: The two columns will go to the main vertical list, with % the broken-off section in the recent contributions. As soon as % the output routine finishes, TeX starts reconsidering the page % break. The two columns and the broken-off section both fit on the % page, because the two columns now take up only half of the page % goal. When TeX sees \eject from below which follows the final % section, it invokes the new output routine that we've set after % \balancecolumns below; \onepageout will try to fit the two columns % and the final section into the vbox of \pageheight (see % \pagebody), causing an overfull box. % % Note that glue won't work here, because glue does not exercise the % page builder, unlike penalties (see The TeXbook, pp. 280-281). \penalty0 % \output = {% % Split the last of the double-column material. Leave it on the % current page, no automatic page break. \balancecolumns % % If we end up splitting too much material for the current page, % though, there will be another page break right after this \output % invocation ends. Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. (We hope \balancecolumns will never be % called on to balance too much material, but if it is, this makes % the output somewhat more palatable.) \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize (after the % \endgroup where \vsize got restored). \pagegoal = \vsize } % % Called at the end of the double column material. \def\balancecolumns{% \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 % target to split to %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% \splittopskip = \topskip % Loop until we get a decent breakpoint. {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ \ifdim\ht3>\dimen@ \global\advance\dimen@ by 1pt \repeat }% %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% % \pagesofar } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. % Let's start with @part. \outer\parseargdef\part{\partzzz{#1}} \def\partzzz#1{% \chapoddpage \null \vskip.3\vsize % move it down on the page a bit \begingroup \noindent \titlefonts\rmisbold #1\par % the text \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page \chapoddpage \endgroup } % \unnumberedno is an oxymoron. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 % chapters, we're in trouble anyway, I'm sure.) \newcount\unnumberedno \unnumberedno = 10000 \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % % \def\appendixletter{\char\the\appendixno} % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. % \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} % Each @chapter defines these (using marks) as the number+name, number % and name of the chapter. Page headings and footings can use % these. @section does likewise. \def\thischapter{} \def\thischapternum{} \def\thischaptername{} \def\thissection{} \def\thissectionnum{} \def\thissectionname{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} \let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} \let\down=\lowersections % original BFox name % we only have subsub. \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. % To achieve this, remember the "biggest" unnum. sec. we are currently in: \chardef\unnlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. \def\chapheadtype{N} % Choose a heading macro % #1 is heading type % #2 is heading level % #3 is text for heading \def\genhead#1#2#3{% % Compute the abs. sec. level: \absseclevel=#2 \advance\absseclevel by \secbase % Make sure \absseclevel doesn't fall outside the range: \ifnum \absseclevel < 0 \absseclevel = 0 \else \ifnum \absseclevel > 3 \absseclevel = 3 \fi \fi % The heading type: \def\headtype{#1}% \if \headtype U% \ifnum \absseclevel < \unnlevel \chardef\unnlevel = \absseclevel \fi \else % Check for appendix sections: \ifnum \absseclevel = 0 \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: \ifnum \absseclevel > \unnlevel \def\headtype{U}% \else \chardef\unnlevel = 3 \fi \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% \fi \else \if \headtype A% \ifcase\absseclevel \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% \fi \fi \fi \suppressfirstparagraphindent } % an interface: \def\numhead{\genhead N} \def\apphead{\genhead A} \def\unnmhead{\genhead U} % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. % % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty % \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such % as an @include file. \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\chapno by 1 % % Used for \float. \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % % \putwordChapter can contain complex things in translations. \toks0=\expandafter{\putwordChapter}% \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% % % So @section and the like are numbered underneath this chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz % \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % % \putwordAppendix can contain complex things in translations. \toks0=\expandafter{\putwordAppendix}% \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } % normally unnmhead0 calls unnumberedzzz: \outer\parseargdef\unnumbered{\unnmhead0{#1}} \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 % % Since an unnumbered has no number, no prefix for figures. \global\let\chaplevelprefix = \empty \resetallfloatnos % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}% \message{(\the\toks0)}% % \chapmacro{#1}{Ynothing}{\the\unnumberedno}% % \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% % Well, we could do the following in a group, but that would break % an assumption that \chapmacro is called at the outermost level. % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax } % @top is like @unnumbered. \let\top\unnumbered % Sections. % \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } % normally calls appendixsectionzzz: \outer\parseargdef\appendixsection{\apphead1{#1}} \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection % normally calls unnumberedseczzz: \outer\parseargdef\unnumberedsec{\unnmhead1{#1}} \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. % % normally calls numberedsubseczzz: \outer\parseargdef\numberedsubsec{\numhead2{#1}} \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } % normally calls appendixsubseczzz: \outer\parseargdef\appendixsubsec{\apphead2{#1}} \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } % normally calls unnumberedsubseczzz: \outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno}% } % Subsubsections. % % normally numberedsubsubseczzz: \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally appendixsubsubseczzz: \outer\parseargdef\appendixsubsubsec{\apphead3{#1}} \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally unnumberedsubsubseczzz: \outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% } % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \let\section = \numberedsec \let\subsection = \numberedsubsec \let\subsubsection = \numberedsubsubsec % Define @majorheading, @heading and @subheading \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz } \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip \nobreak \suppressfirstparagraphindent } % @heading, @subheading, @subsubheading. \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. % Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} % Parameter controlling skip before chapter headings (if needed) \newskip\chapheadingskip % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. \def\chapoddpage{% \chappager \ifodd\pageno \else \begingroup \headingsoff \null \chappager \endgroup \fi } \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon % Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. % % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yomitfromtockeyword{Yomitfromtoc} \def\Yappendixkeyword{Yappendix} % \def\chapmacro#1#2#3{% % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% \gdef\thissection{}}% % \def\temptype{#2}% \ifx\temptype\Ynothingkeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{\thischaptername}}% \else\ifx\temptype\Yomitfromtockeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{}}% \else\ifx\temptype\Yappendixkeyword \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% % \noexpand\putwordAppendix avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \else \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% % \noexpand\putwordChapter avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordChapter{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \fi\fi\fi % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert the chapter heading break. \pchapsepmacro % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \domark % {% \chapfonts \rmisbold % % Have to define \lastsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called % after \pchapsepmacro, or the headline will change too soon. \gdef\lastsection{#1}% % % Only insert the separating space if we have a chapter/appendix % number, and don't print the unnumbered ``number''. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unnchap}% \else\ifx\temptype\Yomitfromtockeyword \setbox0 = \hbox{}% contents like unnumbered, but no toc entry \def\toctype{omit}% \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% \def\toctype{app}% \else \setbox0 = \hbox{#3\enspace}% \def\toctype{numchap}% \fi\fi\fi % % Write the toc entry for this chapter. Must come before the % \donoderef, because we include the current node name in the toc % entry, and \donoderef resets it to empty. \writetocentry{\toctype}{#1}{#3}% % % For pdftex, we have to write out the node definition (aka, make % the pdfdest) after any page break, but before the actual text has % been typeset. If the destination for the pdf outline is after the % text, then jumping from the outline may wind up with the text not % being visible, for instance under high magnification. \donoderef{#2}% % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerparameters{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt } % I don't think this chapter style is supported any more, so I'm not % updating it with the new noderef stuff. We'll see. --karl, 11aug03. % \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% \par\penalty 5000 % } \def\centerchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% \nobreak\bigskip \nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen \global\let\centerchapmacro=\centerchfopen} % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. % \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} % Subsection titles. \newskip\subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} % Subsubsection titles. \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} % Print any size, any type, section title. % % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the % section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% \checkenv{}% should not be in an environment. % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % \def\sectionlevel{#2}% \def\temptype{#3}% % % Insert first mark before the heading break (see notes for \domark). \let\prevsectiondefs=\lastsectiondefs \ifx\temptype\Ynothingkeyword \ifx\sectionlevel\seckeyword \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% \gdef\thissection{\thissectionname}}% \fi \else\ifx\temptype\Yomitfromtockeyword % Don't redefine \thissection. \else\ifx\temptype\Yappendixkeyword \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \else \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \fi\fi\fi % % Go into vertical mode. Usually we'll already be there, but we % don't want the following whatsit to end up in a preceding paragraph % if the document didn't happen to have a blank line. \par % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert space above the heading. \csname #2headingbreak\endcsname % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevsectiondefs=\lastsectiondefs \domark % % Only insert the space after the number if we have a section number. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unn}% \gdef\lastsection{#1}% \else\ifx\temptype\Yomitfromtockeyword % for @headings -- no section number, don't include in toc, % and don't redefine \lastsection. \setbox0 = \hbox{}% \def\toctype{omit}% \let\sectionlevel=\empty \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{#4\enspace}% \def\toctype{app}% \gdef\lastsection{#1}% \else \setbox0 = \hbox{#4\enspace}% \def\toctype{num}% \gdef\lastsection{#1}% \fi\fi\fi % % Write the toc entry (before \donoderef). See comments in \chapmacro. \writetocentry{\toctype\sectionlevel}{#1}{#4}% % % Write the node reference (= pdf destination for pdftex). % Again, see comments in \chapmacro. \donoderef{#3}% % % Interline glue will be inserted when the vbox is completed. % That glue will be a valid breakpoint for the page, since it'll be % preceded by a whatsit (usually from the \donoderef, or from the % \writetocentry if there was no node). We don't want to allow that % break, since then the whatsits could end up on page n while the % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. \nobreak % % Output the actual section heading. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% % Add extra space after the heading -- half of whatever came above it. % Don't allow stretch, though. \kern .5 \csname #2headingskip\endcsname % % Do not let the kern be a potential breakpoint, as it would be if it % was followed by glue. \nobreak % % We'll almost certainly start a paragraph next, so don't let that % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) However, when a paragraph is not started next % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out % or the negative glue will cause weirdly wrong output, typically % obscuring the section heading with something else. \vskip-\parskip % % This is so the last item on the main vertical list is a known % \penalty > 10000, so \startdefun, etc., can recognize the situation % and do the needful. \penalty 10001 } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. % % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. % % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the % table of contents chapter openings themselves. % \newif\iftocfileopened \def\omitkeyword{omit}% % \def\writetocentry#1#2#3{% \edef\writetoctype{#1}% \ifx\writetoctype\omitkeyword \else \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi % \iflinks {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp }% \fi \fi % % Tell \shipout to create a pdf destination on each page, if we're % writing pdf. These are used in the table of contents. We can't % just write one on every page because the title pages are numbered % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. \ifpdf \global\pdfmakepagedesttrue \fi } % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. % \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active \catcode`\<=\active \catcode`\>=\active \catcode`\\=\active \catcode`\^=\active \catcode`\_=\active \catcode`\|=\active \catcode`\~=\active } % Read the toc file, which is essentially Texinfo input. \def\readtocfile{% \setupdatafile \activecatcodes \input \tocreadfilename } \newskip\contentsrightmargin \contentsrightmargin=1in \newcount\savepageno \newcount\lastnegativepageno \lastnegativepageno = -1 % Prepare to read what we've written to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. Thus, we maintain % \contentsalignmacro in parallel with \pagealignmacro. % From: Torbjorn Granlund \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \chapmacro{#1}{Yomitfromtoc}{}% % \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. \advance\hsize by -\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi } % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % \def\tocreadfilename{\jobname.toc} % Normal (long) toc. % \def\contents{% \startcontents{\putwordTOC}% \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \ifeof 1 \else \pdfmakeoutlines \fi \closein 1 \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\partentry = \shortpartentry \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\numsecentry##1##2##3##4{} \let\appsecentry = \numsecentry \let\unnsecentry = \numsecentry \let\numsubsecentry = \numsecentry \let\appsubsecentry = \numsecentry \let\unnsubsecentry = \numsecentry \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \closein 1 \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } \let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. % \def\shortchaplabel#1{% % This space should be enough, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 % chapters. Have to read the whole toc once to know how many chapters % there are before deciding ... \hbox to 1em{#1\hss}% } % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Parts, in the main contents. Replace the part number, which doesn't % exist, with an empty box. Let's hope all the numbers have the same width. % Also ignore the page number, which is conventionally not printed. \def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} \def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} % % Parts, in the short toc. \def\shortpartentry#1#2#3#4{% \penalty-300 \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip \shortchapentry{{\bf #1}}{\numeralbox}{}{}% } % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% } % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. % \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} \let\appsubsubsecentry=\numsubsubsecentry \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} % This parameter controls the indentation of the various levels. % Same as \defaultparindent. \newdimen\tocindent \tocindent = 15pt % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % We use the same \entry macro as for the index entries. \let\tocentry = \entry % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\dopageno#1{{\rm #1}} \def\doshortpageno#1{{\rm #1}} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} \def\subsubsecentryfonts{\textfonts} \message{environments,} % @foo ... @end foo. % @tex ... @end tex escapes into raw TeX temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain @ character. \envdef\tex{% \setupmarkupstyle{tex}% \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie \catcode `\%=14 \catcode `\+=\other \catcode `\"=\other \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other \catcode`\`=\other \catcode`\'=\other \escapechar=`\\ % % ' is active in math mode (mathcode"8000). So reset it, and all our % other math active characters (just in case), to plain's definitions. \mathactive % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\indent=\ptexindent \let\noindent=\ptexnoindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \let\/=\ptexslash \let\*=\ptexstar \let\t=\ptext \expandafter \let\csname top\endcsname=\ptextop % outer \let\frenchspacing=\plainfrenchspacing % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% } % There is no need to define \Etex. % Define @lisp ... @end lisp. % @lisp environment forms a group so it can rebind things, % including the definition of @end lisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi \vskip\envskipamount \fi \fi }} \let\afterenvbreak = \aboveenvbreak % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip \envdef\cartouche{% \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing = t% % % If this cartouche directly follows a sectioning command, we need the % \parskip glue (backspaced over by default) or the cartouche can % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \kern3pt \hsize=\cartinner \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip \comment % For explanation, see the end of def\group. } \def\Ecartouche{% \ifhmode\par\fi \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \checkinserts } % This macro is called at the beginning of all the @example variants, % inside a group. \newdimen\nonfillparindent \def\nonfillstart{% \aboveenvbreak \hfuzz = 12pt % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt % Turn off paragraph indentation but redefine \indent to emulate % the normal \indent. \nonfillparindent=\parindent \parindent = 0pt \let\indent\nonfillindent % \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \else \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } \begingroup \obeyspaces % We want to swallow spaces (but not other tokens) after the fake % @indent in our nonfill-environments, where spaces are normally % active and set to @tie, resulting in them not being ignored after % @indent. \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% \gdef\nonfillindentcheck{% \ifx\temp % \expandafter\nonfillindentgobble% \else% \leavevmode\nonfillindentbox% \fi% }% \endgroup \def\nonfillindentgobble#1{\nonfillindent} \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: % @example, @display, @format, @lisp % \def\smallword{small} \def\nosmallword{nosmall} \let\SETdispenvsize\relax \def\setnormaldispenv{% \ifx\SETdispenvsize\smallword % end paragraph for sake of leading, in case document has no blank % line. This is redundant with what happens in \aboveenvbreak, but % we need to do it before changing the fonts, and it's inconvenient % to change the fonts afterward. \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } \def\setsmalldispenv{% \ifx\SETdispenvsize\nosmallword \else \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } % We often define two environments, @foo and @smallfoo. % Let's do it in one command. #1 is the env name, #2 the definition. \def\makedispenvdef#1#2{% \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } % Define two environment synonyms (#1 and #2) for an environment. \def\maketwodispenvdef#1#2#3{% \makedispenvdef{#1}{#3}% \makedispenvdef{#2}{#3}% } % % @lisp: indented, narrowed, typewriter font; % @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % \maketwodispenvdef{lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % \makedispenvdef{display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % \makedispenvdef{format}{% \let\nonarrowing = t% \nonfillstart \gobble } % @flushleft: same as @format, but doesn't obey \SETdispenvsize. \envdef\flushleft{% \let\nonarrowing = t% \nonfillstart \gobble } \let\Eflushleft = \afterenvbreak % @flushright. % \envdef\flushright{% \let\nonarrowing = t% \nonfillstart \advance\leftskip by 0pt plus 1fill\relax \gobble } \let\Eflushright = \afterenvbreak % @raggedright does more-or-less normal line breaking but no right % justification. From plain.tex. \envdef\raggedright{% \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax } \let\Eraggedright\par \envdef\raggedleft{% \parindent=0pt \leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedleft\par \envdef\raggedcenter{% \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedcenter\par % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % \makedispenvdef{quotation}{\quotationstart} % \def\quotationstart{% \indentedblockstart % same as \indentedblock, but increase right margin too. \ifx\nonarrowing\relax \advance\rightskip by \lispnarrowing \fi \parsearg\quotationlabel } % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } \def\Esmallquotation{\Equotation} % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% \def\temp{#1}% \ifx\temp\empty \else {\bf #1: }% \fi } % @indentedblock is like @quotation, but indents only on the left and % has no optional argument. % \makedispenvdef{indentedblock}{\indentedblockstart} % \def\indentedblockstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt % % @cartouche defines \nonarrowing to inhibit narrowing at next level down. \ifx\nonarrowing\relax \advance\leftskip by \lispnarrowing \exdentamount = \lispnarrowing \else \let\nonarrowing = \relax \fi } % Keep a nonzero parskip for the environment, since we're doing normal filling. % \def\Eindentedblock{% \par {\parskip=0pt \afterenvbreak}% } \def\Esmallindentedblock{\Eindentedblock} % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org % % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % % [Knuth] p.344; only we need to do the other characters Texinfo sets % active too. Otherwise, they get lost as the first character on a % verbatim line. \def\dospecials{% \do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% \do\<\do\>\do\|\do\@\do+\do\"% % Don't do the quotes -- if we do, @set txicodequoteundirected and % @set txicodequotebacktick will not have effect on @verb and % @verbatim, and ?` and !` ligatures won't get disabled. %\do\`\do\'% } % % [Knuth] p. 380 \def\uncatcodespecials{% \def\do##1{\catcode`##1=\other}\dospecials} % % Setup for the @verb command. % % Eight spaces for a tab \begingroup \catcode`\^^I=\active \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} \endgroup % \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% \setupmarkupstyle{verb}% \tabeightspaces % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces } % Setup for the @verbatim environment % % Real tab expansion. \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle % tabs. The \global is in case the verbatim line starts with an accent, % or some other command that starts with a begin-group. Otherwise, the % entire \verbbox would disappear at the corresponding end-group, before % it is typeset. Meanwhile, we can't have nested verbatim commands % (can we?), so the \global won't be overwriting itself. \newbox\verbbox \def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox }% } \endgroup % start the verbatim environment. \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim % The \leavevmode here is for blank lines. Otherwise, we would % never \starttabox and the \egroup would end verbatim mode. \def\par{\leavevmode\egroup\box\verbbox\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % % \def\doverb'{'#1'}'{#1} % % [Knuth] p. 382; only eat outer {} \begingroup \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] \endgroup % \def\verb{\begingroup\setupverb\doverb} % % % Do the @verbatim magic: define the macro \doverbatim so that % the (first) argument ends when '@end verbatim' is reached, ie: % % \def\doverbatim#1@end verbatim{#1} % % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] % \begingroup \catcode`\ =\active \obeylines % % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. \endgroup % \envdef\verbatim{% \setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak % @verbatiminclude FILE - insert text of file in verbatim environment. % \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} % \def\doverbatiminclude#1{% {% \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \input #1 \afterenvbreak }% } % @copying ... @end copying. % Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as % possible is very desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} % \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page \scanexp\copyingtext \endgroup } \message{defuns,} % @defun etc. \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\defunpenalty % Start the processing of @deffn: \def\startdefun{% \ifnum\lastpenalty<10000 \medbreak \defunpenalty=10003 % Will keep this @deffn together with the % following @def command, see below. \else % If there are two @def commands in a row, we'll have a \nobreak, % which is there to keep the function description together with its % header. But if there's nothing but headers, we need to allow a % break somewhere. Check specifically for penalty 10002, inserted % by \printdefunline, instead of 10000, since the sectioning % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % % As a further refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi % % Similarly, after a section heading, do not allow a break. % But do insert the glue. \medskip % preceded by discardable penalty, so not a breakpoint \fi % \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent } \def\dodefunx#1{% % First, check whether we are in the right environment: \checkenv#1% % % As above, allow line break if we have multiple x headers in a row. % It's not a great place, though. \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi % % And now, it's time to reuse the body of the original defun: \expandafter\gobbledefun#1% } \def\gobbledefun#1\startdefun{} % \printdefunline \deffnheader{text} % \def\printdefunline#1#2{% \begingroup % call \deffnheader: #1#2 \endheader % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \dodefunx % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts \endgroup } \def\Edefun{\endgraf\medbreak} % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; % the only thing remaining is to define \deffnheader. % \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } % \domakedefun \deffn \deffnx \deffnheader % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. % \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } \newif\ifdoingtypefn % doing typed function? \newif\ifrettypeownline % typeset return type on its own line? % @deftypefnnewline on|off says whether the return type of typed functions % are printed on their own line. This affects @deftypefn, @deftypefun, % @deftypeop, and @deftypemethod. % \parseargdef\deftypefnnewline{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxideftypefnnl\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETtxideftypefnnl\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @txideftypefnnl value `\temp', must be on|off}% \fi\fi } % Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} % @deffn category class name args \makedefun{defop}#1 {\defopon{#1\ \putwordon}} % \defopon {category on}class name args \def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deffngeneral {subind}category name args % \def\deffngeneral#1#2 #3 #4\endheader{% % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. \dosubind{fn}{\code{#3}}{#1}% \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} % \deftypeopon {category on}class type name args \def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deftypefngeneral {subind}category type name args % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% \doingtypefntrue \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} % \deftypecvof {category of}class type var args \def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } % \deftypecvgeneral {subind}category type var args % \def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% \dosubind{vr}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args \makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } % Types: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: \makedefun{defun}{\deffnheader{\putwordDeffunc} } \makedefun{defmac}{\deffnheader{\putwordDefmac} } \makedefun{defspec}{\deffnheader{\putwordDefspec} } \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } \makedefun{defmethod}{\defopon\putwordMethodon} \makedefun{deftypemethod}{\deftypeopon\putwordMethodon} \makedefun{defivar}{\defcvof\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % % Determine if we are typesetting the return type of a typed function % on a line by itself. \rettypeownlinefalse \ifdoingtypefn % doing a typed function specifically? % then check user option for putting return type on its own line: \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else \rettypeownlinetrue \fi \fi % % How we'll format the category name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % % Figure out line sizes for the paragraph shape. We'll always have at % least two. \tempnum = 2 % % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip % % If doing a return type on its own line, we'll have another line. \ifrettypeownline \advance\tempnum by 1 \def\maybeshapeline{0in \hsize}% \else \def\maybeshapeline{}% \fi % % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent % % The final paragraph shape: \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 % % Put the category name at the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize % \hsize has to be shortened this way: \kern\leftskip % Intentionally do not respect \rightskip, since we need the space. }% % % Allow all lines to be underfull without complaint: \tolerance=10000 \hbadness=10000 \exdentamount=\defbodyindent {% % defun fonts. We use typewriter by default (used to be bold) because: % . we're printing identifiers, they should be in tt in principle. % . in languages with many accents, such as Czech or French, it's % common to leave accents off identifiers. The result looks ok in % tt, but exceedingly strange in rm. % . we don't want -- and --- to be treated as ligatures. % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt \def\temp{#2}% text of the return type \ifx\temp\empty\else \tclose{\temp}% typeset the return type \ifrettypeownline % put return type on its own line; prohibit line break following: \hfil\vadjust{\nobreak}\break \else \space % type on same line, so just followed by a space \fi \fi % no return type #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm % \boldbrax % arguments will be output next, if any. } % Print arguments in slanted roman (not ttsl), inconsistently with using % tt for the name. This is because literal text is sometimes needed in % the argument list (groff manual), and ttsl and tt are not very % distinguishable. Prevent hyphenation at `-' chars. % \def\defunargs#1{% % use sl by default (not ttsl), % tt for the names. \df \sl \hyphenchar\font=0 % % On the other hand, if an argument has two dashes (for instance), we % want a way to get ttsl. We used to recommend @var for that, so % leave the code in, but it's strange for @var to lead to typewriter. % Nowadays we recommend @code, since the difference between a ttsl hyphen % and a tt hyphen is pretty tiny. @code also disables ?` !`. \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. % \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\[=\active \catcode`\]=\active \catcode`\&=\active } % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. { \activeparens \global\let(=\lparen \global\let)=\rparen \global\let[=\lbrack \global\let]=\rbrack \global\let& = \& \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} } \newcount\parencount % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen \def\amprm#1 {\ampseentrue{\bf\ }} \def\parenfont{% \ifampseen % At the first level, print parens in roman, % otherwise use the default font. \ifnum \parencount=1 \rm \fi \else % The \sf parens (in \boldbrax) actually are a little bolder than % the contained text. This is especially needed for [ and ] . \sf \fi } \def\infirstlevel#1{% \ifampseen \ifnum\parencount=1 #1% \fi \fi } \def\bfafterword#1 {#1 \bf} \def\opnr{% \global\advance\parencount by 1 {\parenfont(}% \infirstlevel \bfafterword } \def\clnr{% {\parenfont)}% \infirstlevel \sl \global\advance\parencount by -1 } \newcount\brackcount \def\lbrb{% \global\advance\brackcount by 1 {\bf[}% } \def\rbrb{% {\bf]}% \global\advance\brackcount by -1 } \def\checkparencounts{% \ifnum\parencount=0 \else \badparencount \fi \ifnum\brackcount=0 \else \badbrackcount \fi } % these should not use \errmessage; the glibc manual, at least, actually % has such constructs (when documenting function pointers). \def\badparencount{% \message{Warning: unbalanced parentheses in @def...}% \global\parencount=0 } \def\badbrackcount{% \message{Warning: unbalanced square brackets in @def...}% \global\brackcount=0 } \message{macros,} % @macro. % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. \ifx\eTeXversion\thisisundefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \input \jobname.tmp } \fi \def\scanmacro#1{\begingroup \newlinechar`\^^M \let\xeatspaces\eatspaces % % Undo catcode changes of \startcontents and \doprintindex % When called from @insertcopying or (short)caption, we need active % backslash to get it printed correctly. Previously, we had % \catcode`\\=\other instead. We'll see whether a problem appears % with macro expansion. --kasal, 19aug04 \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ % % ... and for \example: \spaceisspace % % The \empty here causes a following catcode 5 newline to be eaten as % part of reading whitespace after a control sequence. It does not % eat a catcode 13 newline. There's no good way to handle the two % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX % would then have different behavior). See the Macro Details node in % the manual for the workaround we recommend for macros and % line-oriented commands. % \scantokens{#1\empty}% \endgroup} \def\scanexp#1{% \edef\temp{\noexpand\scanmacro{#1}}% \temp } \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? % List of all defined macros in the form % \definedummyword\macro1\definedummyword\macro2... % Currently is also contains all @aliases; the list can be split % if there is a need. \def\macrolist{} % Add the macro to \macrolist \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} \def\addtomacrolistxxx#1{% \toks0 = \expandafter{\macrolist\definedummyword#1}% \xdef\macrolist{\the\toks0}% } % Utility routines. % This does \let #1 = #2, with \csnames; that is, % \let \csname#1\endcsname = \csname#2\endcsname % (except of course we have to play expansion games). % \def\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname \csname#2\endcsname } % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active % (as in normal texinfo). It is necessary to change the definition of \ % to recognize macro arguments; this is the job of \mbodybackslash. % % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. % % It's necessary to have hard CRs when the macro is executed. This is % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. % \def\scanctxt{% used as subroutine \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } \def\scanargctxt{% used for copying and captions, not macros. \scanctxt \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% used for @macro definitions \scanctxt \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } \def\macroargctxt{% used when scanning invocations \scanctxt \catcode`\\=0 } % why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" % for the single characters \ { }. Thus, we end up with the "commands" % that would be written @\ @{ @} in a Texinfo document. % % We already have @{ and @}. For @\, we define it here, and only for % this purpose, to produce a typewriter backslash (so, the @\ that we % define for @math can't be used with @macro calls): % \def\\{\normalbackslash}% % % We would like to do this for \, too, since that is what makeinfo does. % But it is not possible, because Texinfo already has a command @, for a % cedilla accent. Documents must use @comma{} instead. % % \anythingelse will almost certainly be an error of some kind. % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. % {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} \def\margbackslash#1{\char`\#1 } \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0\relax \else \expandafter\parsemargdef \argl;% \if\paramno>256\relax \ifx\eTeXversion\thisisundefined \errhelp = \EMsimple \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} \fi \fi \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \else \errmessage{Macro name \the\macname\space already defined}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \parseargdef\unmacro{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax \let\definedummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else \errmessage{Macro #1 not defined}% \fi } % Called by \do from \dounmacro on each macro. The idea is to omit any % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% \ifx #1\relax % remove this \else \noexpand\definedummyword \noexpand#1% \fi } % This makes use of the obscure feature that if the last token of a % is #, then the preceding argument is delimited by % an opening brace, and that opening brace is not consumed. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} % For macro processing make @ a letter so that we can make Texinfo private macro names. \edef\texiatcatcode{\the\catcode`\@} \catcode `@=11\relax % Parse the optional {params} list. Set up \paramno and \paramlist % so \defmacro knows what to do. Define \macarg.BLAH for each BLAH % in the params list to some hook where the argument si to be expanded. If % there are less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % That gets used by \mbodybackslash (above). % % We need to get `macro parameter char #' into several definitions. % The technique used is stolen from LaTeX: let \hash be something % unexpandable, insert that wherever you need a #, and then redefine % it to # just before using the token list produced. % % The same technique is used to protect \eatspaces till just before % the macro is used. % % If there are 10 or more arguments, a different technique is used, where the % hook remains in the body, and when macro is to be expanded the body is % processed again to replace the arguments. % % In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the % argument N value and then \edef the body (nothing else will expand because of % the catcode regime underwhich the body was input). % % If you compile with TeX (not eTeX), and you have macros with 10 or more % arguments, you need that no macro has more than 256 arguments, otherwise an % error is produced. \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax \let\xeatspaces\relax \parsemargdefxxx#1,;,% % In case that there are 10 or more arguments we parse again the arguments % list to set new definitions for the \macarg.BLAH macros corresponding to % each BLAH argument. It was anyhow needed to parse already once this list % in order to count the arguments, and as macros with at most 9 arguments % are by far more frequent than macro with 10 or more arguments, defining % twice the \macarg.BLAH macros does not cost too much processing power. \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments \fi } \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else \let\next=\parsemmanyargdef@@ \edef\tempb{\eatspaces{#1}}% \expandafter\def\expandafter\tempa \expandafter{\csname macarg.\tempb\endcsname}% % Note that we need some extra \noexpand\noexpand, this is because we % don't want \the to be expanded in the \parsermacbody as it uses an % \xdef . \expandafter\edef\tempa {\noexpand\noexpand\noexpand\the\toks\the\paramno}% \advance\paramno by 1\relax \fi\next} % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) % \catcode `\@\texiatcatcode \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \catcode `\@=11\relax \let\endargs@\relax \let\nil@\relax \def\nilm@{\nil@}% \long\def\nillm@{\nil@}% % This macro is expanded during the Texinfo macro expansion, not during its % definition. It gets all the arguments values and assigns them to macros % macarg.ARGNAME % % #1 is the macro name % #2 is the list of argument names % #3 is the list of argument values \def\getargvals@#1#2#3{% \def\macargdeflist@{}% \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. \def\paramlist{#2,\nil@}% \def\macroname{#1}% \begingroup \macroargctxt \def\argvaluelist{#3,\nil@}% \def\@tempa{#3}% \ifx\@tempa\empty \setemptyargvalues@ \else \getargvals@@ \fi } % \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. \ifx\argvaluelist\nillm@ \else \errhelp = \EMsimple \errmessage{Too many arguments in macro `\macroname'!}% \fi \let\next\macargexpandinbody@ \else \ifx\argvaluelist\nillm@ % No more arguments values passed to macro. Set remaining named-arg % macros to empty. \let\next\setemptyargvalues@ \else % pop current arg name into \@tempb \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% \expandafter\@tempa\expandafter{\paramlist}% % pop current argument value into \@tempc \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% \expandafter\@tempa\expandafter{\argvaluelist}% % Here \@tempb is the current arg name and \@tempc is the current arg value. % First place the new argument macro definition into \@tempd \expandafter\macname\expandafter{\@tempc}% \expandafter\let\csname macarg.\@tempb\endcsname\relax \expandafter\def\expandafter\@tempe\expandafter{% \csname macarg.\@tempb\endcsname}% \edef\@tempd{\long\def\@tempe{\the\macname}}% \push@\@tempd\macargdeflist@ \let\next\getargvals@@ \fi \fi \next } \def\push@#1#2{% \expandafter\expandafter\expandafter\def \expandafter\expandafter\expandafter#2% \expandafter\expandafter\expandafter{% \expandafter#1#2}% } % Replace arguments by their values in the macro body, and place the result % in macro \@tempa \def\macvalstoargs@{% % To do this we use the property that token registers that are \the'ed % within an \edef expand only once. So we are going to place all argument % values into respective token registers. % % First we save the token context, and initialize argument numbering. \begingroup \paramno0\relax % Then, for each argument number #N, we place the corresponding argument % value into a new token list register \toks#N \expandafter\putargsintokens@\saveparamlist@,;,% % Then, we expand the body so that argument are replaced by their % values. The trick for values not to be expanded themselves is that they % are within tokens and that tokens expand only once in an \edef . \edef\@tempc{\csname mac.\macroname .body\endcsname}% % Now we restore the token stack pointer to free the token list registers % which we have used, but we make sure that expanded body is saved after % group. \expandafter \endgroup \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% } \def\macargexpandinbody@{% %% Define the named-macro outside of this group and then close this group. \expandafter \endgroup \macargdeflist@ % First the replace in body the macro arguments by their values, the result % is in \@tempa . \macvalstoargs@ % Then we point at the \norecurse or \gobble (for recursive) macro value % with \@tempb . \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname % Depending on whether it is recursive or not, we need some tailing % \egroup . \ifx\@tempb\gobble \let\@tempc\relax \else \let\@tempc\egroup \fi % And now we do the real job: \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% \@tempd } \def\putargsintokens@#1,{% \if#1;\let\next\relax \else \let\next\putargsintokens@ % First we allocate the new token list register, and give it a temporary % alias \@tempb . \toksdef\@tempb\the\paramno % Then we place the argument value into that token list register. \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname \expandafter\@tempb\expandafter{\@tempa}% \advance\paramno by 1\relax \fi \next } % Save the token stack pointer into macro #1 \def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} % Restore the token stack pointer from number in macro #1 \def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} % newtoks that can be used non \outer . \def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} % Tailing missing arguments are set to empty \def\setemptyargvalues@{% \ifx\paramlist\nilm@ \let\next\macargexpandinbody@ \else \expandafter\setemptyargvaluesparser@\paramlist\endargs@ \let\next\setemptyargvalues@ \fi \next } \def\setemptyargvaluesparser@#1,#2\endargs@{% \expandafter\def\expandafter\@tempa\expandafter{% \expandafter\def\csname macarg.#1\endcsname{}}% \push@\@tempa\macargdeflist@ \def\paramlist{#2}% } % #1 is the element target macro % #2 is the list macro % #3,#4\endargs@ is the list value \def\pop@#1#2#3,#4\endargs@{% \def#1{#3}% \def#2{#4}% } \long\def\longpop@#1#2#3,#4\endargs@{% \long\def#1{#3}% \long\def#2{#4}% } % This defines a Texinfo @macro. There are eight cases: recursive and % nonrecursive macros of zero, one, up to nine, and many arguments. % Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file % they're defined in; @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifrecursive \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\temp}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup\noexpand\scanmacro{\temp}}% \else \ifnum\paramno<10\relax % at most 9 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{\egroup\noexpand\scanmacro{\temp}}% \else % 10 or more \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi \else \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % at most 9 \ifnum\paramno<10\relax \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \expandafter\noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse \fi \fi \fi} \catcode `\@\texiatcatcode\relax \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} % \braceorline decides whether the next nonwhitespace character is a % {. If so it reads up to the closing }, if not, it reads the whole % line. Whatever was read is then fed to the next control sequence % as an argument (by \parsebrace or \parsearg). % \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else \expandafter\parsearg \fi \macnamexxx} % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Make them active and then expand them all to nothing. % \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% {% \expandafter\let\obeyedspace=\empty \addtomacrolist{#1}% \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% }% \next } \message{cross references,} \newwrite\auxfile \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} \def\inforefzzz #1,#2,#3,#4**{% \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in % cross-references. The @node line might or might not have commas, and % might or might not have spaces before the first comma, like: % @node foo , bar , ... % We don't want such trailing spaces in the node name. % \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} % % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). % \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% \global\let\lastnode=\empty \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister % \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an % anchor), which consists of three parts: % 1) NAME-title - the current sectioning name taken from \lastsection, % or the anchor name. % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. % % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. % \def\setref#1#2{% \pdfmkdest{#1}% \iflinks {% \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout }% \fi } % @xrefautosectiontitle on|off says whether @section(ing) names are used % automatically in xrefs, if the third arg is not explicitly specified. % This was provided as a "secret" @set xref-automatic-section-title % variable, now it's official. % \parseargdef\xrefautomaticsectiontitle{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', must be on|off}% \fi\fi } % % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} % \newbox\toprefbox \newbox\printedrefnamebox \newbox\infofilenamebox \newbox\printedmanualbox % \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces % % Get args without leading/trailing spaces. \def\printedrefname{\ignorespaces #3}% \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% % \def\infofilename{\ignorespaces #4}% \setbox\infofilenamebox = \hbox{\infofilename\unskip}% % \def\printedmanual{\ignorespaces #5}% \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% % % If the printed reference name (arg #3) was not explicitly given in % the @xref, figure out what we want to use. \ifdim \wd\printedrefnamebox = 0pt % No printed node name was explicitly given. \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax % Not auto section-title: use node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else % Auto section-title: use chapter/section title inside % the square brackets if we have it. \ifdim \wd\printedmanualbox > 0pt % It is in another manual, so we don't have it; use node name. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs % We (should) know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% \fi% \fi \fi \fi % % Make link in pdf output. \ifpdf {\indexnofonts \turnoffactive \makevalueexpandable % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. This ignores all spaces in % #4, including (wrongly) those in the middle of the filename. \getfilename{#4}% % % This (wrongly) does not take account of leading or trailing % spaces in #1, which should be ignored. \edef\pdfxrefdest{#1}% \ifx\pdfxrefdest\empty \def\pdfxrefdest{Top}% no empty targets \else \txiescapepdf\pdfxrefdest % escape PDF special chars \fi % \leavevmode \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 goto file{\the\filename.pdf} name{\pdfxrefdest}% \else goto name{\pdfmkpgn{\pdfxrefdest}}% \fi }% \setcolor{\linkcolor}% \fi % % Float references are printed completely differently: "Figure 1.2" % instead of "[somenode], p.3". We distinguish them by the % LABEL-title being set to a magic string. {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. \indexnofonts \turnoffactive \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd\printedrefnamebox = 0pt \refx{#1-snt}{}% \else \printedrefname \fi % % If the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd\printedmanualbox > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. % % If we use \unhbox to print the node names, TeX does not insert % empty discretionaries after hyphens, which means that it will not % find a line break at a hyphen in a node names. Since some manuals % are best written with fairly long node names, containing hyphens, % this is a loss. Therefore, we give the text of the node name % again, so it is as if TeX is seeing it for the first time. % \ifdim \wd\printedmanualbox > 0pt % Cross-manual reference with a printed manual name. % \crossmanualxref{\cite{\printedmanual\unskip}}% % \else\ifdim \wd\infofilenamebox > 0pt % Cross-manual reference with only an info filename (arg 4), no % printed manual name (arg 5). This is essentially the same as % the case above; we output the filename, since we have nothing else. % \crossmanualxref{\code{\infofilename\unskip}}% % \else % Reference within this manual. % % _ (for example) has to be the character _ for the purposes of the % control sequence corresponding to the node, but it has to expand % into the usual \leavevmode...\vrule stuff for purposes of % printing. So we \turnoffactive for the \refx-snt, back on for the % printing, back off for the \refx-pg. {\turnoffactive % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % % But we always want a comma and a space: ,\space % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi\fi \fi \endlink \endgroup} % Output a cross-manual xref to #1. Used just above (twice). % % Only include the text "Section ``foo'' in" if the foo is neither % missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply % "see The Foo Manual", the idea being to refer to the whole manual. % % But, this being TeX, we can't easily compare our node name against the % string "Top" while ignoring the possible spaces before and after in % the input. By adding the arbitrary 7sp below, we make it much less % likely that a real node name would have the same width as "Top" (e.g., % in a monospaced font). Hopefully it will never happen in practice. % % For the same basic reason, we retypeset the "Top" at every % reference, since the current font is indeterminate. % \def\crossmanualxref#1{% \setbox\toprefbox = \hbox{Top\kern7sp}% \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% \ifdim \wd2 > 7sp % nonempty? \ifdim \wd2 = \wd\toprefbox \else % same as Top? \putwordSection{} ``\printedrefname'' \putwordin{}\space \fi \fi #1% } % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly % one that Bob is working on :). % \def\xrefprintnodename#1{[#1]} % Things referred to by \setref. % \def\Ynothing{} \def\Yomitfromtoc{} \def\Ynumbered{% \ifnum\secno=0 \putwordChapter@tie \the\chapno \else \ifnum\subsecno=0 \putwordSection@tie \the\chapno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie \the\chapno.\the\secno.\the\subsecno \else \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } \def\Yappendix{% \ifnum\secno=0 \putwordAppendix@tie @char\the\appendixno{}% \else \ifnum\subsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno \else \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% {% \indexnofonts \otherbackslash \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs {\toks0 = {#1}% avoid expansion of possibly-complex value \message{\linenumber Undefined cross reference `\the\toks0'.}}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \thisrefX \fi #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Usually it's % just a \def (we prepend XR to the control sequence name to avoid % collisions). But if this is a float type, we have more work to do. % \def\xrdef#1#2{% {% The node name might contain 8-bit characters, which in our current % implementation are changed to commands like @'e. Don't let these % mess up the control sequence name. \indexnofonts \turnoffactive \xdef\safexrefname{#1}% }% % \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref % % Was that xref control sequence that we just defined for a float? \expandafter\iffloat\csname XR\safexrefname\endcsname % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do \else % had it before, so preserve previous elements in list. \toks0 = \expandafter{\floatlist\do}% \fi % % Remember this xref in the control sequence \floatlistFLOATTYPE, % for later use in \listoffloats. \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 {\safexrefname}}% \fi } % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else \readdatafile{aux}% \global\havexrefstrue \fi \closein 1 } \def\setupdatafile{% \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, % that is not enough: for node names that actually contain a ^ % character, we would end up writing a line like this: 'xrdef {'hat % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first % argument, and \hat is not an expandable control sequence. It could % all be worked out, but why? Either we support ^^ or we don't. % % The other change necessary for this was to define \auxhat: % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter % and then to call \auxhat in \setq. % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % % This is to support \ in node names and titles, since the \ % characters end up in a \csname. It's easier than % leaving it active and making its active definition an actual \ % character. What I don't understand is why it works in the *value* % of the xrdef. Seems like it should be a catcode12 \, and that % should not typeset properly. But it works, so I'm moving on for % now. --karl, 15jan04. \catcode`\\=\other % % Make the characters 128-255 be printing characters. {% \count1=128 \def\loop{% \catcode\count1=\other \advance\count1 by 1 \ifnum \count1<256 \loop \fi }% }% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 \catcode`\}=2 \catcode`\@=0 } \def\readdatafile#1{% \begingroup \setupdatafile \input\jobname.#1 \endgroup} \message{insertions,} % including footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for Info output only. \let\footnotestyle=\comment {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \let\indent=\ptexindent \let\noindent=\ptexnoindent \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \dofootnote }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset (and anything else that uses % \parseargline) fails inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \gdef\dofootnote{% \insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \hsize=\pagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Because we use hanging indentation in footnotes, a @noindent appears % to exdent this text, so make it be a no-op. makeinfo does not use % hanging indentation so @noindent can still be needed within footnote % text after an @example or the like (not that this is good style). \let\noindent = \relax % % Hang the footnote text off the number. Use \everypar in case the % footnote extends for more than one paragraph. \everypar = {\hang}% \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut % % Invoke rest of plain TeX footnote routine. \futurelet\next\fo@t } }%end \catcode `\@=11 % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. % Similarly, if a @footnote appears inside an alignment, save the footnote % text to a box and make the \insert when a row of the table is finished. % And the same can be done for other insert classes. --kasal, 16nov03. % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. % \def\startsavinginserts{% \ifx \insert\ptexinsert \let\insert\saveinsert \else \let\checkinserts\relax \fi } % This \insert replacement works for both \insert\footins{foo} and % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. % \def\saveinsert#1{% \edef\next{\noexpand\savetobox \makeSAVEname#1}% \afterassignment\next % swallow the left brace \let\temp = } \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} \def\placesaveins#1{% \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname {\box#1}% } % eat @SAVE -- beware, all of them have catcode \other: { \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) \gdef\gobblesave @SAVE{} } % initialization: \def\newsaveins #1{% \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% \next } \def\newsaveinsX #1{% \csname newbox\endcsname #1% \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts \checksaveins #1}% } % initialize: \let\checkinserts\empty \newsaveins\footins \newsaveins\margin % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else % Do not bother showing banner with epsf.tex v2.7k (available in % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi \closein 1 % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% \ifx\epsfbox\thisisundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,,,\finish \fi } % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. % #6 is just the usual extra ignored arg for parsing stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names % If the image is by itself, center it. \ifvmode \imagevmodetrue \else \ifx\centersub\centerV % for @center @image, we need a vbox so we can have our vertical space \imagevmodetrue \vbox\bgroup % vbox has better behavior than vtop herev \fi\fi % \ifimagevmode \nobreak\medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \nobreak\vskip\parskip \nobreak \fi % % Leave vertical mode so that indentation from an enclosing % environment such as @quotation is respected. % However, if we're at the top level, we don't want the % normal paragraph indentation. % On the other hand, if we are in the case of @center @image, we don't % want to start a paragraph, which will create a hsize-width box and % eradicate the centering. \ifx\centersub\centerV\else \noindent \fi % % Output the image. \ifpdf \dopdfimage{#1}{#2}{#3}% \else % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \epsfbox{#1.eps}% \fi % \ifimagevmode \medskip % space after a standalone image \fi \ifx\centersub\centerV \egroup \fi \endgroup} % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, % etc. We don't actually implement floating yet, we always include the % float "here". But it seemed the best name for the future. % \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} % There may be a space before second and/or third parameter; delete it. \def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. % % #2 is the optional xref label. Also must be present for the float to % be referable. % % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). % % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty % \def\dofloat#1,#2,#3,#4\finish{% \let\thiscaption=\empty \let\thisshortcaption=\empty % % don't lose footnotes inside @float. % % BEWARE: when the floats start float, we have to issue warning whenever an % insert appears inside a float which could possibly float. --kasal, 26may04 % \startsavinginserts % % We can't be used inside a paragraph. \par % \vtop\bgroup \def\floattype{#1}% \def\floatlabel{#2}% \def\floatloc{#3}% we do nothing with this yet. % \ifx\floattype\empty \let\safefloattype=\empty \else {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% \fi % % If label is given but no type, we handle that as the empty type. \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % {% % This magic value for \lastsection is output by \setref as the % XREFLABEL-title value. \xrefX uses it to distinguish float % labels (which have a completely different output format) from % node and anchor labels. And \xrdef uses it to construct the % lists of floats. % \edef\lastsection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% \fi % % start with \parskip glue, I guess. \vskip\parskip % % Don't suppress indentation if a float happens to start a section. \restorefirstparagraphindent } % we have these possibilities: % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap % @float Foo,lbl & no caption: Foo 1.1 % @float Foo & @caption{Cap}: Foo: Cap % @float Foo & no caption: Foo % @float ,lbl & Caption{Cap}: 1.1: Cap % @float ,lbl & no caption: 1.1 % @float & @caption{Cap}: Cap % @float & no caption: % \def\Efloat{% \let\floatident = \empty % % In all cases, if we have a float type, it comes first. \ifx\floattype\empty \else \def\floatident{\floattype}\fi % % If we have an xref label, the number comes next. \ifx\floatlabel\empty \else \ifx\floattype\empty \else % if also had float type, need tie first. \appendtomacro\floatident{\tie}% \fi % the number. \appendtomacro\floatident{\chaplevelprefix\the\floatno}% \fi % % Start the printed caption with what we've constructed in % \floatident, but keep it separate; we need \floatident again. \let\captionline = \floatident % \ifx\thiscaption\empty \else \ifx\floatident\empty \else \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. % Eventually this needs to become an \insert. \ifx\captionline\empty \else \vskip.5\parskip \captionline % % Space below caption. \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this % after the caption, to avoid chance of it being a breakpoint. \ifx\floatlabel\empty \else % Write the text that goes in the lof to the aux file as % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% \atdummies % % since we read the caption text in the macro world, where ^^M % is turned into a normal character, we have to scan it back, so % we don't write the literal three characters "^^M" into the aux file. \scanexp{% \xdef\noexpand\gtemp{% \ifx\thisshortcaption\empty \thiscaption \else \thisshortcaption \fi }% }% \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi \egroup % end of \vtop % % place the captured inserts % % BEWARE: when the floats start floating, we have to issue warning % whenever an insert appears inside a float which could possibly % float. --kasal, 26may04 % \checkinserts } % Append the tokens #2 to the definition of macro #1, not expanding either. % \def\appendtomacro#1#2{% \expandafter\def\expandafter#1\expandafter{#1#2}% } % @caption, @shortcaption % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} \def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. \def\getfloatno#1{% \ifx#1\relax % Haven't seen this figure type before. \csname newcount\endcsname #1% % % Remember to reset this floatno at the next chap. \expandafter\gdef\expandafter\resetallfloatnos \expandafter{\resetallfloatnos #1=0 }% \fi \let\floatno#1% } % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. % \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can % distinguish floats from other xref types. \def\floatmagic{!!float!!} % #1 is the control sequence we are passed; we expand into a conditional % which is true if #1 represents a float ref. That is, the magic % \lastsection value which we \setref above. % \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. % \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% \ifx\temp\floatmagic } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. % \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% % % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax \ifhavexrefs % if the user said @listoffloats foo but never @float foo. \message{\linenumber No `\safefloattype' floats to list.}% \fi \else \begingroup \leftskip=\tocindent % indent these entries like a toc \let\do=\listoffloatsdo \csname floatlist\safefloattype\endcsname \endgroup \fi } % This is called on each entry in a list of floats. We're passed the % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. % % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). % \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just % pass the control sequence. On the other hand, XR#1-pg is just the % page number, and we want to fully expand that so we can get a link % in pdf output. \toksA = \expandafter{\csname XR#1-lof\endcsname}% % % use the same \entry macro we use to generate the TOC and index. \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% \writeentry }} \message{localization,} % For single-language documents, @documentlanguage is usually given very % early, just after @documentencoding. Single argument is the language % (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active \globaldefs=1 \parseargdef\documentlanguage{\begingroup \let_=\normalunderscore % normal _ character for filenames \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. \openin 1 txi-#1.tex \ifeof 1 \documentlanguagetrywithoutunderscore{#1_\finish}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX \endgroup} % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. % \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } }% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? Putting it in the current directory should work if nowhere else does.} % This macro is called from txi-??.tex files; the first argument is the % \language name to set (without the "\lang@" prefix), the second and % third args are \{left,right}hyphenmin. % % The language names to pass are determined when the format is built. % See the etex.log file created at that time, e.g., % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. % % With TeX Live 2008, etex now includes hyphenation patterns for all % available languages. This means we can support hyphenation in % Texinfo, at least to some extent. (This still doesn't solve the % accented characters problem.) % \catcode`@=11 \def\txisetlanguage#1#2#3{% % do not set the language if the name is undefined in the current TeX. \expandafter\ifx\csname lang@#1\endcsname \relax \message{no patterns for #1}% \else \global\language = \csname lang@#1\endcsname \fi % but there is no harm in adjusting the hyphenmin values regardless. \global\lefthyphenmin = #2\relax \global\righthyphenmin = #3\relax } % Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % \def\setnonasciicharscatcode#1{% \count255=128 \loop\ifnum\count255<256 \global\catcode\count255=#1\relax \advance\count255 by 1 \repeat } \def\setnonasciicharscatcodenonglobal#1{% \count255=128 \loop\ifnum\count255<256 \catcode\count255=#1\relax \advance\count255 by 1 \repeat } % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % \parseargdef\documentencoding{% % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % % Supported encodings: names converted to tokens in order to be able % to compare them with \ifx. \def\ascii{\csname US-ASCII.enc\endcsname}% \def\latnine{\csname ISO-8859-15.enc\endcsname}% \def\latone{\csname ISO-8859-1.enc\endcsname}% \def\lattwo{\csname ISO-8859-2.enc\endcsname}% \def\utfeight{\csname UTF-8.enc\endcsname}% % \ifx \declaredencoding \ascii \asciichardefs % \else \ifx \declaredencoding \lattwo \setnonasciicharscatcode\active \lattwochardefs % \else \ifx \declaredencoding \latone \setnonasciicharscatcode\active \latonechardefs % \else \ifx \declaredencoding \latnine \setnonasciicharscatcode\active \latninechardefs % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active \utfeightchardefs % \else \message{Unknown document encoding #1, ignoring.}% % \fi % utfeight \fi % latnine \fi % latone \fi % lattwo \fi % ascii } % A message to be logged when using a character that isn't available % the default font encoding (OT1). % \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} % First, make active non-ASCII characters in order for them to be % correctly categorized when TeX reads the replacement text of % macros containing the character definitions. \setnonasciicharscatcode\active % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% \gdef^^a0{\tie} \gdef^^a1{\exclamdown} \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\missingcharmsg{YEN SIGN}} \gdef^^a6{\missingcharmsg{BROKEN BAR}} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} \gdef^^ac{$\lnot$} \gdef^^ad{\-} \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} % \gdef^^b0{\textdegree} \gdef^^b1{$\pm$} \gdef^^b2{$^2$} \gdef^^b3{$^3$} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} % \gdef^^b7{$^.$} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} % \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} \gdef^^bf{\questiondown} % \gdef^^c0{\`A} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\~A} \gdef^^c4{\"A} \gdef^^c5{\ringaccent A} \gdef^^c6{\AE} \gdef^^c7{\cedilla C} \gdef^^c8{\`E} \gdef^^c9{\'E} \gdef^^ca{\^E} \gdef^^cb{\"E} \gdef^^cc{\`I} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\"I} % \gdef^^d0{\DH} \gdef^^d1{\~N} \gdef^^d2{\`O} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\~O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\O} \gdef^^d9{\`U} \gdef^^da{\'U} \gdef^^db{\^U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\TH} \gdef^^df{\ss} % \gdef^^e0{\`a} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\~a} \gdef^^e4{\"a} \gdef^^e5{\ringaccent a} \gdef^^e6{\ae} \gdef^^e7{\cedilla c} \gdef^^e8{\`e} \gdef^^e9{\'e} \gdef^^ea{\^e} \gdef^^eb{\"e} \gdef^^ec{\`{\dotless i}} \gdef^^ed{\'{\dotless i}} \gdef^^ee{\^{\dotless i}} \gdef^^ef{\"{\dotless i}} % \gdef^^f0{\dh} \gdef^^f1{\~n} \gdef^^f2{\`o} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\~o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\o} \gdef^^f9{\`u} \gdef^^fa{\'u} \gdef^^fb{\^u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\th} \gdef^^ff{\"y} } % Latin9 (ISO-8859-15) encoding character definitions. \def\latninechardefs{% % Encoding is almost identical to Latin1. \latonechardefs % \gdef^^a4{\euro} \gdef^^a6{\v S} \gdef^^a8{\v s} \gdef^^b4{\v Z} \gdef^^b8{\v z} \gdef^^bc{\OE} \gdef^^bd{\oe} \gdef^^be{\"Y} } % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% \gdef^^a0{\tie} \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\v L} \gdef^^a6{\'S} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\v S} \gdef^^aa{\cedilla S} \gdef^^ab{\v T} \gdef^^ac{\'Z} \gdef^^ad{\-} \gdef^^ae{\v Z} \gdef^^af{\dotaccent Z} % \gdef^^b0{\textdegree} \gdef^^b1{\ogonek{a}} \gdef^^b2{\ogonek{ }} \gdef^^b3{\l} \gdef^^b4{\'{}} \gdef^^b5{\v l} \gdef^^b6{\'s} \gdef^^b7{\v{}} \gdef^^b8{\cedilla\ } \gdef^^b9{\v s} \gdef^^ba{\cedilla s} \gdef^^bb{\v t} \gdef^^bc{\'z} \gdef^^bd{\H{}} \gdef^^be{\v z} \gdef^^bf{\dotaccent z} % \gdef^^c0{\'R} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\u A} \gdef^^c4{\"A} \gdef^^c5{\'L} \gdef^^c6{\'C} \gdef^^c7{\cedilla C} \gdef^^c8{\v C} \gdef^^c9{\'E} \gdef^^ca{\ogonek{E}} \gdef^^cb{\"E} \gdef^^cc{\v E} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\v D} % \gdef^^d0{\DH} \gdef^^d1{\'N} \gdef^^d2{\v N} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\H O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\v R} \gdef^^d9{\ringaccent U} \gdef^^da{\'U} \gdef^^db{\H U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\cedilla T} \gdef^^df{\ss} % \gdef^^e0{\'r} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\u a} \gdef^^e4{\"a} \gdef^^e5{\'l} \gdef^^e6{\'c} \gdef^^e7{\cedilla c} \gdef^^e8{\v c} \gdef^^e9{\'e} \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} \gdef^^ed{\'{\dotless{i}}} \gdef^^ee{\^{\dotless{i}}} \gdef^^ef{\v d} % \gdef^^f0{\dh} \gdef^^f1{\'n} \gdef^^f2{\v n} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\H o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\v r} \gdef^^f9{\ringaccent u} \gdef^^fa{\'u} \gdef^^fb{\H u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\cedilla t} \gdef^^ff{\dotaccent{}} } % UTF-8 character definitions. % % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. % \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz \gdef\UTFviiiTwoOctets#1#2{\expandafter \UTFviiiDefined\csname u8:#1\string #2\endcsname} % \gdef\UTFviiiThreeOctets#1#2#3{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} % \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} \gdef\UTFviiiDefined#1{% \ifx #1\relax \message{\linenumber Unicode char \string #1 not defined for Texinfo}% \else \expandafter #1% \fi } \begingroup \catcode`\~13 \catcode`\"12 \def\UTFviiiLoop{% \global\catcode\countUTFx\active \uccode`\~\countUTFx \uppercase\expandafter{\UTFviiiTmp}% \advance\countUTFx by 1 \ifnum\countUTFx < \countUTFy \expandafter\UTFviiiLoop \fi} \countUTFx = "C2 \countUTFy = "E0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiTwoOctets\string~}} \UTFviiiLoop \countUTFx = "E0 \countUTFy = "F0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiThreeOctets\string~}} \UTFviiiLoop \countUTFx = "F0 \countUTFy = "F4 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiFourOctets\string~}} \UTFviiiLoop \endgroup \begingroup \catcode`\"=12 \catcode`\<=12 \catcode`\.=12 \catcode`\,=12 \catcode`\;=12 \catcode`\!=12 \catcode`\~=13 \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% \begingroup \parseXMLCharref \def\UTFviiiTwoOctets##1##2{% \csname u8:##1\string ##2\endcsname}% \def\UTFviiiThreeOctets##1##2##3{% \csname u8:##1\string ##2\string ##3\endcsname}% \def\UTFviiiFourOctets##1##2##3##4{% \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% \endgroup} \gdef\parseXMLCharref{% \ifnum\countUTFz < "A0\relax \errhelp = \EMsimple \errmessage{Cannot define Unicode char value < 00A0}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctets.,% \else\ifnum\countUTFz < "10000\relax \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% \else \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiA!% \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% \fi\fi\fi } \gdef\parseUTFviiiA#1{% \countUTFx = \countUTFz \divide\countUTFz by 64 \countUTFy = \countUTFz \multiply\countUTFz by 64 \advance\countUTFx by -\countUTFz \advance\countUTFx by 128 \uccode `#1\countUTFx \countUTFz = \countUTFy} \gdef\parseUTFviiiB#1#2#3#4{% \advance\countUTFz by "#10\relax \uccode `#3\countUTFz \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} \DeclareUnicodeCharacter{00A3}{\pounds} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} \DeclareUnicodeCharacter{00B4}{\'{ }} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} \DeclareUnicodeCharacter{00C1}{\'A} \DeclareUnicodeCharacter{00C2}{\^A} \DeclareUnicodeCharacter{00C3}{\~A} \DeclareUnicodeCharacter{00C4}{\"A} \DeclareUnicodeCharacter{00C5}{\AA} \DeclareUnicodeCharacter{00C6}{\AE} \DeclareUnicodeCharacter{00C7}{\cedilla{C}} \DeclareUnicodeCharacter{00C8}{\`E} \DeclareUnicodeCharacter{00C9}{\'E} \DeclareUnicodeCharacter{00CA}{\^E} \DeclareUnicodeCharacter{00CB}{\"E} \DeclareUnicodeCharacter{00CC}{\`I} \DeclareUnicodeCharacter{00CD}{\'I} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} \DeclareUnicodeCharacter{00D3}{\'O} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} \DeclareUnicodeCharacter{00DB}{\^U} \DeclareUnicodeCharacter{00DC}{\"U} \DeclareUnicodeCharacter{00DD}{\'Y} \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} \DeclareUnicodeCharacter{00E0}{\`a} \DeclareUnicodeCharacter{00E1}{\'a} \DeclareUnicodeCharacter{00E2}{\^a} \DeclareUnicodeCharacter{00E3}{\~a} \DeclareUnicodeCharacter{00E4}{\"a} \DeclareUnicodeCharacter{00E5}{\aa} \DeclareUnicodeCharacter{00E6}{\ae} \DeclareUnicodeCharacter{00E7}{\cedilla{c}} \DeclareUnicodeCharacter{00E8}{\`e} \DeclareUnicodeCharacter{00E9}{\'e} \DeclareUnicodeCharacter{00EA}{\^e} \DeclareUnicodeCharacter{00EB}{\"e} \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} \DeclareUnicodeCharacter{00F3}{\'o} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} \DeclareUnicodeCharacter{00FB}{\^u} \DeclareUnicodeCharacter{00FC}{\"u} \DeclareUnicodeCharacter{00FD}{\'y} \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} \DeclareUnicodeCharacter{0100}{\=A} \DeclareUnicodeCharacter{0101}{\=a} \DeclareUnicodeCharacter{0102}{\u{A}} \DeclareUnicodeCharacter{0103}{\u{a}} \DeclareUnicodeCharacter{0104}{\ogonek{A}} \DeclareUnicodeCharacter{0105}{\ogonek{a}} \DeclareUnicodeCharacter{0106}{\'C} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} \DeclareUnicodeCharacter{0118}{\ogonek{E}} \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} \DeclareUnicodeCharacter{011D}{\^g} \DeclareUnicodeCharacter{011E}{\u{G}} \DeclareUnicodeCharacter{011F}{\u{g}} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} \DeclareUnicodeCharacter{0132}{IJ} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} \DeclareUnicodeCharacter{014F}{\u{o}} \DeclareUnicodeCharacter{0150}{\H{O}} \DeclareUnicodeCharacter{0151}{\H{o}} \DeclareUnicodeCharacter{0152}{\OE} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} \DeclareUnicodeCharacter{015B}{\'s} \DeclareUnicodeCharacter{015C}{\^S} \DeclareUnicodeCharacter{015D}{\^s} \DeclareUnicodeCharacter{015E}{\cedilla{S}} \DeclareUnicodeCharacter{015F}{\cedilla{s}} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} \DeclareUnicodeCharacter{0162}{\cedilla{t}} \DeclareUnicodeCharacter{0163}{\cedilla{T}} \DeclareUnicodeCharacter{0164}{\v{T}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} \DeclareUnicodeCharacter{016B}{\=u} \DeclareUnicodeCharacter{016C}{\u{U}} \DeclareUnicodeCharacter{016D}{\u{u}} \DeclareUnicodeCharacter{016E}{\ringaccent{U}} \DeclareUnicodeCharacter{016F}{\ringaccent{u}} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} \DeclareUnicodeCharacter{0177}{\^y} \DeclareUnicodeCharacter{0178}{\"Y} \DeclareUnicodeCharacter{0179}{\'Z} \DeclareUnicodeCharacter{017A}{\'z} \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} \DeclareUnicodeCharacter{01C6}{d\v{z}} \DeclareUnicodeCharacter{01C7}{LJ} \DeclareUnicodeCharacter{01C8}{Lj} \DeclareUnicodeCharacter{01C9}{lj} \DeclareUnicodeCharacter{01CA}{NJ} \DeclareUnicodeCharacter{01CB}{Nj} \DeclareUnicodeCharacter{01CC}{nj} \DeclareUnicodeCharacter{01CD}{\v{A}} \DeclareUnicodeCharacter{01CE}{\v{a}} \DeclareUnicodeCharacter{01CF}{\v{I}} \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} \DeclareUnicodeCharacter{01D1}{\v{O}} \DeclareUnicodeCharacter{01D2}{\v{o}} \DeclareUnicodeCharacter{01D3}{\v{U}} \DeclareUnicodeCharacter{01D4}{\v{u}} \DeclareUnicodeCharacter{01E2}{\={\AE}} \DeclareUnicodeCharacter{01E3}{\={\ae}} \DeclareUnicodeCharacter{01E6}{\v{G}} \DeclareUnicodeCharacter{01E7}{\v{g}} \DeclareUnicodeCharacter{01E8}{\v{K}} \DeclareUnicodeCharacter{01E9}{\v{k}} \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} \DeclareUnicodeCharacter{01F1}{DZ} \DeclareUnicodeCharacter{01F2}{Dz} \DeclareUnicodeCharacter{01F3}{dz} \DeclareUnicodeCharacter{01F4}{\'G} \DeclareUnicodeCharacter{01F5}{\'g} \DeclareUnicodeCharacter{01F8}{\`N} \DeclareUnicodeCharacter{01F9}{\`n} \DeclareUnicodeCharacter{01FC}{\'{\AE}} \DeclareUnicodeCharacter{01FD}{\'{\ae}} \DeclareUnicodeCharacter{01FE}{\'{\O}} \DeclareUnicodeCharacter{01FF}{\'{\o}} \DeclareUnicodeCharacter{021E}{\v{H}} \DeclareUnicodeCharacter{021F}{\v{h}} \DeclareUnicodeCharacter{0226}{\dotaccent{A}} \DeclareUnicodeCharacter{0227}{\dotaccent{a}} \DeclareUnicodeCharacter{0228}{\cedilla{E}} \DeclareUnicodeCharacter{0229}{\cedilla{e}} \DeclareUnicodeCharacter{022E}{\dotaccent{O}} \DeclareUnicodeCharacter{022F}{\dotaccent{o}} \DeclareUnicodeCharacter{0232}{\=Y} \DeclareUnicodeCharacter{0233}{\=y} \DeclareUnicodeCharacter{0237}{\dotless{j}} \DeclareUnicodeCharacter{02DB}{\ogonek{ }} \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} \DeclareUnicodeCharacter{1E20}{\=G} \DeclareUnicodeCharacter{1E21}{\=g} \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} \DeclareUnicodeCharacter{1E26}{\"H} \DeclareUnicodeCharacter{1E27}{\"h} \DeclareUnicodeCharacter{1E30}{\'K} \DeclareUnicodeCharacter{1E31}{\'k} \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} \DeclareUnicodeCharacter{1E3E}{\'M} \DeclareUnicodeCharacter{1E3F}{\'m} \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} \DeclareUnicodeCharacter{1E54}{\'P} \DeclareUnicodeCharacter{1E55}{\'p} \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} \DeclareUnicodeCharacter{1E7C}{\~V} \DeclareUnicodeCharacter{1E7D}{\~v} \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} \DeclareUnicodeCharacter{1E80}{\`W} \DeclareUnicodeCharacter{1E81}{\`w} \DeclareUnicodeCharacter{1E82}{\'W} \DeclareUnicodeCharacter{1E83}{\'w} \DeclareUnicodeCharacter{1E84}{\"W} \DeclareUnicodeCharacter{1E85}{\"w} \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} \DeclareUnicodeCharacter{1E8C}{\"X} \DeclareUnicodeCharacter{1E8D}{\"x} \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} \DeclareUnicodeCharacter{1E90}{\^Z} \DeclareUnicodeCharacter{1E91}{\^z} \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} \DeclareUnicodeCharacter{1E97}{\"t} \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} \DeclareUnicodeCharacter{1EBC}{\~E} \DeclareUnicodeCharacter{1EBD}{\~e} \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} \DeclareUnicodeCharacter{1EF2}{\`Y} \DeclareUnicodeCharacter{1EF3}{\`y} \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} \DeclareUnicodeCharacter{1EF8}{\~Y} \DeclareUnicodeCharacter{1EF9}{\~y} \DeclareUnicodeCharacter{2013}{--} \DeclareUnicodeCharacter{2014}{---} \DeclareUnicodeCharacter{2018}{\quoteleft} \DeclareUnicodeCharacter{2019}{\quoteright} \DeclareUnicodeCharacter{201A}{\quotesinglbase} \DeclareUnicodeCharacter{201C}{\quotedblleft} \DeclareUnicodeCharacter{201D}{\quotedblright} \DeclareUnicodeCharacter{201E}{\quotedblbase} \DeclareUnicodeCharacter{2022}{\bullet} \DeclareUnicodeCharacter{2026}{\dots} \DeclareUnicodeCharacter{2039}{\guilsinglleft} \DeclareUnicodeCharacter{203A}{\guilsinglright} \DeclareUnicodeCharacter{20AC}{\euro} \DeclareUnicodeCharacter{2192}{\expansion} \DeclareUnicodeCharacter{21D2}{\result} \DeclareUnicodeCharacter{2212}{\minus} \DeclareUnicodeCharacter{2217}{\point} \DeclareUnicodeCharacter{2261}{\equiv} }% end of \utfeightchardefs % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. % \setnonasciicharscatcode \other \message{formatting,} \newdimen\defaultparindent \defaultparindent = 15pt \chapheadingskip = 15pt plus 4pt minus 2pt \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be very finicky about underfull hboxes, either. \hbadness = 6666 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \fi } % Parameters in order: 1) textheight; 2) textwidth; % 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; % 7) physical page height; 8) physical page width. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. % \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \outervsize = \vsize \advance\outervsize by 2\topandbottommargin \pageheight = \vsize % \hsize = #2\relax \outerhsize = \hsize \advance\outerhsize by 0.5in \pagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \ifpdf \pdfpageheight #7\relax \pdfpagewidth #8\relax % if we don't reset these, they will remain at "1 true in" of % whatever layout pdftex was dumped with. \pdfhorigin = 1 true in \pdfvorigin = 1 true in \fi % \setleading{\textleading} % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % If page is nothing but text, make it come out even. \internalpagesizes{607.2pt}{6in}% that's 46 lines {\voffset}{.25in}% {\bindingoffset}{36pt}% {11in}{8.5in}% }} % Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt % \internalpagesizes{7.5in}{5in}% {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% % \lispnarrowing = 0.3in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .5cm }} % Use @smallerbook to reset parameters for 6x9 trim size. % (Just testing, parameters still in flux.) \def\smallerbook{{\globaldefs = 1 \parskip = 1.5pt plus 1pt \textleading = 12pt % \internalpagesizes{7.4in}{4.8in}% {-.2in}{-.4in}% {0pt}{14pt}% {9in}{6in}% % \lispnarrowing = 0.25in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .4cm }} % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % Double-side printing via postscript on Laserjet 4050 % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. % To change the settings for a different printer or situation, adjust % \normaloffset until the front-side and back-side texts align. Then % do the same for \bindingoffset. You can set these for testing in % your texinfo source file like this: % @tex % \global\normaloffset = -6mm % \global\bindingoffset = 10mm % @end tex \internalpagesizes{673.2pt}{160mm}% that's 51 lines {\voffset}{\hoffset}% {\bindingoffset}{44pt}% {297mm}{210mm}% % \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = 5mm }} % Use @afivepaper to print on European A5 paper. % From romildo@urano.iceb.ufop.br, 2 July 2000. % He also recommends making @example and @lisp be small. \def\afivepaper{{\globaldefs = 1 \parskip = 2pt plus 1pt minus 0.1pt \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% {\voffset}{\hoffset}% {\bindingoffset}{8pt}% {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper \internalpagesizes{237mm}{150mm}% {\voffset}{4.6mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% % % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} % Use @afourwide to print on A4 paper in landscape format. \def\afourwide{{\globaldefs = 1 \afourpaper \internalpagesizes{241mm}{165mm}% {\voffset}{-2.95mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% \globaldefs = 0 }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{\textleading}% % \dimen0 = #1\relax \advance\dimen0 by \voffset % \dimen2 = \hsize \advance\dimen2 by \normaloffset % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% {\bindingoffset}{44pt}% {\dimen0}{\dimen2}% }} % Set default to letter. % \letterpaper \message{and turning on texinfo input format.} \def^^L{\par} % remove \outer, so ^L can appear in an @comment % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \def\normaldoublequote{"} \catcode`\$=\other \def\normaldollar{$}%$ font-lock fix \catcode`\+=\other \def\normalplus{+} \catcode`\<=\other \def\normalless{<} \catcode`\>=\other \def\normalgreater{>} \catcode`\^=\other \def\normalcaret{^} \catcode`\_=\other \def\normalunderscore{_} \catcode`\|=\other \def\normalverticalbar{|} \catcode`\~=\other \def\normaltilde{~} % This macro is used to make a character print one way in \tt % (where it can probably be output as-is), and another way in other fonts, % where something hairier probably needs to be done. % % #1 is what to print if we are indeed using \tt; #2 is what to print % otherwise. Since all the Computer Modern typewriter fonts have zero % interword stretch (and shrink), and it is reasonable to expect all % typewriter fonts to have this, we can check that font parameter. % \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Turn off all special characters except @ % (and those which the user can use as if they were ordinary). % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active \def^{{\tt \hat}} \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} \let\realunder=_ % Subroutine for the previous macro. \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} \chardef \gtr=`\> \catcode`\>=\active \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix % If a .fmt file is being used, characters that might appear in a file % name cannot be active until we have parsed the command line. % So turn them off again, and have \everyjob (or @setfilename) turn them on. % \otherifyactive is called near the end of this file. \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% \normalturnoffactive \otherbackslash } \catcode`\@=0 % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work % \realbackslash is an actual character `\' with catcode other, and % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} % In texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active % @ for escape char from now on. % The story here is that in math mode, the \char of \backslashcurfont % ends up printing the roman \ from the math symbol font (because \char % in math mode uses the \mathcode, and plain.tex sets % \mathcode`\\="026E). It seems better for @backslashchar{} to always % print a typewriter backslash, hence we use an explicit \mathchar, % which is the decimal equivalent of "715c (class 7, e.g., use \fam; % ignored family value; char position "5C). We can't use " for the % usual hex value because it has already been made active. @def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} @let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. % On startup, @fixbackslash assigns: % @let \ = @normalbackslash % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. We switch back and forth between these. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. Also revert - to its normal character, in % case the active - from code has slipped in. % {@catcode`- = @active @gdef@normalturnoffactive{% @let-=@normaldash @let"=@normaldoublequote @let$=@normaldollar %$ font-lock fix @let+=@normalplus @let<=@normalless @let>=@normalgreater @let\=@normalbackslash @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let~=@normaltilde @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } } % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @otherifyactive % If a .fmt file is being used, we don't want the `\input texinfo' to show up. % That is what \eatinput is for; after that, the `\' should revert to printing % a backslash. % @gdef@eatinput input texinfo{@fixbackslash} @global@let\ = @eatinput % On the other hand, perhaps the file did not have a `\input texinfo'. Then % the first `\' in the file would cause an error. This macro tries to fix % that, assuming it is called before the first `\' could plausibly occur. % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. % @gdef@fixbackslash{% @ifx\@eatinput @let\ = @normalbackslash @fi @catcode`+=@active @catcode`@_=@active } % Say @foo, not \foo, in error messages. @escapechar = `@@ % These (along with & and #) are made active for url-breaking, so need % active definitions as the normal characters. @def@normaldot{.} @def@normalquest{?} @def@normalslash{/} % These look ok in all fonts, so just make them not special. % @hashchar{} gets its own user-level command, because of #line. @catcode`@& = @other @def@normalamp{&} @catcode`@# = @other @def@normalhash{#} @catcode`@% = @other @def@normalpercent{%} @let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we @c don't make ` and ' active, @code will not get them as active chars. @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active @markupsetuplqdefault @markupsetuprqdefault @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @c End: @c vim:sw=2: @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore libtasn1-3.4/build-aux/depcomp0000755000000000000000000005601612244721751013250 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: libtasn1-3.4/build-aux/mdate-sh0000755000000000000000000001363712244721750013324 00000000000000#!/bin/sh # Get modification time of a file or directory and pretty-print it. scriptversion=2010-08-21.06; # UTC # Copyright (C) 1995-2013 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # # 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 # . 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 fi case $1 in '') echo "$0: No file. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: mdate-sh [--help] [--version] FILE Pretty-print the modification day of FILE, in the format: 1 January 1970 Report bugs to . EOF exit $? ;; -v | --v*) echo "mdate-sh $scriptversion" exit $? ;; esac error () { echo "$0: $1" >&2 exit 1 } # Prevent date giving response in another language. LANG=C export LANG LC_ALL=C export LC_ALL LC_TIME=C export LC_TIME # GNU ls changes its time format in response to the TIME_STYLE # variable. Since we cannot assume 'unset' works, revert this # variable to its documented default. if test "${TIME_STYLE+set}" = set; then TIME_STYLE=posix-long-iso export TIME_STYLE fi save_arg1=$1 # Find out how to get the extended ls output of a file or directory. if ls -L /dev/null 1>/dev/null 2>&1; then ls_command='ls -L -l -d' else ls_command='ls -l -d' fi # Avoid user/group names that might have spaces, when possible. if ls -n /dev/null 1>/dev/null 2>&1; then ls_command="$ls_command -n" fi # A 'ls -l' line looks as follows on OS/2. # drwxrwx--- 0 Aug 11 2001 foo # This differs from Unix, which adds ownership information. # drwxrwx--- 2 root root 4096 Aug 11 2001 foo # # To find the date, we split the line on spaces and iterate on words # until we find a month. This cannot work with files whose owner is a # user named "Jan", or "Feb", etc. However, it's unlikely that '/' # will be owned by a user whose name is a month. So we first look at # the extended ls output of the root directory to decide how many # words should be skipped to get the date. # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. set x`$ls_command /` # Find which argument is the month. month= command= until test $month do test $# -gt 0 || error "failed parsing '$ls_command /' output" shift # Add another shift to the command. command="$command shift;" case $1 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac done test -n "$month" || error "failed parsing '$ls_command /' output" # Get the extended ls output of the file or directory. set dummy x`eval "$ls_command \"\\\$save_arg1\""` # Remove all preceding arguments eval $command # Because of the dummy argument above, month is in $2. # # On a POSIX system, we should have # # $# = 5 # $1 = file size # $2 = month # $3 = day # $4 = year or time # $5 = filename # # On Darwin 7.7.0 and 7.6.0, we have # # $# = 4 # $1 = day # $2 = month # $3 = year or time # $4 = filename # Get the month. case $2 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac case $3 in ???*) day=$1;; *) day=$3; shift;; esac # Here we have to deal with the problem that the ls output gives either # the time of day or the year. case $3 in *:*) set `date`; eval year=\$$# case $2 in Jan) nummonthtod=1;; Feb) nummonthtod=2;; Mar) nummonthtod=3;; Apr) nummonthtod=4;; May) nummonthtod=5;; Jun) nummonthtod=6;; Jul) nummonthtod=7;; Aug) nummonthtod=8;; Sep) nummonthtod=9;; Oct) nummonthtod=10;; Nov) nummonthtod=11;; Dec) nummonthtod=12;; esac # For the first six month of the year the time notation can also # be used for files modified in the last year. if (expr $nummonth \> $nummonthtod) > /dev/null; then year=`expr $year - 1` fi;; *) year=$3;; esac # The result. echo $day $month $year # 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: libtasn1-3.4/build-aux/snippet/0000775000000000000000000000000012244722064013425 500000000000000libtasn1-3.4/build-aux/snippet/_Noreturn.h0000664000000000000000000000046212244720630015470 00000000000000#if !defined _Noreturn && __STDC_VERSION__ < 201112 # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif libtasn1-3.4/build-aux/snippet/warn-on-use.h0000664000000000000000000001200712244720630015666 00000000000000/* A C macro for emitting warnings if a function is used. Copyright (C) 2010-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 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 . */ /* _GL_WARN_ON_USE (function, "literal string") issues a declaration for FUNCTION which will then trigger a compiler warning containing the text of "literal string" anywhere that function is called, if supported by the compiler. If the compiler does not support this feature, the macro expands to an unused extern declaration. This macro is useful for marking a function as a potential portability trap, with the intent that "literal string" include instructions on the replacement function that should be used instead. However, one of the reasons that a function is a portability trap is if it has the wrong signature. Declaring FUNCTION with a different signature in C is a compilation error, so this macro must use the same type as any existing declaration so that programs that avoid the problematic FUNCTION do not fail to compile merely because they included a header that poisoned the function. But this implies that _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already have a declaration. Use of this macro implies that there must not be any other macro hiding the declaration of FUNCTION; but undefining FUNCTION first is part of the poisoning process anyway (although for symbols that are provided only via a macro, the result is a compilation error rather than a warning containing "literal string"). Also note that in C++, it is only safe to use if FUNCTION has no overloads. For an example, it is possible to poison 'getline' by: - adding a call to gl_WARN_ON_USE_PREPARE([[#include ]], [getline]) in configure.ac, which potentially defines HAVE_RAW_DECL_GETLINE - adding this code to a header that wraps the system : #undef getline #if HAVE_RAW_DECL_GETLINE _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but" "not universally present; use the gnulib module getline"); #endif It is not possible to directly poison global variables. But it is possible to write a wrapper accessor function, and poison that (less common usage, like &environ, will cause a compilation error rather than issue the nice warning, but the end result of informing the developer about their portability problem is still achieved): #if HAVE_RAW_DECL_ENVIRON static char ***rpl_environ (void) { return &environ; } _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); # undef environ # define environ (*rpl_environ ()) #endif */ #ifndef _GL_WARN_ON_USE # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) /* A compiler attribute is available in gcc versions 4.3.0 and later. */ # define _GL_WARN_ON_USE(function, message) \ extern __typeof__ (function) function __attribute__ ((__warning__ (message))) # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ # define _GL_WARN_ON_USE(function, message) \ extern __typeof__ (function) function # else /* Unsupported. */ # define _GL_WARN_ON_USE(function, message) \ _GL_WARN_EXTERN_C int _gl_warn_on_use # endif #endif /* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") is like _GL_WARN_ON_USE (function, "string"), except that the function is declared with the given prototype, consisting of return type, parameters, and attributes. This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does not work in this case. */ #ifndef _GL_WARN_ON_USE_CXX # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ extern rettype function parameters_and_attributes \ __attribute__ ((__warning__ (msg))) # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING /* Verify the existence of the function. */ # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ extern rettype function parameters_and_attributes # else /* Unsupported. */ # define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ _GL_WARN_EXTERN_C int _gl_warn_on_use # endif #endif /* _GL_WARN_EXTERN_C declaration; performs the declaration with C linkage. */ #ifndef _GL_WARN_EXTERN_C # if defined __cplusplus # define _GL_WARN_EXTERN_C extern "C" # else # define _GL_WARN_EXTERN_C extern # endif #endif libtasn1-3.4/build-aux/snippet/c++defs.h0000664000000000000000000002675312244720630014742 00000000000000/* C++ compatible function declaration macros. Copyright (C) 2010-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 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 . */ #ifndef _GL_CXXDEFS_H #define _GL_CXXDEFS_H /* The three most frequent use cases of these macros are: * For providing a substitute for a function that is missing on some platforms, but is declared and works fine on the platforms on which it exists: #if @GNULIB_FOO@ # if !@HAVE_FOO@ _GL_FUNCDECL_SYS (foo, ...); # endif _GL_CXXALIAS_SYS (foo, ...); _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif * For providing a replacement for a function that exists on all platforms, but is broken/insufficient and needs to be replaced on some platforms: #if @GNULIB_FOO@ # if @REPLACE_FOO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef foo # define foo rpl_foo # endif _GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...); # else _GL_CXXALIAS_SYS (foo, ...); # endif _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif * For providing a replacement for a function that exists on some platforms but is broken/insufficient and needs to be replaced on some of them and is additionally either missing or undeclared on some other platforms: #if @GNULIB_FOO@ # if @REPLACE_FOO@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) # undef foo # define foo rpl_foo # endif _GL_FUNCDECL_RPL (foo, ...); _GL_CXXALIAS_RPL (foo, ...); # else # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ _GL_FUNCDECL_SYS (foo, ...); # endif _GL_CXXALIAS_SYS (foo, ...); # endif _GL_CXXALIASWARN (foo); #elif defined GNULIB_POSIXCHECK ... #endif */ /* _GL_EXTERN_C declaration; performs the declaration with C linkage. */ #if defined __cplusplus # define _GL_EXTERN_C extern "C" #else # define _GL_EXTERN_C extern #endif /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); declares a replacement function, named rpl_func, with the given prototype, consisting of return type, parameters, and attributes. Example: _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); */ #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ _GL_EXTERN_C rettype rpl_func parameters_and_attributes /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); declares the system function, named func, with the given prototype, consisting of return type, parameters, and attributes. Example: _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) _GL_ARG_NONNULL ((1))); */ #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ _GL_EXTERN_C rettype func parameters_and_attributes /* _GL_CXXALIAS_RPL (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to rpl_func, if GNULIB_NAMESPACE is defined. Example: _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); */ #define _GL_CXXALIAS_RPL(func,rettype,parameters) \ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ rettype (*const func) parameters = ::rpl_func; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); except that the C function rpl_func may have a slightly different declaration. A cast is used to silence the "invalid conversion" error that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ rettype (*const func) parameters = \ reinterpret_cast(::rpl_func); \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS (func, rettype, parameters); declares a C++ alias called GNULIB_NAMESPACE::func that redirects to the system provided function func, if GNULIB_NAMESPACE is defined. Example: _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); */ #if defined __cplusplus && defined GNULIB_NAMESPACE /* If we were to write rettype (*const func) parameters = ::func; like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls better (remove an indirection through a 'static' pointer variable), but then the _GL_CXXALIASWARN macro below would cause a warning not only for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static rettype (*func) parameters = ::func; \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS(func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function func may have a slightly different declaration. A cast is used to silence the "invalid conversion" error that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ namespace GNULIB_NAMESPACE \ { \ static rettype (*func) parameters = \ reinterpret_cast(::func); \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); is like _GL_CXXALIAS_SYS (func, rettype, parameters); except that the C function is picked among a set of overloaded functions, namely the one with rettype2 and parameters2. Two consecutive casts are used to silence the "cannot find a match" and "invalid conversion" errors that would otherwise occur. */ #if defined __cplusplus && defined GNULIB_NAMESPACE /* The outer cast must be a reinterpret_cast. The inner cast: When the function is defined as a set of overloaded functions, it works as a static_cast<>, choosing the designated variant. When the function is defined as a single variant, it works as a reinterpret_cast<>. The parenthesized cast syntax works both ways. */ # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ namespace GNULIB_NAMESPACE \ { \ static rettype (*func) parameters = \ reinterpret_cast( \ (rettype2(*)parameters2)(::func)); \ } \ _GL_EXTERN_C int _gl_cxxalias_dummy #else # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIASWARN (func); causes a warning to be emitted when ::func is used but not when GNULIB_NAMESPACE::func is used. func must be defined without overloaded variants. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIASWARN(func) \ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) # define _GL_CXXALIASWARN_1(func,namespace) \ _GL_CXXALIASWARN_2 (func, namespace) /* To work around GCC bug , we enable the warning only when not optimizing. */ # if !__OPTIMIZE__ # define _GL_CXXALIASWARN_2(func,namespace) \ _GL_WARN_ON_USE (func, \ "The symbol ::" #func " refers to the system function. " \ "Use " #namespace "::" #func " instead.") # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING # define _GL_CXXALIASWARN_2(func,namespace) \ extern __typeof__ (func) func # else # define _GL_CXXALIASWARN_2(func,namespace) \ _GL_EXTERN_C int _gl_cxxalias_dummy # endif #else # define _GL_CXXALIASWARN(func) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); causes a warning to be emitted when the given overloaded variant of ::func is used but not when GNULIB_NAMESPACE::func is used. */ #if defined __cplusplus && defined GNULIB_NAMESPACE # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ GNULIB_NAMESPACE) # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) /* To work around GCC bug , we enable the warning only when not optimizing. */ # if !__OPTIMIZE__ # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ "The symbol ::" #func " refers to the system function. " \ "Use " #namespace "::" #func " instead.") # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ extern __typeof__ (func) func # else # define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ _GL_EXTERN_C int _gl_cxxalias_dummy # endif #else # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ _GL_EXTERN_C int _gl_cxxalias_dummy #endif #endif /* _GL_CXXDEFS_H */ libtasn1-3.4/build-aux/snippet/arg-nonnull.h0000664000000000000000000000230012244720630015742 00000000000000/* A C macro for declaring that specific arguments must not be NULL. Copyright (C) 2009-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 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 . */ /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools that the values passed as arguments n, ..., m must be non-NULL pointers. n = 1 stands for the first argument, n = 2 for the second argument etc. */ #ifndef _GL_ARG_NONNULL # if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 # define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) # else # define _GL_ARG_NONNULL(params) # endif #endif libtasn1-3.4/build-aux/pmccabe.css0000664000000000000000000000451512244720630013771 00000000000000body { font-family: Helvetica, sans-serif; } .page_title { font: 18pt Georgia, serif; color: darkred; } .section_title { font: 14pt Georgia, serif; color: darkred; } .report_timestamp { color: darkred; font-weight: bold; } .function_src { text-align: left; background: white; } .resume_table { } .resume_header_entry { color: black; } .resume_number_entry { color: darkred; font-weight: bold; text-align: right; } .ranges_table { border-spacing: 0px; border-bottom: solid 2px black; border-top: solid 2px black; border-left: solid 2px black; border-right: solid 2px black; } .ranges_header_entry { padding: 5px; border-bottom: solid 1px black; font-size: 1em; font-weight: bold; color: darkred; text-align: left; } .ranges_entry { } .ranges_entry_simple { background: #87ff75; } .ranges_entry_moderate { background: #fffc60; } .ranges_entry_high { background: #ff5a5d; } .ranges_entry_untestable { background: #993300 } .function_table { border-spacing: 0px; border-bottom: solid 2px black; border-top: solid 2px black; border-left: solid 2px black; border-right: solid 2px black; } .function_table_caption { font-size: 1.1em; font-weight: bold; color: black; padding: 5px; } .function_table_header { } .function_table_header_entry { padding: 5px; border-bottom: solid 1px black; font-size: 1em; font-weight: bold; color: darkred; text-align: left; } .function_entry { } .function_entry_simple { background: #87ff75; } .function_entry_moderate { background: #fffc60; } .function_entry_high { background: #ff5a5d; } .function_entry_untestable { background: #993300 } .function_entry_name { font-size: 1em; text-align: left; font-weight: bold; text-valign: top; border-top: solid 1px black; padding: 3px; } .function_entry_cyclo { font-size: 1em; text-align: right; text-valign: top; border-top: solid 1px black; padding: 3px; } .function_entry_number { font-size: 1em; text-align: right; text-valign: top; border-top: solid 1px black; padding: 3px; } .function_entry_filename { font-size: 1em; text-align: left; text-valign: top; border-top: solid 1px black; padding: 3px; } libtasn1-3.4/build-aux/config.guess0000755000000000000000000012746312244721750014217 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012, 2013 Free Software Foundation, Inc. timestamp='2012-12-29' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp 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` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libtasn1-3.4/build-aux/ar-lib0000755000000000000000000001330212244721750012755 00000000000000#! /bin/sh # Wrapper for Microsoft lib.exe me=ar-lib scriptversion=2012-03-01.08; # UTC # Copyright (C) 2010-2013 Free Software Foundation, Inc. # Written by Peter Rosin . # # 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 # . # func_error message func_error () { echo "$me: $1" 1>&2 exit 1 } file_conv= # func_file_conv build_file # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. 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 in 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_at_file at_file operation archive # Iterate over all members in AT_FILE performing OPERATION on ARCHIVE # for each of them. # When interpreting the content of the @FILE, do NOT use func_file_conv, # since the user would need to supply preconverted file names to # binutils ar, at least for MinGW. func_at_file () { operation=$2 archive=$3 at_file_contents=`cat "$1"` eval set x "$at_file_contents" shift for member do $AR -NOLOGO $operation:"$member" "$archive" || exit $? done } case $1 in '') func_error "no command. Try '$0 --help' for more information." ;; -h | --h*) cat <. # # 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 "$1" = "--"; 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 # FIXME: add hostname here for parallel makes that run commands on # other machines. But that might take us over the 14-char limit. 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: libtasn1-3.4/build-aux/update-copyright0000775000000000000000000002242112244720630015077 00000000000000eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}' & eval 'exec perl -wS -0777 -pi "$0" $argv:q' if 0; # Update an FSF copyright year list to include the current year. my $VERSION = '2013-01-03.09:41'; # UTC # Copyright (C) 2009-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 3, 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 . # Written by Jim Meyering and Joel E. Denny # The arguments to this script should be names of files that contain # copyright statements to be updated. The copyright holder's name # defaults to "Free Software Foundation, Inc." but may be changed to # any other name by using the "UPDATE_COPYRIGHT_HOLDER" environment # variable. # # For example, you might wish to use the update-copyright target rule # in maint.mk from gnulib's maintainer-makefile module. # # Iff a copyright statement is recognized in a file and the final # year is not the current year, then the statement is updated for the # new year and it is reformatted to: # # 1. Fit within 72 columns. # 2. Convert 2-digit years to 4-digit years by prepending "19". # 3. Expand copyright year intervals. (See "Environment variables" # below.) # # A warning is printed for every file for which no copyright # statement is recognized. # # Each file's copyright statement must be formatted correctly in # order to be recognized. For example, each of these is fine: # # Copyright @copyright{} 1990-2005, 2007-2009 Free Software # Foundation, Inc. # # # Copyright (C) 1990-2005, 2007-2009 Free Software # # Foundation, Inc. # # /* # * Copyright © 90,2005,2007-2009 # * Free Software Foundation, Inc. # */ # # However, the following format is not recognized because the line # prefix changes after the first line: # # ## Copyright (C) 1990-2005, 2007-2009 Free Software # # Foundation, Inc. # # However, any correctly formatted copyright statement following # a non-matching copyright statements would be recognized. # # The exact conditions that a file's copyright statement must meet # to be recognized are: # # 1. It is the first copyright statement that meets all of the # following conditions. Subsequent copyright statements are # ignored. # 2. Its format is "Copyright (C)", then a list of copyright years, # and then the name of the copyright holder. # 3. The "(C)" takes one of the following forms or is omitted # entirely: # # A. (C) # B. (c) # C. @copyright{} # D. © # # 4. The "Copyright" appears at the beginning of a line, except that it # may be prefixed by any sequence (e.g., a comment) of no more than # 5 characters -- including white space. # 5. Iff such a prefix is present, the same prefix appears at the # beginning of each remaining line within the FSF copyright # statement. There is one exception in order to support C-style # comments: if the first line's prefix contains nothing but # whitespace surrounding a "/*", then the prefix for all subsequent # lines is the same as the first line's prefix except with each of # "/" and possibly "*" replaced by a " ". The replacement of "*" # by " " is consistent throughout all subsequent lines. # 6. Blank lines, even if preceded by the prefix, do not appear # within the FSF copyright statement. # 7. Each copyright year is 2 or 4 digits, and years are separated by # commas or dashes. Whitespace may appear after commas. # # Environment variables: # # 1. If UPDATE_COPYRIGHT_FORCE=1, a recognized FSF copyright statement # is reformatted even if it does not need updating for the new # year. If unset or set to 0, only updated FSF copyright # statements are reformatted. # 2. If UPDATE_COPYRIGHT_USE_INTERVALS=1, every series of consecutive # copyright years (such as 90, 1991, 1992-2007, 2008) in a # reformatted FSF copyright statement is collapsed to a single # interval (such as 1990-2008). If unset or set to 0, all existing # copyright year intervals in a reformatted FSF copyright statement # are expanded instead. # If UPDATE_COPYRIGHT_USE_INTERVALS=2, convert a sequence with gaps # to the minimal containing range. For example, convert # 2000, 2004-2007, 2009 to 2000-2009. # 3. For testing purposes, you can set the assumed current year in # UPDATE_COPYRIGHT_YEAR. # 4. The default maximum line length for a copyright line is 72. # Set UPDATE_COPYRIGHT_MAX_LINE_LENGTH to use a different length. # 5. Set UPDATE_COPYRIGHT_HOLDER if the copyright holder is other # than "Free Software Foundation, Inc.". use strict; use warnings; my $copyright_re = 'Copyright'; my $circle_c_re = '(?:\([cC]\)|@copyright{}|©)'; my $holder = $ENV{UPDATE_COPYRIGHT_HOLDER}; $holder ||= 'Free Software Foundation, Inc.'; my $prefix_max = 5; my $margin = $ENV{UPDATE_COPYRIGHT_MAX_LINE_LENGTH}; !$margin || $margin !~ m/^\d+$/ and $margin = 72; my $tab_width = 8; my $this_year = $ENV{UPDATE_COPYRIGHT_YEAR}; if (!$this_year || $this_year !~ m/^\d{4}$/) { my ($sec, $min, $hour, $mday, $month, $year) = localtime (time ()); $this_year = $year + 1900; } # Unless the file consistently uses "\r\n" as the EOL, use "\n" instead. my $eol = /(?:^|[^\r])\n/ ? "\n" : "\r\n"; my $leading; my $prefix; my $ws_re; my $stmt_re; while (/(^|\n)(.{0,$prefix_max})$copyright_re/g) { $leading = "$1$2"; $prefix = $2; if ($prefix =~ /^(\s*\/)\*(\s*)$/) { $prefix =~ s,/, ,; my $prefix_ws = $prefix; $prefix_ws =~ s/\*/ /; # Only whitespace. if (/\G(?:[^*\n]|\*[^\/\n])*\*?\n$prefix_ws/) { $prefix = $prefix_ws; } } $ws_re = '[ \t\r\f]'; # \s without \n $ws_re = "(?:$ws_re*(?:$ws_re|\\n" . quotemeta($prefix) . ")$ws_re*)"; my $holder_re = $holder; $holder_re =~ s/\s/$ws_re/g; my $stmt_remainder_re = "(?:$ws_re$circle_c_re)?" . "$ws_re(?:(?:\\d\\d)?\\d\\d(?:,$ws_re?|-))*" . "((?:\\d\\d)?\\d\\d)$ws_re$holder_re"; if (/\G$stmt_remainder_re/) { $stmt_re = quotemeta($leading) . "($copyright_re$stmt_remainder_re)"; last; } } if (defined $stmt_re) { /$stmt_re/ or die; # Should never die. my $stmt = $1; my $final_year_orig = $2; # Handle two-digit year numbers like "98" and "99". my $final_year = $final_year_orig; $final_year <= 99 and $final_year += 1900; if ($final_year != $this_year) { # Update the year. $stmt =~ s/\b$final_year_orig\b/$final_year, $this_year/; } if ($final_year != $this_year || $ENV{'UPDATE_COPYRIGHT_FORCE'}) { # Normalize all whitespace including newline-prefix sequences. $stmt =~ s/$ws_re/ /g; # Put spaces after commas. $stmt =~ s/, ?/, /g; # Convert 2-digit to 4-digit years. $stmt =~ s/(\b\d\d\b)/19$1/g; # Make the use of intervals consistent. if (!$ENV{UPDATE_COPYRIGHT_USE_INTERVALS}) { $stmt =~ s/(\d{4})-(\d{4})/join(', ', $1..$2)/eg; } else { $stmt =~ s/ (\d{4}) (?: (,\ |-) ((??{ if ($2 eq '-') { '\d{4}'; } elsif (!$3) { $1 + 1; } else { $3 + 1; } })) )+ /$1-$3/gx; # When it's 2, emit a single range encompassing all year numbers. $ENV{UPDATE_COPYRIGHT_USE_INTERVALS} == 2 and $stmt =~ s/\b(\d{4})\b.*\b(\d{4})\b/$1-$2/; } # Format within margin. my $stmt_wrapped; my $text_margin = $margin - length($prefix); if ($prefix =~ /^(\t+)/) { $text_margin -= length($1) * ($tab_width - 1); } while (length $stmt) { if (($stmt =~ s/^(.{1,$text_margin})(?: |$)//) || ($stmt =~ s/^([\S]+)(?: |$)//)) { my $line = $1; $stmt_wrapped .= $stmt_wrapped ? "$eol$prefix" : $leading; $stmt_wrapped .= $line; } else { # Should be unreachable, but we don't want an infinite # loop if it can be reached. die; } } # Replace the old copyright statement. s/$stmt_re/$stmt_wrapped/; } } else { print STDERR "$ARGV: warning: copyright statement not found\n"; } # Local variables: # mode: perl # indent-tabs-mode: nil # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "my $VERSION = '" # time-stamp-format: "%:y-%02m-%02d.%02H:%02M" # time-stamp-time-zone: "UTC" # time-stamp-end: "'; # UTC" # End: libtasn1-3.4/build-aux/ltmain.sh0000644000000000000000000105152212244721742013511 00000000000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool 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. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.2 TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs 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 BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs 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 BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 libtasn1-3.4/build-aux/config.sub0000755000000000000000000010550312244721750013651 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012, 2013 Free Software Foundation, Inc. timestamp='2012-12-29' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libtasn1-3.4/build-aux/gnupload0000775000000000000000000002744712244720630013435 00000000000000#!/bin/sh # Sign files and upload them. scriptversion=2013-03-19.17; # UTC # Copyright (C) 2004-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 3, 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 . # Originally written by Alexandre Duret-Lutz . # The master copy of this file is maintained in the gnulib Git repository. # Please send bug reports and feature requests to bug-gnulib@gnu.org. set -e GPG='gpg --batch --no-tty' conffile=.gnuploadrc to= dry_run=false replace= symlink_files= delete_files= delete_symlinks= collect_var= dbg= nl=' ' usage="Usage: $0 [OPTION]... [CMD] FILE... [[CMD] FILE...] Sign all FILES, and process them at the destinations specified with --to. If CMD is not given, it defaults to uploading. See examples below. Commands: --delete delete FILES from destination --symlink create symbolic links --rmsymlink remove symbolic links -- treat the remaining arguments as files to upload Options: --to DEST specify a destination DEST for FILES (multiple --to options are allowed) --user NAME sign with key NAME --replace allow replacements of existing files --symlink-regex[=EXPR] use sed script EXPR to compute symbolic link names --dry-run do nothing, show what would have been done (including the constructed directive file) --version output version information and exit --help print this help text and exit If --symlink-regex is given without EXPR, then the link target name is created by replacing the version information with '-latest', e.g.: foo-1.3.4.tar.gz -> foo-latest.tar.gz Recognized destinations are: alpha.gnu.org:DIRECTORY savannah.gnu.org:DIRECTORY savannah.nongnu.org:DIRECTORY ftp.gnu.org:DIRECTORY build directive files and upload files by FTP download.gnu.org.ua:{alpha|ftp}/DIRECTORY build directive files and upload files by SFTP [user@]host:DIRECTORY upload files with scp Options and commands are applied in order. If the file $conffile exists in the current working directory, its contents are prepended to the actual command line options. Use this to keep your defaults. Comments (#) and empty lines in $conffile are allowed. gives some further background. Examples: 1. Upload foobar-1.0.tar.gz to ftp.gnu.org: gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz 2. Upload foobar-1.0.tar.gz and foobar-1.0.tar.xz to ftp.gnu.org: gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz foobar-1.0.tar.xz 3. Same as above, and also create symbolic links to foobar-latest.tar.*: gnupload --to ftp.gnu.org:foobar \\ --symlink-regex \\ foobar-1.0.tar.gz foobar-1.0.tar.xz 4. Upload foobar-0.9.90.tar.gz to two sites: gnupload --to alpha.gnu.org:foobar \\ --to sources.redhat.com:~ftp/pub/foobar \\ foobar-0.9.90.tar.gz 5. Delete oopsbar-0.9.91.tar.gz and upload foobar-0.9.91.tar.gz (the -- terminates the list of files to delete): gnupload --to alpha.gnu.org:foobar \\ --to sources.redhat.com:~ftp/pub/foobar \\ --delete oopsbar-0.9.91.tar.gz \\ -- foobar-0.9.91.tar.gz gnupload executes a program ncftpput to do the transfers; if you don't happen to have an ncftp package installed, the ncftpput-ftp script in the build-aux/ directory of the gnulib package (http://savannah.gnu.org/projects/gnulib) may serve as a replacement. Send patches and bug reports to ." # Read local configuration file if test -r "$conffile"; then echo "$0: Reading configuration file $conffile" conf=`sed 's/#.*$//;/^$/d' "$conffile" | tr "\015$nl" ' '` eval set x "$conf \"\$@\"" shift fi while test -n "$1"; do case $1 in -*) collect_var= case $1 in --help) echo "$usage" exit $? ;; --to) if test -z "$2"; then echo "$0: Missing argument for --to" 1>&2 exit 1 elif echo "$2" | grep 'ftp-upload\.gnu\.org' >/dev/null; then echo "$0: Use ftp.gnu.org:PKGNAME or alpha.gnu.org:PKGNAME" >&2 echo "$0: for the destination, not ftp-upload.gnu.org (which" >&2 echo "$0: is used for direct ftp uploads, not with gnupload)." >&2 echo "$0: See --help and its examples if need be." >&2 exit 1 else to="$to $2" shift fi ;; --user) if test -z "$2"; then echo "$0: Missing argument for --user" 1>&2 exit 1 else GPG="$GPG --local-user $2" shift fi ;; --delete) collect_var=delete_files ;; --replace) replace="replace: true" ;; --rmsymlink) collect_var=delete_symlinks ;; --symlink-regex=*) symlink_expr=`expr "$1" : '[^=]*=\(.*\)'` ;; --symlink-regex) symlink_expr='s|-[0-9][0-9\.]*\(-[0-9][0-9]*\)\{0,1\}\.|-latest.|' ;; --symlink) collect_var=symlink_files ;; --dry-run|-n) dry_run=: ;; --version) echo "gnupload $scriptversion" exit $? ;; --) shift break ;; -*) echo "$0: Unknown option '$1', try '$0 --help'" 1>&2 exit 1 ;; esac ;; *) if test -z "$collect_var"; then break else eval "$collect_var=\"\$$collect_var $1\"" fi ;; esac shift done dprint() { echo "Running $* ..." } if $dry_run; then dbg=dprint fi if test -z "$to"; then echo "$0: Missing destination sites" >&2 exit 1 fi if test -n "$symlink_files"; then x=`echo "$symlink_files" | sed 's/[^ ]//g;s/ //g'` if test -n "$x"; then echo "$0: Odd number of symlink arguments" >&2 exit 1 fi fi if test $# = 0; then if test -z "${symlink_files}${delete_files}${delete_symlinks}"; then echo "$0: No file to upload" 1>&2 exit 1 fi else # Make sure all files exist. We don't want to ask # for the passphrase if the script will fail. for file do if test ! -f $file; then echo "$0: Cannot find '$file'" 1>&2 exit 1 elif test -n "$symlink_expr"; then linkname=`echo $file | sed "$symlink_expr"` if test -z "$linkname"; then echo "$0: symlink expression produces empty results" >&2 exit 1 elif test "$linkname" = $file; then echo "$0: symlink expression does not alter file name" >&2 exit 1 fi fi done fi # Make sure passphrase is not exported in the environment. unset passphrase unset passphrase_fd_0 GNUPGHOME=${GNUPGHOME:-$HOME/.gnupg} # Reset PATH to be sure that echo is a built-in. We will later use # 'echo $passphrase' to output the passphrase, so it is important that # it is a built-in (third-party programs tend to appear in 'ps' # listings with their arguments...). # Remember this script runs with 'set -e', so if echo is not built-in # it will exit now. if $dry_run || grep -q "^use-agent" $GNUPGHOME/gpg.conf; then :; else PATH=/empty echo -n "Enter GPG passphrase: " stty -echo read -r passphrase stty echo echo passphrase_fd_0="--passphrase-fd 0" fi if test $# -ne 0; then for file do echo "Signing $file ..." rm -f $file.sig echo "$passphrase" | $dbg $GPG $passphrase_fd_0 -ba -o $file.sig $file done fi # mkdirective DESTDIR BASE FILE STMT # Arguments: See upload, below mkdirective () { stmt="$4" if test -n "$3"; then stmt=" filename: $3$stmt" fi cat >${2}.directive<&2 fi $dbg ncftpput savannah.gnu.org /incoming/savannah/$destdir $files ;; savannah.nongnu.org:*) if test -z "$files"; then echo "$0: warning: standalone directives not applicable for $dest" >&2 fi $dbg ncftpput savannah.nongnu.org /incoming/savannah/$destdir $files ;; download.gnu.org.ua:alpha/*|download.gnu.org.ua:ftp/*) destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'` destdir_topdir=`echo "$destdir" | sed 's,/.*,,'` mkdirective "$destdir_p1" "$base" "$file" "$stmt" echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive for f in $files $base.directive.asc do echo put $f done | $dbg sftp -b - puszcza.gnu.org.ua:/incoming/$destdir_topdir ;; /*) dest_host=`echo "$dest" | sed 's,:.*,,'` mkdirective "$destdir" "$base" "$file" "$stmt" echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive $dbg cp $files $base.directive.asc $dest_host ;; *) if test -z "$files"; then echo "$0: warning: standalone directives not applicable for $dest" >&2 fi $dbg scp $files $dest ;; esac rm -f $base.directive $base.directive.asc } ##### # Process any standalone directives stmt= if test -n "$symlink_files"; then stmt="$stmt `mksymlink $symlink_files`" fi for file in $delete_files do stmt="$stmt archive: $file" done for file in $delete_symlinks do stmt="$stmt rmsymlink: $file" done if test -n "$stmt"; then for dest in $to do destdir=`echo $dest | sed 's/[^:]*://'` upload "$dest" "$destdir" "`hostname`-$$" "" "$stmt" done fi # Process actual uploads for dest in $to do for file do echo "Uploading $file to $dest ..." stmt= # # allowing file replacement is all or nothing. if test -n "$replace"; then stmt="$stmt $replace" fi # files="$file $file.sig" destdir=`echo $dest | sed 's/[^:]*://'` if test -n "$symlink_expr"; then linkname=`echo $file | sed "$symlink_expr"` stmt="$stmt symlink: $file $linkname symlink: $file.sig $linkname.sig" fi upload "$dest" "$destdir" "$file" "$file" "$stmt" "$files" done done exit 0 # 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: libtasn1-3.4/build-aux/useless-if-before-free0000775000000000000000000001411412244720630016045 00000000000000eval '(exit $?0)' && eval 'exec perl -wST "$0" ${1+"$@"}' & eval 'exec perl -wST "$0" $argv:q' if 0; # Detect instances of "if (p) free (p);". # Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces. my $VERSION = '2012-01-06 07:23'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook # do its job. Otherwise, update this string manually. # Copyright (C) 2008-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 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 . # Written by Jim Meyering use strict; use warnings; use Getopt::Long; (my $ME = $0) =~ s|.*/||; # use File::Coda; # http://meyering.net/code/Coda/ END { defined fileno STDOUT or return; close STDOUT and return; warn "$ME: failed to close standard output: $!\n"; $? ||= 1; } sub usage ($) { my ($exit_code) = @_; my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR); if ($exit_code != 0) { print $STREAM "Try '$ME --help' for more information.\n"; } else { print $STREAM < sub { usage 0 }, version => sub { print "$ME version $VERSION\n"; exit }, list => \$list, 'name=s@' => \@name, ) or usage 1; # Make sure we have the right number of non-option arguments. # Always tell the user why we fail. @ARGV < 1 and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR; my $or = join '|', @name; my $regexp = qr/(?:$or)/; # Set the input record separator. # Note: this makes it impractical to print line numbers. $/ = '"'; my $found_match = 0; FILE: foreach my $file (@ARGV) { open FH, '<', $file or (warn "$ME: can't open '$file' for reading: $!\n"), $err = EXIT_ERROR, next; while (defined (my $line = )) { while ($line =~ /\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\) # 1 2 3 (?: \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;| \s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg) { my $all = $1; my ($lhs, $rhs) = ($2, $3); my ($free_opnd, $braced_free_opnd) = ($4, $5); my $non_NULL; if (!defined $rhs) { $non_NULL = $lhs } elsif (is_NULL $rhs) { $non_NULL = $lhs } elsif (is_NULL $lhs) { $non_NULL = $rhs } else { next } # Compare the non-NULL part of the "if" expression and the # free'd expression, without regard to white space. $non_NULL =~ tr/ \t//d; my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd; $e2 =~ tr/ \t//d; if ($non_NULL eq $e2) { $found_match = 1; $list and (print "$file\0"), next FILE; print "$file: $all\n"; } } } } continue { close FH; } $found_match && $err == EXIT_NO_MATCH and $err = EXIT_MATCH; exit $err; } my $foo = <<'EOF'; # The above is to *find* them. # This adjusts them, removing the unnecessary "if (p)" part. # FIXME: do something like this as an option (doesn't do braces): free=xfree git grep -l -z "$free *(" \ | xargs -0 useless-if-before-free -l --name="$free" \ | xargs -0 perl -0x3b -pi -e \ 's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\)\s*;)/$2/s' # Use the following to remove redundant uses of kfree inside braces. # Note that -0777 puts perl in slurp-whole-file mode; # but we have plenty of memory, these days... free=kfree git grep -l -z "$free *(" \ | xargs -0 useless-if-before-free -l --name="$free" \ | xargs -0 perl -0777 -pi -e \ 's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms' Be careful that the result of the above transformation is valid. If the matched string is followed by "else", then obviously, it won't be. When modifying files, refuse to process anything other than a regular file. EOF ## Local Variables: ## mode: perl ## indent-tabs-mode: nil ## eval: (add-hook 'write-file-hooks 'time-stamp) ## time-stamp-start: "my $VERSION = '" ## time-stamp-format: "%:y-%02m-%02d %02H:%02M" ## time-stamp-time-zone: "UTC" ## time-stamp-end: "'; # UTC" ## End: libtasn1-3.4/build-aux/gendocs.sh0000775000000000000000000003745112244720630013653 00000000000000#!/bin/sh -e # gendocs.sh -- generate a GNU manual in many formats. This script is # mentioned in maintain.texi. See the help message below for usage details. scriptversion=2013-03-08.15 # Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 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 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 . # # Original author: Mohit Agarwal. # Send bug reports and any other correspondence to bug-texinfo@gnu.org. # # The latest version of this script, and the companion template, is # available from Texinfo CVS: # http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs.sh # http://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/util/gendocs_template # # An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib). # TODO: # - image importation was only implemented for HTML generated by # makeinfo. But it should be simple enough to adjust. # - images are not imported in the source tarball. All the needed # formats (PDF, PNG, etc.) should be included. prog=`basename "$0"` srcdir=`pwd` scripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh" templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template" : ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} : ${MAKEINFO="makeinfo"} : ${TEXI2DVI="texi2dvi -t @finalout"} : ${DOCBOOK2HTML="docbook2html"} : ${DOCBOOK2PDF="docbook2pdf"} : ${DOCBOOK2TXT="docbook2txt"} : ${GENDOCS_TEMPLATE_DIR="."} : ${PERL='perl'} : ${TEXI2HTML="texi2html"} unset CDPATH unset use_texi2html version="gendocs.sh $scriptversion Copyright 2013 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING." usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE Generate output in various formats from PACKAGE.texinfo (or .texi or .txi) source. See the GNU Maintainers document for a more extensive discussion: http://www.gnu.org/prep/maintain_toc.html Options: --email ADR use ADR as contact in generated web pages; always give this. -s SRCFILE read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi} -o OUTDIR write files into OUTDIR, instead of manual/. -I DIR append DIR to the Texinfo search path. --common ARG pass ARG in all invocations. --html ARG pass ARG to makeinfo or texi2html for HTML targets. --info ARG pass ARG to makeinfo for Info, instead of --no-split. --no-ascii skip generating the plain text output. --source ARG include ARG in tar archive of sources. --split HOW make split HTML by node, section, chapter; default node. --texi2html use texi2html to make HTML target, with all split versions. --docbook convert through DocBook too (xml, txt, html, pdf). --help display this help and exit successfully. --version display version information and exit successfully. Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\" Typical sequence: cd PACKAGESOURCE/doc wget \"$scripturl\" wget \"$templateurl\" $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\" Output will be in a new subdirectory \"manual\" (by default; use -o OUTDIR to override). Move all the new files into your web CVS tree, as explained in the Web Pages node of maintain.texi. Please use the --email ADDRESS option so your own bug-reporting address will be used in the generated HTML pages. MANUAL-TITLE is included as part of the HTML of the overall manual/index.html file. It should include the name of the package being documented. manual/index.html is created by substitution from the file $GENDOCS_TEMPLATE_DIR/gendocs_template. (Feel free to modify the generic template for your own purposes.) If you have several manuals, you'll need to run this script several times with different MANUAL values, specifying a different output directory with -o each time. Then write (by hand) an overall index.html with links to them all. If a manual's Texinfo sources are spread across several directories, first copy or symlink all Texinfo sources into a single directory. (Part of the script's work is to make a tar.gz of the sources.) As implied above, by default monolithic Info files are generated. If you want split Info, or other Info options, use --info to override. You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, and PERL to control the programs that get executed, and GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is looked for. With --docbook, the environment variables DOCBOOK2HTML, DOCBOOK2PDF, and DOCBOOK2TXT are also consulted. By default, makeinfo and texi2dvi are run in the default (English) locale, since that's the language of most Texinfo manuals. If you happen to have a non-English manual and non-English web site, see the SETLANG setting in the source. Email bug reports or enhancement requests to bug-texinfo@gnu.org. " MANUAL_TITLE= PACKAGE= EMAIL=webmasters@gnu.org # please override with --email commonarg= # passed to all makeinfo/texi2html invcations. dirargs= # passed to all tools (-I dir). dirs= # -I's directories. htmlarg= infoarg=--no-split generate_ascii=true outdir=manual source_extra= split=node srcfile= while test $# -gt 0; do case $1 in -s) shift; srcfile=$1;; -o) shift; outdir=$1;; -I) shift; dirargs="$dirargs -I '$1'"; dirs="$dirs $1";; --common) shift; commonarg=$1;; --docbook) docbook=yes;; --email) shift; EMAIL=$1;; --html) shift; htmlarg=$1;; --info) shift; infoarg=$1;; --no-ascii) generate_ascii=false;; --source) shift; source_extra=$1;; --split) shift; split=$1;; --texi2html) use_texi2html=1;; --help) echo "$usage"; exit 0;; --version) echo "$version"; exit 0;; -*) echo "$0: Unknown option \`$1'." >&2 echo "$0: Try \`--help' for more information." >&2 exit 1;; *) if test -z "$PACKAGE"; then PACKAGE=$1 elif test -z "$MANUAL_TITLE"; then MANUAL_TITLE=$1 else echo "$0: extra non-option argument \`$1'." >&2 exit 1 fi;; esac shift done # makeinfo uses the dirargs, but texi2dvi doesn't. commonarg=" $dirargs $commonarg" # For most of the following, the base name is just $PACKAGE base=$PACKAGE if test -n "$srcfile"; then # but here, we use the basename of $srcfile base=`basename "$srcfile"` case $base in *.txi|*.texi|*.texinfo) base=`echo "$base"|sed 's/\.[texinfo]*$//'`;; esac PACKAGE=$base elif test -s "$srcdir/$PACKAGE.texinfo"; then srcfile=$srcdir/$PACKAGE.texinfo elif test -s "$srcdir/$PACKAGE.texi"; then srcfile=$srcdir/$PACKAGE.texi elif test -s "$srcdir/$PACKAGE.txi"; then srcfile=$srcdir/$PACKAGE.txi else echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2 exit 1 fi if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2 echo "$0: it is available from $templateurl." >&2 exit 1 fi # Function to return size of $1 in something resembling kilobytes. calcsize() { size=`ls -ksl $1 | awk '{print $1}'` echo $size } # copy_images OUTDIR HTML-FILE... # ------------------------------- # Copy all the images needed by the HTML-FILEs into OUTDIR. Look # for them in the -I directories. copy_images() { local odir odir=$1 shift $PERL -n -e " BEGIN { \$me = '$prog'; \$odir = '$odir'; @dirs = qw($dirs); } " -e ' /<img src="(.*?)"/g && ++$need{$1}; END { #print "$me: @{[keys %need]}\n"; # for debugging, show images found. FILE: for my $f (keys %need) { for my $d (@dirs) { if (-f "$d/$f") { use File::Basename; my $dest = dirname ("$odir/$f"); # use File::Path; -d $dest || mkpath ($dest) || die "$me: cannot mkdir $dest: $!\n"; # use File::Copy; copy ("$d/$f", $dest) || die "$me: cannot copy $d/$f to $dest: $!\n"; next FILE; } } die "$me: $ARGV: cannot find image $f\n"; } } ' -- "$@" || exit 1 } case $outdir in /*) abs_outdir=$outdir;; *) abs_outdir=$srcdir/$outdir;; esac echo "Making output for $srcfile" echo " in `pwd`" mkdir -p "$outdir/" cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\"" echo "Generating info... ($cmd)" eval "$cmd" tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info* ls -l "$outdir/$PACKAGE.info.tar.gz" info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"` # do not mv the info files, there's no point in having them available # separately on the web. cmd="$SETLANG $TEXI2DVI $dirargs \"$srcfile\"" printf "\nGenerating dvi... ($cmd)\n" eval "$cmd" # compress/finish dvi: gzip -f -9 $PACKAGE.dvi dvi_gz_size=`calcsize $PACKAGE.dvi.gz` mv $PACKAGE.dvi.gz "$outdir/" ls -l "$outdir/$PACKAGE.dvi.gz" cmd="$SETLANG $TEXI2DVI --pdf $dirargs \"$srcfile\"" printf "\nGenerating pdf... ($cmd)\n" eval "$cmd" pdf_size=`calcsize $PACKAGE.pdf` mv $PACKAGE.pdf "$outdir/" ls -l "$outdir/$PACKAGE.pdf" if $generate_ascii; then opt="-o $PACKAGE.txt --no-split --no-headers $commonarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" printf "\nGenerating ascii... ($cmd)\n" eval "$cmd" ascii_size=`calcsize $PACKAGE.txt` gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz" ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"` mv $PACKAGE.txt "$outdir/" ls -l "$outdir/$PACKAGE.txt" "$outdir/$PACKAGE.txt.gz" fi # Split HTML at level $1. Used for texi2html. html_split() { opt="--split=$1 --node-files $commonarg $htmlarg" cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\"" printf "\nGenerating html by $1... ($cmd)\n" eval "$cmd" split_html_dir=$PACKAGE.html ( cd ${split_html_dir} || exit 1 ln -sf ${PACKAGE}.html index.html tar -czf "$abs_outdir/${PACKAGE}.html_$1.tar.gz" -- *.html ) eval html_$1_tgz_size=`calcsize "$outdir/${PACKAGE}.html_$1.tar.gz"` rm -f "$outdir"/html_$1/*.html mkdir -p "$outdir/html_$1/" mv ${split_html_dir}/*.html "$outdir/html_$1/" rmdir ${split_html_dir} } if test -z "$use_texi2html"; then opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" printf "\nGenerating monolithic html... ($cmd)\n" rm -rf $PACKAGE.html # in case a directory is left over eval "$cmd" html_mono_size=`calcsize $PACKAGE.html` gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` copy_images "$outdir/" $PACKAGE.html mv $PACKAGE.html "$outdir/" ls -l "$outdir/$PACKAGE.html" "$outdir/$PACKAGE.html.gz" # Before Texinfo 5.0, makeinfo did not accept a --split=HOW option, # it just always split by node. So if we're splitting by node anyway, # leave it out. if test "x$split" = xnode; then split_arg= else split_arg=--split=$split fi # opt="--html -o $PACKAGE.html $split_arg $commonarg $htmlarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" printf "\nGenerating html by $split... ($cmd)\n" eval "$cmd" split_html_dir=$PACKAGE.html copy_images $split_html_dir/ $split_html_dir/*.html ( cd $split_html_dir || exit 1 tar -czf "$abs_outdir/$PACKAGE.html_$split.tar.gz" -- * ) eval \ html_${split}_tgz_size=`calcsize "$outdir/$PACKAGE.html_$split.tar.gz"` rm -rf "$outdir/html_$split/" mv $split_html_dir "$outdir/html_$split/" du -s "$outdir/html_$split/" ls -l "$outdir/$PACKAGE.html_$split.tar.gz" else # use texi2html: opt="--output $PACKAGE.html $commonarg $htmlarg" cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\"" printf "\nGenerating monolithic html with texi2html... ($cmd)\n" rm -rf $PACKAGE.html # in case a directory is left over eval "$cmd" html_mono_size=`calcsize $PACKAGE.html` gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` mv $PACKAGE.html "$outdir/" html_split node html_split chapter html_split section fi printf "\nMaking .tar.gz for sources...\n" d=`dirname $srcfile` ( cd "$d" srcfiles=`ls -d *.texinfo *.texi *.txi *.eps $source_extra 2>/dev/null` || true tar czfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles ls -l "$abs_outdir/$PACKAGE.texi.tar.gz" ) texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"` if test -n "$docbook"; then opt="-o - --docbook $commonarg" cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml" printf "\nGenerating docbook XML... ($cmd)\n" eval "$cmd" docbook_xml_size=`calcsize $PACKAGE-db.xml` gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz" docbook_xml_gz_size=`calcsize "$outdir/$PACKAGE-db.xml.gz"` mv $PACKAGE-db.xml "$outdir/" split_html_db_dir=html_node_db opt="$commonarg -o $split_html_db_dir" cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\"" printf "\nGenerating docbook HTML... ($cmd)\n" eval "$cmd" ( cd ${split_html_db_dir} || exit 1 tar -czf "$abs_outdir/${PACKAGE}.html_node_db.tar.gz" -- *.html ) html_node_db_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node_db.tar.gz"` rm -f "$outdir"/html_node_db/*.html mkdir -p "$outdir/html_node_db" mv ${split_html_db_dir}/*.html "$outdir/html_node_db/" rmdir ${split_html_db_dir} cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\"" printf "\nGenerating docbook ASCII... ($cmd)\n" eval "$cmd" docbook_ascii_size=`calcsize $PACKAGE-db.txt` mv $PACKAGE-db.txt "$outdir/" cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\"" printf "\nGenerating docbook PDF... ($cmd)\n" eval "$cmd" docbook_pdf_size=`calcsize $PACKAGE-db.pdf` mv $PACKAGE-db.pdf "$outdir/" fi printf "\nMaking index file...\n" if test -z "$use_texi2html"; then CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\ /%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d" else # should take account of --split here. CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" fi curdate=`$SETLANG date '+%B %d, %Y'` sed \ -e "s!%%TITLE%%!$MANUAL_TITLE!g" \ -e "s!%%EMAIL%%!$EMAIL!g" \ -e "s!%%PACKAGE%%!$PACKAGE!g" \ -e "s!%%DATE%%!$curdate!g" \ -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \ -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \ -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \ -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \ -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \ -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \ -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \ -e "s!%%PDF_SIZE%%!$pdf_size!g" \ -e "s!%%ASCII_SIZE%%!$ascii_size!g" \ -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \ -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \ -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \ -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \ -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \ -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \ -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \ -e "s,%%SCRIPTURL%%,$scripturl,g" \ -e "s!%%SCRIPTNAME%%!$prog!g" \ -e "$CONDS" \ $GENDOCS_TEMPLATE_DIR/gendocs_template >"$outdir/index.html" echo "Done, see $outdir/ subdirectory for new files." # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/build-aux/install-sh�������������������������������������������������������������������0000755�0000000�0000000�00000033255�12244721750�013676� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/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. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/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. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 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: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/build-aux/missing����������������������������������������������������������������������0000755�0000000�0000000�00000015331�12244721750�013264� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2012-06-26.16; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 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 <http://www.gnu.org/licenses/>. # 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 <bug-automake@gnu.org>." 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 'automa4te' 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: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/�����������������������������������������������������������������������������������0000775�0000000�0000000�00000000000�12244722065�010617� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/asn1Decoding.1���������������������������������������������������������������������0000664�0000000�0000000�00000002424�12244722001�013110� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.43.3. .TH ASN1DECODING "1" "November 2013" "asn1Decoding (libtasn1) 3.4" "User Commands" .SH NAME asn1Decoding \- ASN.1 DER decoder .SH SYNOPSIS .B asn1Decoding [\fIOPTION\fR] \fIDEFINITIONS ENCODED ASN1TYPE\fR .SH DESCRIPTION Decodes DER data in ENCODED file, for the ASN1TYPE element described in ASN.1 DEFINITIONS file, and print decoded structures. .TP \fB\-h\fR, \fB\-\-help\fR display this help and exit .TP \fB\-v\fR, \fB\-\-version\fR output version information and exit .SH AUTHOR Written by Fabio Fiorina. .SH "REPORTING BUGS" Report bugs to: help\-libtasn1@gnu.org .br GNU Libtasn1 home page: <http://www.gnu.org/software/libtasn1/> .br General help using GNU software: <http://www.gnu.org/gethelp/> .SH COPYRIGHT Copyright \(co 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. .br This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B asn1Decoding is maintained as a Texinfo manual. If the .B info and .B asn1Decoding programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/������������������������������������������������������������������������������0000775�0000000�0000000�00000000000�12244722065�011570� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/gstr.c.texi�������������������������������������������������������������������0000664�0000000�0000000�00000000000�12244721011�013557� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/element.c.texi����������������������������������������������������������������0000664�0000000�0000000�00000023510�12244721011�014244� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_write_value @anchor{asn1_write_value} @deftypefun {int} {asn1_write_value} (asn1_node @var{node_root}, const char * @var{name}, const void * @var{ivalue}, int @var{len}) @var{node_root}: pointer to a structure @var{name}: the name of the element inside the structure that you want to set. @var{ivalue}: vector used to specify the value to set. If len is >0, VALUE must be a two's complement form integer. if len=0 *VALUE must be a null terminated string with an integer value. @var{len}: number of bytes of *value to use to set the value: value[0]..value[len-1] or 0 if value is a null terminated string Set the value of one element inside a structure. If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0); Description for each type: @strong{INTEGER:} VALUE must contain a two's complement form integer. value[0]=0xFF , len=1 -> integer=-1. value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. value[0]=0x01 , len=1 -> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. value="123" , len=0 -> integer= 123. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0. value="TRUE" , len=1 -> boolean=TRUE. value="FALSE" , len=1 -> boolean=FALSE. OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha. @strong{UTCTime:} VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0. value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time @strong{GeneralizedTime:} VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0 value="2001010112001.12-0700" , len=1 -> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time OCTET STRING: VALUE contains the octet string and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes octet string @strong{GeneralString:} VALUE contains the generalstring and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes generalstring BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits. value="$\backslash$xCF" , len=6 -> bit string="110011" (six bits) @strong{CHOICE:} if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1); @strong{ANY:} VALUE indicates the der encoding of a structure. LEN != 0. SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it's the first one, "?2" for the second and so on. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); SET OF: the same as SEQUENCE OF. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); @strong{Returns:} @code{ASN1_SUCCESS} if the value was set, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, and @code{ASN1_VALUE_NOT_VALID} if @code{ivalue} has a wrong format. @end deftypefun @subheading asn1_read_value @anchor{asn1_read_value} @deftypefun {int} {asn1_read_value} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @var{ivalue}: vector that will contain the element's content, must be a pointer to memory cells already allocated. @var{len}: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. Returns the value of one element inside a structure. If an element is OPTIONAL and the function "read_value" returns @code{ASN1_ELEMENT_NOT_FOUND} , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. @strong{INTEGER:} VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 @strong{UTCTime:} VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. @strong{GeneralizedTime:} VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. @strong{GeneralString:} VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. @strong{CHOICE:} If NAME indicates a choice type, VALUE will specify the alternative selected. @strong{ANY:} If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. @strong{Returns:} @code{ASN1_SUCCESS} if value is returned, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there isn't any value for the element selected, and @code{ASN1_MEM_ERROR} if The value vector isn't big enough to store the result, and in this case @code{len} will contain the number of bytes needed. @end deftypefun @subheading asn1_read_value_type @anchor{asn1_read_value_type} @deftypefun {int} {asn1_read_value_type} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}, unsigned int * @var{etype}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @var{ivalue}: vector that will contain the element's content, must be a pointer to memory cells already allocated. @var{len}: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. @var{etype}: The type of the value read (ASN1_ETYPE) Returns the value of one element inside a structure. If an element is OPTIONAL and the function "read_value" returns @code{ASN1_ELEMENT_NOT_FOUND} , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. @strong{INTEGER:} VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 @strong{UTCTime:} VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. @strong{GeneralizedTime:} VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. @strong{GeneralString:} VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. @strong{CHOICE:} If NAME indicates a choice type, VALUE will specify the alternative selected. @strong{ANY:} If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. @strong{Returns:} @code{ASN1_SUCCESS} if value is returned, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there isn't any value for the element selected, and @code{ASN1_MEM_ERROR} if The value vector isn't big enough to store the result, and in this case @code{len} will contain the number of bytes needed. @end deftypefun @subheading asn1_read_tag @anchor{asn1_read_tag} @deftypefun {int} {asn1_read_tag} (asn1_node @var{root}, const char * @var{name}, int * @var{tagValue}, int * @var{classValue}) @var{root}: pointer to a structure @var{name}: the name of the element inside a structure. @var{tagValue}: variable that will contain the TAG value. @var{classValue}: variable that will specify the TAG type. Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: @code{ASN1_CLASS_APPLICATION} , @code{ASN1_CLASS_UNIVERSAL} , @code{ASN1_CLASS_PRIVATE} or @code{ASN1_CLASS_CONTEXT_SPECIFIC} . @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element. @end deftypefun @subheading asn1_read_node_value @anchor{asn1_read_node_value} @deftypefun {int} {asn1_read_node_value} (asn1_node @var{node}, asn1_data_node_st * @var{data}) @var{node}: pointer to a node. @var{data}: a point to a asn1_data_node_st Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values. @strong{Returns:} @code{ASN1_SUCCESS} if the node exists. @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_read_node_value.texi�����������������������������������������������������0000664�0000000�0000000�00000000654�12244721010�016433� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_read_node_value @anchor{asn1_read_node_value} @deftypefun {int} {asn1_read_node_value} (asn1_node @var{node}, asn1_data_node_st * @var{data}) @var{node}: pointer to a node. @var{data}: a point to a asn1_data_node_st Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values. @strong{Returns:} @code{ASN1_SUCCESS} if the node exists. @end deftypefun ������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_array2tree.texi����������������������������������������������������������0000664�0000000�0000000�00000001614�12244721010�015374� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_array2tree @anchor{asn1_array2tree} @deftypefun {int} {asn1_array2tree} (const asn1_static_node * @var{array}, asn1_node * @var{definitions}, char * @var{errorDescription}) @var{array}: specify the array that contains ASN.1 declarations @var{definitions}: return the pointer to the structure created by *ARRAY ASN.1 declarations @var{errorDescription}: return the error description. Creates the structures needed to manage the ASN.1 definitions. @code{array} is a vector created by @code{asn1_parser2array()} . @strong{Returns:} @code{ASN1_SUCCESS} if structure was created correctly, @code{ASN1_ELEMENT_NOT_EMPTY} if * @code{definitions} not NULL, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined (see @code{errorDescription} for more information), @code{ASN1_ARRAY_ERROR} if the array pointed by @code{array} is wrong. @end deftypefun ��������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_strerror.texi������������������������������������������������������������0000664�0000000�0000000�00000000725�12244721007�015206� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_strerror @anchor{asn1_strerror} @deftypefun {const char *} {asn1_strerror} (int @var{error}) @var{error}: is an error returned by a libtasn1 function. Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function. @strong{Returns:} Pointer to static zero-terminated string describing error code. @strong{Since:} 1.6 @end deftypefun �������������������������������������������libtasn1-3.4/doc/texi/ASN1.c.texi�������������������������������������������������������������������0000664�0000000�0000000�00000004715�12244721011�013323� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_parser2tree @anchor{asn1_parser2tree} @deftypefun {int} {asn1_parser2tree} (const char * @var{file}, asn1_node * @var{definitions}, char * @var{error_desc}) @var{file}: specify the path and the name of file that contains ASN.1 declarations. @var{definitions}: return the pointer to the structure created from "file" ASN.1 declarations. @var{error_desc}: return the error description or an empty string if success. Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in @code{file} file. @strong{Returns:} @code{ASN1_SUCCESS} if the file has a correct syntax and every identifier is known, @code{ASN1_ELEMENT_NOT_EMPTY} if @code{definitions} not @code{NULL} , @code{ASN1_FILE_NOT_FOUND} if an error occured while opening @code{file} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun @subheading asn1_parser2array @anchor{asn1_parser2array} @deftypefun {int} {asn1_parser2array} (const char * @var{inputFileName}, const char * @var{outputFileName}, const char * @var{vectorName}, char * @var{error_desc}) @var{inputFileName}: specify the path and the name of file that contains ASN.1 declarations. @var{outputFileName}: specify the path and the name of file that will contain the C vector definition. @var{vectorName}: specify the name of the C vector. @var{error_desc}: return the error description or an empty string if success. Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in @code{inputFileName} file. If @code{inputFileName} is "/aa/bb/xx.yy" and @code{outputFileName} is @code{NULL} , the file created is "/aa/bb/xx_asn1_tab.c". If @code{vectorName} is @code{NULL} the vector name will be "xx_asn1_tab". @strong{Returns:} @code{ASN1_SUCCESS} if the file has a correct syntax and every identifier is known, @code{ASN1_FILE_NOT_FOUND} if an error occured while opening @code{inputFileName} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun ���������������������������������������������������libtasn1-3.4/doc/texi/coding.c.texi�����������������������������������������������������������������0000664�0000000�0000000�00000010270�12244721011�014055� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_length_der @anchor{asn1_length_der} @deftypefun {void} {asn1_length_der} (unsigned long int @var{len}, unsigned char * @var{der}, int * @var{der_len}) @var{len}: value to convert. @var{der}: buffer to hold the returned encoding (may be @code{NULL} ). @var{der_len}: number of meaningful bytes of ANS (der[0]..der[der_len-1]). Creates the DER encoding of the provided length value. The @code{der} buffer must have enough room for the output. The maximum length this function will encode is @code{ASN1_MAX_LENGTH_SIZE} . To know the size of the DER encoding use a @code{NULL} value for @code{der} . @end deftypefun @subheading asn1_octet_der @anchor{asn1_octet_der} @deftypefun {void} {asn1_octet_der} (const unsigned char * @var{str}, int @var{str_len}, unsigned char * @var{der}, int * @var{der_len}) @var{str}: the input data. @var{str_len}: STR length (str[0]..str[*str_len-1]). @var{der}: encoded string returned. @var{der_len}: number of meaningful bytes of DER (der[0]..der[der_len-1]). Creates a length-value DER encoding for the input data. The DER encoding of the input data will be placed in the @code{der} variable. Note that the OCTET STRING tag is not included in the output. This function does not return any value because it is expected that @code{der_len} will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using @code{asn1_length_der()} . @end deftypefun @subheading asn1_encode_simple_der @anchor{asn1_encode_simple_der} @deftypefun {int} {asn1_encode_simple_der} (unsigned int @var{etype}, const unsigned char * @var{str}, unsigned int @var{str_len}, unsigned char * @var{tl}, unsigned int * @var{tl_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{str}: the string data. @var{str_len}: the string length @var{tl}: the encoded tag and length @var{tl_len}: the bytes of the @code{tl} field Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in @code{tl} , which should have space for at least @code{ASN1_MAX_TL_SIZE} bytes. Initially @code{tl_len} should contain the size of @code{tl} . The complete DER encoding should consist of the value in @code{tl} appended with the provided @code{str} . @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun @subheading asn1_bit_der @anchor{asn1_bit_der} @deftypefun {void} {asn1_bit_der} (const unsigned char * @var{str}, int @var{bit_len}, unsigned char * @var{der}, int * @var{der_len}) @var{str}: BIT string. @var{bit_len}: number of meaningful bits in STR. @var{der}: string returned. @var{der_len}: number of meaningful bytes of DER (der[0]..der[ans_len-1]). Creates a length-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in @code{der} . Note that the BIT STRING tag is not included in the output. This function does not return any value because it is expected that @code{der_len} will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using @code{asn1_length_der()} . @end deftypefun @subheading asn1_der_coding @anchor{asn1_der_coding} @deftypefun {int} {asn1_der_coding} (asn1_node @var{element}, const char * @var{name}, void * @var{ider}, int * @var{len}, char * @var{ErrorDescription}) @var{element}: pointer to an ASN1 element @var{name}: the name of the structure you want to encode (it must be inside *POINTER). @var{ider}: vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated. @var{len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1], Initialy holds the sizeof of der vector. @var{ErrorDescription}: return the error description or an empty string if success. Creates the DER encoding for the NAME structure (inside *POINTER structure). @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there is an element without a value, @code{ASN1_MEM_ERROR} if the @code{ider} vector isn't big enough and in this case @code{len} will contain the length needed. @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_bit_der.texi�������������������������������������������������������������0000664�0000000�0000000�00000001454�12244721010�014726� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_bit_der @anchor{asn1_bit_der} @deftypefun {void} {asn1_bit_der} (const unsigned char * @var{str}, int @var{bit_len}, unsigned char * @var{der}, int * @var{der_len}) @var{str}: BIT string. @var{bit_len}: number of meaningful bits in STR. @var{der}: string returned. @var{der_len}: number of meaningful bytes of DER (der[0]..der[ans_len-1]). Creates a length-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in @code{der} . Note that the BIT STRING tag is not included in the output. This function does not return any value because it is expected that @code{der_len} will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using @code{asn1_length_der()} . @end deftypefun ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_expand_octet_string.texi�������������������������������������������������0000664�0000000�0000000�00000002024�12244721007�017361� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_expand_octet_string @anchor{asn1_expand_octet_string} @deftypefun {int} {asn1_expand_octet_string} (asn1_node @var{definitions}, asn1_node * @var{element}, const char * @var{octetName}, const char * @var{objectName}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure @var{octetName}: name of the OCTECT STRING field to expand. @var{objectName}: name of the OBJECT IDENTIFIER field to use to define the type for expansion. Expands an "OCTET STRING" element of a structure created from a DER decoding process (the @code{asn1_der_decoding()} function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. @strong{Returns:} @code{ASN1_SUCCESS} if substitution OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{objectName} or @code{octetName} are not correct, @code{ASN1_VALUE_NOT_VALID} if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding. @end deftypefun ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_create_element.texi������������������������������������������������������0000664�0000000�0000000�00000001271�12244721010�016267� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_create_element @anchor{asn1_create_element} @deftypefun {int} {asn1_create_element} (asn1_node @var{definitions}, const char * @var{source_name}, asn1_node * @var{element}) @var{definitions}: pointer to the structure returned by "parser_asn1" function @var{source_name}: the name of the type of the new structure (must be inside p_structure). @var{element}: pointer to the structure created. Creates a structure of type @code{source_name} . Example using "pkix.asn": rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); @strong{Returns:} @code{ASN1_SUCCESS} if creation OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{source_name} is not known. @end deftypefun ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_parser2array.texi��������������������������������������������������������0000664�0000000�0000000�00000002574�12244721011�015740� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_parser2array @anchor{asn1_parser2array} @deftypefun {int} {asn1_parser2array} (const char * @var{inputFileName}, const char * @var{outputFileName}, const char * @var{vectorName}, char * @var{error_desc}) @var{inputFileName}: specify the path and the name of file that contains ASN.1 declarations. @var{outputFileName}: specify the path and the name of file that will contain the C vector definition. @var{vectorName}: specify the name of the C vector. @var{error_desc}: return the error description or an empty string if success. Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in @code{inputFileName} file. If @code{inputFileName} is "/aa/bb/xx.yy" and @code{outputFileName} is @code{NULL} , the file created is "/aa/bb/xx_asn1_tab.c". If @code{vectorName} is @code{NULL} the vector name will be "xx_asn1_tab". @strong{Returns:} @code{ASN1_SUCCESS} if the file has a correct syntax and every identifier is known, @code{ASN1_FILE_NOT_FOUND} if an error occured while opening @code{inputFileName} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun ������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_der_decoding_element.texi������������������������������������������������0000664�0000000�0000000�00000002321�12244721007�017435� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_der_decoding_element @anchor{asn1_der_decoding_element} @deftypefun {int} {asn1_der_decoding_element} (asn1_node * @var{structure}, const char * @var{elementName}, const void * @var{ider}, int @var{len}, char * @var{errorDescription}) @var{structure}: pointer to an ASN1 structure @var{elementName}: name of the element to fill @var{ider}: vector that contains the DER encoding of the whole structure. @var{len}: number of bytes of *der: der[0]..der[len-1] @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the element named @code{ELEMENTNAME} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . The DER vector must contain the encoding string of the whole @code{STRUCTURE} . If an error occurs during the decoding procedure, the * @code{STRUCTURE} is deleted and set equal to @code{NULL} . @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if ELEMENT is @code{NULL} or @code{elementName} == NULL, and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure @code{structure} (*ELEMENT deleted). @end deftypefun ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_der_decoding_startEnd.texi�����������������������������������������������0000664�0000000�0000000�00000002472�12244721007�017577� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_der_decoding_startEnd @anchor{asn1_der_decoding_startEnd} @deftypefun {int} {asn1_der_decoding_startEnd} (asn1_node @var{element}, const void * @var{ider}, int @var{len}, const char * @var{name_element}, int * @var{start}, int * @var{end}) @var{element}: pointer to an ASN1 element @var{ider}: vector that contains the DER encoding. @var{len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1] @var{name_element}: an element of NAME structure. @var{start}: the position of the first byte of NAME_ELEMENT decoding ( @code{ider} [*start]) @var{end}: the position of the last byte of NAME_ELEMENT decoding ( @code{ider} [*end]) Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function @code{asn1_der_decoding()} to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure. One example is the sequence "tbsCertificate" inside an X509 certificate. @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if ELEMENT is @code{asn1_node} EMPTY or @code{name_element} is not a valid element, @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure ELEMENT. @end deftypefun ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/decoding.c.texi���������������������������������������������������������������0000664�0000000�0000000�00000022405�12244721011�014371� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_get_length_der @anchor{asn1_get_length_der} @deftypefun {long} {asn1_get_length_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{len}) @var{der}: DER data to decode. @var{der_len}: Length of DER data to decode. @var{len}: Output variable containing the length of the DER length field. Extract a length field from DER data. @strong{Returns:} Return the decoded length value, or -1 on indefinite length, or -2 when the value was too big to fit in a int, or -4 when the decoded length value plus @code{len} would exceed @code{der_len} . @end deftypefun @subheading asn1_get_tag_der @anchor{asn1_get_tag_der} @deftypefun {int} {asn1_get_tag_der} (const unsigned char * @var{der}, int @var{der_len}, unsigned char * @var{cls}, int * @var{len}, unsigned long * @var{tag}) @var{der}: DER data to decode. @var{der_len}: Length of DER data to decode. @var{cls}: Output variable containing decoded class. @var{len}: Output variable containing the length of the DER TAG data. @var{tag}: Output variable containing the decoded tag. Decode the class and TAG from DER code. @strong{Returns:} Returns @code{ASN1_SUCCESS} on success, or an error. @end deftypefun @subheading asn1_get_length_ber @anchor{asn1_get_length_ber} @deftypefun {long} {asn1_get_length_ber} (const unsigned char * @var{ber}, int @var{ber_len}, int * @var{len}) @var{ber}: BER data to decode. @var{ber_len}: Length of BER data to decode. @var{len}: Output variable containing the length of the BER length field. Extract a length field from BER data. The difference to @code{asn1_get_length_der()} is that this function will return a length even if the value has indefinite encoding. @strong{Returns:} Return the decoded length value, or negative value when the value was too big. @strong{Since:} 2.0 @end deftypefun @subheading asn1_get_octet_der @anchor{asn1_get_octet_der} @deftypefun {int} {asn1_get_octet_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, unsigned char * @var{str}, int @var{str_size}, int * @var{str_len}) @var{der}: DER data to decode containing the OCTET SEQUENCE. @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put decoded OCTET SEQUENCE in. @var{str_size}: Length of pre-allocated output buffer. @var{str_len}: Output variable containing the length of the OCTET SEQUENCE. Extract an OCTET SEQUENCE from DER data. @strong{Returns:} Returns @code{ASN1_SUCCESS} on success, or an error. @end deftypefun @subheading asn1_get_bit_der @anchor{asn1_get_bit_der} @deftypefun {int} {asn1_get_bit_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, unsigned char * @var{str}, int @var{str_size}, int * @var{bit_len}) @var{der}: DER data to decode containing the BIT SEQUENCE. @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put decoded BIT SEQUENCE in. @var{str_size}: Length of pre-allocated output buffer. @var{bit_len}: Output variable containing the size of the BIT SEQUENCE. Extract a BIT SEQUENCE from DER data. @strong{Returns:} Return @code{ASN1_SUCCESS} on success, or an error. @end deftypefun @subheading asn1_der_decoding @anchor{asn1_der_decoding} @deftypefun {int} {asn1_der_decoding} (asn1_node * @var{element}, const void * @var{ider}, int @var{len}, char * @var{errorDescription}) @var{element}: pointer to an ASN1 structure. @var{ider}: vector that contains the DER encoding. @var{len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1]. @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the structure * @code{ELEMENT} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . If an error occurs during the decoding procedure, the * @code{ELEMENT} is deleted and set equal to @code{NULL} . @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{ELEMENT} is @code{NULL} , and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure name (* @code{ELEMENT} deleted). @end deftypefun @subheading asn1_der_decoding_element @anchor{asn1_der_decoding_element} @deftypefun {int} {asn1_der_decoding_element} (asn1_node * @var{structure}, const char * @var{elementName}, const void * @var{ider}, int @var{len}, char * @var{errorDescription}) @var{structure}: pointer to an ASN1 structure @var{elementName}: name of the element to fill @var{ider}: vector that contains the DER encoding of the whole structure. @var{len}: number of bytes of *der: der[0]..der[len-1] @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the element named @code{ELEMENTNAME} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . The DER vector must contain the encoding string of the whole @code{STRUCTURE} . If an error occurs during the decoding procedure, the * @code{STRUCTURE} is deleted and set equal to @code{NULL} . @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if ELEMENT is @code{NULL} or @code{elementName} == NULL, and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure @code{structure} (*ELEMENT deleted). @end deftypefun @subheading asn1_der_decoding_startEnd @anchor{asn1_der_decoding_startEnd} @deftypefun {int} {asn1_der_decoding_startEnd} (asn1_node @var{element}, const void * @var{ider}, int @var{len}, const char * @var{name_element}, int * @var{start}, int * @var{end}) @var{element}: pointer to an ASN1 element @var{ider}: vector that contains the DER encoding. @var{len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1] @var{name_element}: an element of NAME structure. @var{start}: the position of the first byte of NAME_ELEMENT decoding ( @code{ider} [*start]) @var{end}: the position of the last byte of NAME_ELEMENT decoding ( @code{ider} [*end]) Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function @code{asn1_der_decoding()} to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure. One example is the sequence "tbsCertificate" inside an X509 certificate. @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if ELEMENT is @code{asn1_node} EMPTY or @code{name_element} is not a valid element, @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure ELEMENT. @end deftypefun @subheading asn1_expand_any_defined_by @anchor{asn1_expand_any_defined_by} @deftypefun {int} {asn1_expand_any_defined_by} (asn1_node @var{definitions}, asn1_node * @var{element}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER. @strong{Returns:} @code{ASN1_SUCCESS} if Substitution OK, @code{ASN1_ERROR_TYPE_ANY} if some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID -> TYPE association, or other error codes depending on DER decoding. @end deftypefun @subheading asn1_expand_octet_string @anchor{asn1_expand_octet_string} @deftypefun {int} {asn1_expand_octet_string} (asn1_node @var{definitions}, asn1_node * @var{element}, const char * @var{octetName}, const char * @var{objectName}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure @var{octetName}: name of the OCTECT STRING field to expand. @var{objectName}: name of the OBJECT IDENTIFIER field to use to define the type for expansion. Expands an "OCTET STRING" element of a structure created from a DER decoding process (the @code{asn1_der_decoding()} function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. @strong{Returns:} @code{ASN1_SUCCESS} if substitution OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{objectName} or @code{octetName} are not correct, @code{ASN1_VALUE_NOT_VALID} if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding. @end deftypefun @subheading asn1_decode_simple_der @anchor{asn1_decode_simple_der} @deftypefun {int} {asn1_decode_simple_der} (unsigned int @var{etype}, const unsigned char * @var{der}, unsigned int @var{der_len}, const unsigned char ** @var{str}, unsigned int * @var{str_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{der}: the encoded string @var{der_len}: the bytes of the encoded string @var{str}: a pointer to the data @var{str_len}: the length of the data Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the @code{der} . @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/structure.c.texi��������������������������������������������������������������0000664�0000000�0000000�00000012517�12244721011�014660� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_array2tree @anchor{asn1_array2tree} @deftypefun {int} {asn1_array2tree} (const asn1_static_node * @var{array}, asn1_node * @var{definitions}, char * @var{errorDescription}) @var{array}: specify the array that contains ASN.1 declarations @var{definitions}: return the pointer to the structure created by *ARRAY ASN.1 declarations @var{errorDescription}: return the error description. Creates the structures needed to manage the ASN.1 definitions. @code{array} is a vector created by @code{asn1_parser2array()} . @strong{Returns:} @code{ASN1_SUCCESS} if structure was created correctly, @code{ASN1_ELEMENT_NOT_EMPTY} if * @code{definitions} not NULL, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined (see @code{errorDescription} for more information), @code{ASN1_ARRAY_ERROR} if the array pointed by @code{array} is wrong. @end deftypefun @subheading asn1_delete_structure @anchor{asn1_delete_structure} @deftypefun {int} {asn1_delete_structure} (asn1_node * @var{structure}) @var{structure}: pointer to the structure that you want to delete. Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun @subheading asn1_delete_structure2 @anchor{asn1_delete_structure2} @deftypefun {int} {asn1_delete_structure2} (asn1_node * @var{structure}, unsigned int @var{flags}) @var{structure}: pointer to the structure that you want to delete. @var{flags}: additional flags (see @code{ASN1_DELETE_FLAG} ) Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun @subheading asn1_delete_element @anchor{asn1_delete_element} @deftypefun {int} {asn1_delete_element} (asn1_node @var{structure}, const char * @var{element_name}) @var{structure}: pointer to the structure that contains the element you want to delete. @var{element_name}: element's name you want to delete. Deletes the element named * @code{element_name} inside * @code{structure} . @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if the @code{element_name} was not found. @end deftypefun @subheading asn1_create_element @anchor{asn1_create_element} @deftypefun {int} {asn1_create_element} (asn1_node @var{definitions}, const char * @var{source_name}, asn1_node * @var{element}) @var{definitions}: pointer to the structure returned by "parser_asn1" function @var{source_name}: the name of the type of the new structure (must be inside p_structure). @var{element}: pointer to the structure created. Creates a structure of type @code{source_name} . Example using "pkix.asn": rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); @strong{Returns:} @code{ASN1_SUCCESS} if creation OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{source_name} is not known. @end deftypefun @subheading asn1_print_structure @anchor{asn1_print_structure} @deftypefun {void} {asn1_print_structure} (FILE * @var{out}, asn1_node @var{structure}, const char * @var{name}, int @var{mode}) @var{out}: pointer to the output file (e.g. stdout). @var{structure}: pointer to the structure that you want to visit. @var{name}: an element of the structure @var{mode}: specify how much of the structure to print, can be @code{ASN1_PRINT_NAME} , @code{ASN1_PRINT_NAME_TYPE} , @code{ASN1_PRINT_NAME_TYPE_VALUE} , or @code{ASN1_PRINT_ALL} . Prints on the @code{out} file descriptor the structure's tree starting from the @code{name} element inside the structure @code{structure} . @end deftypefun @subheading asn1_number_of_elements @anchor{asn1_number_of_elements} @deftypefun {int} {asn1_number_of_elements} (asn1_node @var{element}, const char * @var{name}, int * @var{num}) @var{element}: pointer to the root of an ASN1 structure. @var{name}: the name of a sub-structure of ROOT. @var{num}: pointer to an integer where the result will be stored Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ... @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not known, @code{ASN1_GENERIC_ERROR} if pointer @code{num} is @code{NULL} . @end deftypefun @subheading asn1_find_structure_from_oid @anchor{asn1_find_structure_from_oid} @deftypefun {const char *} {asn1_find_structure_from_oid} (asn1_node @var{definitions}, const char * @var{oidValue}) @var{definitions}: ASN1 definitions @var{oidValue}: value of the OID to search (e.g. "1.2.3.4"). Search the structure that is defined just after an OID definition. @strong{Returns:} @code{NULL} when @code{oidValue} not found, otherwise the pointer to a constant string that contains the element name defined just after the OID. @end deftypefun @subheading asn1_copy_node @anchor{asn1_copy_node} @deftypefun {int} {asn1_copy_node} (asn1_node @var{dst}, const char * @var{dst_name}, asn1_node @var{src}, const char * @var{src_name}) @var{dst}: Destination asn1_node node. @var{dst_name}: Field name in destination node. @var{src}: Source asn1_node node. @var{src_name}: Field name in source node. Create a deep copy of a asn1_node variable. @strong{Returns:} Return @code{ASN1_SUCCESS} on success. @end deftypefun ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_delete_structure.texi����������������������������������������������������0000664�0000000�0000000�00000000657�12244721010�016704� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_delete_structure @anchor{asn1_delete_structure} @deftypefun {int} {asn1_delete_structure} (asn1_node * @var{structure}) @var{structure}: pointer to the structure that you want to delete. Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun ���������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_get_length_ber.texi������������������������������������������������������0000664�0000000�0000000�00000001172�12244721007�016271� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_get_length_ber @anchor{asn1_get_length_ber} @deftypefun {long} {asn1_get_length_ber} (const unsigned char * @var{ber}, int @var{ber_len}, int * @var{len}) @var{ber}: BER data to decode. @var{ber_len}: Length of BER data to decode. @var{len}: Output variable containing the length of the BER length field. Extract a length field from BER data. The difference to @code{asn1_get_length_der()} is that this function will return a length even if the value has indefinite encoding. @strong{Returns:} Return the decoded length value, or negative value when the value was too big. @strong{Since:} 2.0 @end deftypefun ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_get_octet_der.texi�������������������������������������������������������0000664�0000000�0000000�00000001365�12244721007�016134� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_get_octet_der @anchor{asn1_get_octet_der} @deftypefun {int} {asn1_get_octet_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, unsigned char * @var{str}, int @var{str_size}, int * @var{str_len}) @var{der}: DER data to decode containing the OCTET SEQUENCE. @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put decoded OCTET SEQUENCE in. @var{str_size}: Length of pre-allocated output buffer. @var{str_len}: Output variable containing the length of the OCTET SEQUENCE. Extract an OCTET SEQUENCE from DER data. @strong{Returns:} Returns @code{ASN1_SUCCESS} on success, or an error. @end deftypefun ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_copy_node.texi�����������������������������������������������������������0000664�0000000�0000000�00000000733�12244721011�015275� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_copy_node @anchor{asn1_copy_node} @deftypefun {int} {asn1_copy_node} (asn1_node @var{dst}, const char * @var{dst_name}, asn1_node @var{src}, const char * @var{src_name}) @var{dst}: Destination asn1_node node. @var{dst_name}: Field name in destination node. @var{src}: Source asn1_node node. @var{src_name}: Field name in source node. Create a deep copy of a asn1_node variable. @strong{Returns:} Return @code{ASN1_SUCCESS} on success. @end deftypefun �������������������������������������libtasn1-3.4/doc/texi/asn1_read_value.texi����������������������������������������������������������0000664�0000000�0000000�00000004607�12244721010�015430� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_read_value @anchor{asn1_read_value} @deftypefun {int} {asn1_read_value} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @var{ivalue}: vector that will contain the element's content, must be a pointer to memory cells already allocated. @var{len}: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. Returns the value of one element inside a structure. If an element is OPTIONAL and the function "read_value" returns @code{ASN1_ELEMENT_NOT_FOUND} , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. @strong{INTEGER:} VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 @strong{UTCTime:} VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. @strong{GeneralizedTime:} VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. @strong{GeneralString:} VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. @strong{CHOICE:} If NAME indicates a choice type, VALUE will specify the alternative selected. @strong{ANY:} If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. @strong{Returns:} @code{ASN1_SUCCESS} if value is returned, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there isn't any value for the element selected, and @code{ASN1_MEM_ERROR} if The value vector isn't big enough to store the result, and in this case @code{len} will contain the number of bytes needed. @end deftypefun �������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_get_bit_der.texi���������������������������������������������������������0000664�0000000�0000000�00000001343�12244721007�015570� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_get_bit_der @anchor{asn1_get_bit_der} @deftypefun {int} {asn1_get_bit_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{ret_len}, unsigned char * @var{str}, int @var{str_size}, int * @var{bit_len}) @var{der}: DER data to decode containing the BIT SEQUENCE. @var{der_len}: Length of DER data to decode. @var{ret_len}: Output variable containing the length of the DER data. @var{str}: Pre-allocated output buffer to put decoded BIT SEQUENCE in. @var{str_size}: Length of pre-allocated output buffer. @var{bit_len}: Output variable containing the size of the BIT SEQUENCE. Extract a BIT SEQUENCE from DER data. @strong{Returns:} Return @code{ASN1_SUCCESS} on success, or an error. @end deftypefun ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_parser2tree.texi���������������������������������������������������������0000664�0000000�0000000�00000002121�12244721011�015545� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_parser2tree @anchor{asn1_parser2tree} @deftypefun {int} {asn1_parser2tree} (const char * @var{file}, asn1_node * @var{definitions}, char * @var{error_desc}) @var{file}: specify the path and the name of file that contains ASN.1 declarations. @var{definitions}: return the pointer to the structure created from "file" ASN.1 declarations. @var{error_desc}: return the error description or an empty string if success. Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in @code{file} file. @strong{Returns:} @code{ASN1_SUCCESS} if the file has a correct syntax and every identifier is known, @code{ASN1_ELEMENT_NOT_EMPTY} if @code{definitions} not @code{NULL} , @code{ASN1_FILE_NOT_FOUND} if an error occured while opening @code{file} , @code{ASN1_SYNTAX_ERROR} if the syntax is not correct, @code{ASN1_IDENTIFIER_NOT_FOUND} if in the file there is an identifier that is not defined, @code{ASN1_NAME_TOO_LONG} if in the file there is an identifier whith more than @code{ASN1_MAX_NAME_SIZE} characters. @end deftypefun �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_write_value.texi���������������������������������������������������������0000664�0000000�0000000�00000007460�12244721010�015647� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_write_value @anchor{asn1_write_value} @deftypefun {int} {asn1_write_value} (asn1_node @var{node_root}, const char * @var{name}, const void * @var{ivalue}, int @var{len}) @var{node_root}: pointer to a structure @var{name}: the name of the element inside the structure that you want to set. @var{ivalue}: vector used to specify the value to set. If len is >0, VALUE must be a two's complement form integer. if len=0 *VALUE must be a null terminated string with an integer value. @var{len}: number of bytes of *value to use to set the value: value[0]..value[len-1] or 0 if value is a null terminated string Set the value of one element inside a structure. If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0); Description for each type: @strong{INTEGER:} VALUE must contain a two's complement form integer. value[0]=0xFF , len=1 -> integer=-1. value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. value[0]=0x01 , len=1 -> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. value="123" , len=0 -> integer= 123. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0. value="TRUE" , len=1 -> boolean=TRUE. value="FALSE" , len=1 -> boolean=FALSE. OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha. @strong{UTCTime:} VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0. value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time @strong{GeneralizedTime:} VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0 value="2001010112001.12-0700" , len=1 -> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time OCTET STRING: VALUE contains the octet string and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes octet string @strong{GeneralString:} VALUE contains the generalstring and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes generalstring BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits. value="$\backslash$xCF" , len=6 -> bit string="110011" (six bits) @strong{CHOICE:} if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1); @strong{ANY:} VALUE indicates the der encoding of a structure. LEN != 0. SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it's the first one, "?2" for the second and so on. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); SET OF: the same as SEQUENCE OF. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); @strong{Returns:} @code{ASN1_SUCCESS} if the value was set, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, and @code{ASN1_VALUE_NOT_VALID} if @code{ivalue} has a wrong format. @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_check_version.texi�������������������������������������������������������0000664�0000000�0000000�00000001262�12244721011�016136� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_check_version @anchor{asn1_check_version} @deftypefun {const char *} {asn1_check_version} (const char * @var{req_version}) @var{req_version}: Required version number, or @code{NULL} . Check that the version of the library is at minimum the requested one and return the version string; return @code{NULL} if the condition is not satisfied. If a @code{NULL} is passed to this function, no check is done, but the version string is simply returned. See @code{ASN1_VERSION} for a suitable @code{req_version} string. @strong{Returns:} Version string of run-time library, or @code{NULL} if the run-time library does not meet the required version number. @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_delete_element.texi������������������������������������������������������0000664�0000000�0000000�00000001021�12244721010�016257� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_delete_element @anchor{asn1_delete_element} @deftypefun {int} {asn1_delete_element} (asn1_node @var{structure}, const char * @var{element_name}) @var{structure}: pointer to the structure that contains the element you want to delete. @var{element_name}: element's name you want to delete. Deletes the element named * @code{element_name} inside * @code{structure} . @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if the @code{element_name} was not found. @end deftypefun ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_decode_simple_der.texi���������������������������������������������������0000664�0000000�0000000�00000001267�12244721007�016754� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_decode_simple_der @anchor{asn1_decode_simple_der} @deftypefun {int} {asn1_decode_simple_der} (unsigned int @var{etype}, const unsigned char * @var{der}, unsigned int @var{der_len}, const unsigned char ** @var{str}, unsigned int * @var{str_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{der}: the encoded string @var{der_len}: the bytes of the encoded string @var{str}: a pointer to the data @var{str_len}: the length of the data Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the @code{der} . @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_der_decoding.texi��������������������������������������������������������0000664�0000000�0000000�00000001766�12244721007�015740� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_der_decoding @anchor{asn1_der_decoding} @deftypefun {int} {asn1_der_decoding} (asn1_node * @var{element}, const void * @var{ider}, int @var{len}, char * @var{errorDescription}) @var{element}: pointer to an ASN1 structure. @var{ider}: vector that contains the DER encoding. @var{len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1]. @var{errorDescription}: null-terminated string contains details when an error occurred. Fill the structure * @code{ELEMENT} with values of a DER encoding string. The structure must just be created with function @code{asn1_create_element()} . If an error occurs during the decoding procedure, the * @code{ELEMENT} is deleted and set equal to @code{NULL} . @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{ELEMENT} is @code{NULL} , and @code{ASN1_TAG_ERROR} or @code{ASN1_DER_ERROR} if the der encoding doesn't match the structure name (* @code{ELEMENT} deleted). @end deftypefun ����������libtasn1-3.4/doc/texi/asn1_get_length_der.texi������������������������������������������������������0000664�0000000�0000000�00000001122�12244721007�016266� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_get_length_der @anchor{asn1_get_length_der} @deftypefun {long} {asn1_get_length_der} (const unsigned char * @var{der}, int @var{der_len}, int * @var{len}) @var{der}: DER data to decode. @var{der_len}: Length of DER data to decode. @var{len}: Output variable containing the length of the DER length field. Extract a length field from DER data. @strong{Returns:} Return the decoded length value, or -1 on indefinite length, or -2 when the value was too big to fit in a int, or -4 when the decoded length value plus @code{len} would exceed @code{der_len} . @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_perror.texi��������������������������������������������������������������0000664�0000000�0000000�00000000566�12244721007�014640� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_perror @anchor{asn1_perror} @deftypefun {void} {asn1_perror} (int @var{error}) @var{error}: is an error returned by a libtasn1 function. Prints a string to stderr with a description of an error. This function is like @code{perror()} . The only difference is that it accepts an error returned by a libtasn1 function. @strong{Since:} 1.6 @end deftypefun ������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_number_of_elements.texi��������������������������������������������������0000664�0000000�0000000�00000001213�12244721011�017160� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_number_of_elements @anchor{asn1_number_of_elements} @deftypefun {int} {asn1_number_of_elements} (asn1_node @var{element}, const char * @var{name}, int * @var{num}) @var{element}: pointer to the root of an ASN1 structure. @var{name}: the name of a sub-structure of ROOT. @var{num}: pointer to an integer where the result will be stored Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ... @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not known, @code{ASN1_GENERIC_ERROR} if pointer @code{num} is @code{NULL} . @end deftypefun �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/parser_aux.c.texi�������������������������������������������������������������0000664�0000000�0000000�00000001202�12244721011�014756� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_find_node @anchor{asn1_find_node} @deftypefun {asn1_node} {asn1_find_node} (asn1_node @var{pointer}, const char * @var{name}) @var{pointer}: NODE_ASN element pointer. @var{name}: null terminated string with the element's name to find. Searches for an element called @code{name} starting from @code{pointer} . The name is composed by differents identifiers separated by dots. When * @code{pointer} has a name, the first identifier must be the name of * @code{pointer} , otherwise it must be the name of one child of * @code{pointer} . @strong{Returns:} the search result, or @code{NULL} if not found. @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_print_structure.texi�����������������������������������������������������0000664�0000000�0000000�00000001270�12244721011�016567� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_print_structure @anchor{asn1_print_structure} @deftypefun {void} {asn1_print_structure} (FILE * @var{out}, asn1_node @var{structure}, const char * @var{name}, int @var{mode}) @var{out}: pointer to the output file (e.g. stdout). @var{structure}: pointer to the structure that you want to visit. @var{name}: an element of the structure @var{mode}: specify how much of the structure to print, can be @code{ASN1_PRINT_NAME} , @code{ASN1_PRINT_NAME_TYPE} , @code{ASN1_PRINT_NAME_TYPE_VALUE} , or @code{ASN1_PRINT_ALL} . Prints on the @code{out} file descriptor the structure's tree starting from the @code{name} element inside the structure @code{structure} . @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_length_der.texi����������������������������������������������������������0000664�0000000�0000000�00000001176�12244721010�015432� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_length_der @anchor{asn1_length_der} @deftypefun {void} {asn1_length_der} (unsigned long int @var{len}, unsigned char * @var{der}, int * @var{der_len}) @var{len}: value to convert. @var{der}: buffer to hold the returned encoding (may be @code{NULL} ). @var{der_len}: number of meaningful bytes of ANS (der[0]..der[der_len-1]). Creates the DER encoding of the provided length value. The @code{der} buffer must have enough room for the output. The maximum length this function will encode is @code{ASN1_MAX_LENGTH_SIZE} . To know the size of the DER encoding use a @code{NULL} value for @code{der} . @end deftypefun ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_octet_der.texi�����������������������������������������������������������0000664�0000000�0000000�00000001467�12244721010�015272� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_octet_der @anchor{asn1_octet_der} @deftypefun {void} {asn1_octet_der} (const unsigned char * @var{str}, int @var{str_len}, unsigned char * @var{der}, int * @var{der_len}) @var{str}: the input data. @var{str_len}: STR length (str[0]..str[*str_len-1]). @var{der}: encoded string returned. @var{der_len}: number of meaningful bytes of DER (der[0]..der[der_len-1]). Creates a length-value DER encoding for the input data. The DER encoding of the input data will be placed in the @code{der} variable. Note that the OCTET STRING tag is not included in the output. This function does not return any value because it is expected that @code{der_len} will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using @code{asn1_length_der()} . @end deftypefun ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_delete_structure2.texi���������������������������������������������������0000664�0000000�0000000�00000001012�12244721010�016750� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_delete_structure2 @anchor{asn1_delete_structure2} @deftypefun {int} {asn1_delete_structure2} (asn1_node * @var{structure}, unsigned int @var{flags}) @var{structure}: pointer to the structure that you want to delete. @var{flags}: additional flags (see @code{ASN1_DELETE_FLAG} ) Deletes the structure * @code{structure} . At the end, * @code{structure} is set to NULL. @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if * @code{structure} was NULL. @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_find_node.texi�����������������������������������������������������������0000664�0000000�0000000�00000001202�12244721007�015240� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_find_node @anchor{asn1_find_node} @deftypefun {asn1_node} {asn1_find_node} (asn1_node @var{pointer}, const char * @var{name}) @var{pointer}: NODE_ASN element pointer. @var{name}: null terminated string with the element's name to find. Searches for an element called @code{name} starting from @code{pointer} . The name is composed by differents identifiers separated by dots. When * @code{pointer} has a name, the first identifier must be the name of * @code{pointer} , otherwise it must be the name of one child of * @code{pointer} . @strong{Returns:} the search result, or @code{NULL} if not found. @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_read_value_type.texi�����������������������������������������������������0000664�0000000�0000000�00000004750�12244721010�016470� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_read_value_type @anchor{asn1_read_value_type} @deftypefun {int} {asn1_read_value_type} (asn1_node @var{root}, const char * @var{name}, void * @var{ivalue}, int * @var{len}, unsigned int * @var{etype}) @var{root}: pointer to a structure. @var{name}: the name of the element inside a structure that you want to read. @var{ivalue}: vector that will contain the element's content, must be a pointer to memory cells already allocated. @var{len}: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. @var{etype}: The type of the value read (ASN1_ETYPE) Returns the value of one element inside a structure. If an element is OPTIONAL and the function "read_value" returns @code{ASN1_ELEMENT_NOT_FOUND} , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. @strong{INTEGER:} VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. @strong{ENUMERATED:} As INTEGER (but only with not negative numbers). @strong{BOOLEAN:} VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 @strong{UTCTime:} VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. @strong{GeneralizedTime:} VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. @strong{GeneralString:} VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. @strong{CHOICE:} If NAME indicates a choice type, VALUE will specify the alternative selected. @strong{ANY:} If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. @strong{Returns:} @code{ASN1_SUCCESS} if value is returned, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there isn't any value for the element selected, and @code{ASN1_MEM_ERROR} if The value vector isn't big enough to store the result, and in this case @code{len} will contain the number of bytes needed. @end deftypefun ������������������������libtasn1-3.4/doc/texi/asn1_encode_simple_der.texi���������������������������������������������������0000664�0000000�0000000�00000001631�12244721010�016753� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_encode_simple_der @anchor{asn1_encode_simple_der} @deftypefun {int} {asn1_encode_simple_der} (unsigned int @var{etype}, const unsigned char * @var{str}, unsigned int @var{str_len}, unsigned char * @var{tl}, unsigned int * @var{tl_len}) @var{etype}: The type of the string to be encoded (ASN1_ETYPE_) @var{str}: the string data. @var{str_len}: the string length @var{tl}: the encoded tag and length @var{tl_len}: the bytes of the @code{tl} field Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in @code{tl} , which should have space for at least @code{ASN1_MAX_TL_SIZE} bytes. Initially @code{tl_len} should contain the size of @code{tl} . The complete DER encoding should consist of the value in @code{tl} appended with the provided @code{str} . @strong{Returns:} @code{ASN1_SUCCESS} if successful or an error value. @end deftypefun �������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_get_tag_der.texi���������������������������������������������������������0000664�0000000�0000000�00000001135�12244721007�015564� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_get_tag_der @anchor{asn1_get_tag_der} @deftypefun {int} {asn1_get_tag_der} (const unsigned char * @var{der}, int @var{der_len}, unsigned char * @var{cls}, int * @var{len}, unsigned long * @var{tag}) @var{der}: DER data to decode. @var{der_len}: Length of DER data to decode. @var{cls}: Output variable containing decoded class. @var{len}: Output variable containing the length of the DER TAG data. @var{tag}: Output variable containing the decoded tag. Decode the class and TAG from DER code. @strong{Returns:} Returns @code{ASN1_SUCCESS} on success, or an error. @end deftypefun �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_der_coding.texi����������������������������������������������������������0000664�0000000�0000000�00000002076�12244721010�015414� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_der_coding @anchor{asn1_der_coding} @deftypefun {int} {asn1_der_coding} (asn1_node @var{element}, const char * @var{name}, void * @var{ider}, int * @var{len}, char * @var{ErrorDescription}) @var{element}: pointer to an ASN1 element @var{name}: the name of the structure you want to encode (it must be inside *POINTER). @var{ider}: vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated. @var{len}: number of bytes of * @code{ider} : @code{ider} [0].. @code{ider} [len-1], Initialy holds the sizeof of der vector. @var{ErrorDescription}: return the error description or an empty string if success. Creates the DER encoding for the NAME structure (inside *POINTER structure). @strong{Returns:} @code{ASN1_SUCCESS} if DER encoding OK, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element, @code{ASN1_VALUE_NOT_FOUND} if there is an element without a value, @code{ASN1_MEM_ERROR} if the @code{ider} vector isn't big enough and in this case @code{len} will contain the length needed. @end deftypefun ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/errors.c.texi�����������������������������������������������������������������0000664�0000000�0000000�00000001513�12244721011�014126� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_perror @anchor{asn1_perror} @deftypefun {void} {asn1_perror} (int @var{error}) @var{error}: is an error returned by a libtasn1 function. Prints a string to stderr with a description of an error. This function is like @code{perror()} . The only difference is that it accepts an error returned by a libtasn1 function. @strong{Since:} 1.6 @end deftypefun @subheading asn1_strerror @anchor{asn1_strerror} @deftypefun {const char *} {asn1_strerror} (int @var{error}) @var{error}: is an error returned by a libtasn1 function. Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function. @strong{Returns:} Pointer to static zero-terminated string describing error code. @strong{Since:} 1.6 @end deftypefun �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/version.c.texi����������������������������������������������������������������0000664�0000000�0000000�00000001262�12244721011�014300� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_check_version @anchor{asn1_check_version} @deftypefun {const char *} {asn1_check_version} (const char * @var{req_version}) @var{req_version}: Required version number, or @code{NULL} . Check that the version of the library is at minimum the requested one and return the version string; return @code{NULL} if the condition is not satisfied. If a @code{NULL} is passed to this function, no check is done, but the version string is simply returned. See @code{ASN1_VERSION} for a suitable @code{req_version} string. @strong{Returns:} Version string of run-time library, or @code{NULL} if the run-time library does not meet the required version number. @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_read_tag.texi������������������������������������������������������������0000664�0000000�0000000�00000001375�12244721010�015066� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_read_tag @anchor{asn1_read_tag} @deftypefun {int} {asn1_read_tag} (asn1_node @var{root}, const char * @var{name}, int * @var{tagValue}, int * @var{classValue}) @var{root}: pointer to a structure @var{name}: the name of the element inside a structure. @var{tagValue}: variable that will contain the TAG value. @var{classValue}: variable that will specify the TAG type. Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: @code{ASN1_CLASS_APPLICATION} , @code{ASN1_CLASS_UNIVERSAL} , @code{ASN1_CLASS_PRIVATE} or @code{ASN1_CLASS_CONTEXT_SPECIFIC} . @strong{Returns:} @code{ASN1_SUCCESS} if successful, @code{ASN1_ELEMENT_NOT_FOUND} if @code{name} is not a valid element. @end deftypefun �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_expand_any_defined_by.texi�����������������������������������������������0000664�0000000�0000000�00000001470�12244721007�017620� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_expand_any_defined_by @anchor{asn1_expand_any_defined_by} @deftypefun {int} {asn1_expand_any_defined_by} (asn1_node @var{definitions}, asn1_node * @var{element}) @var{definitions}: ASN1 definitions @var{element}: pointer to an ASN1 structure Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER. @strong{Returns:} @code{ASN1_SUCCESS} if Substitution OK, @code{ASN1_ERROR_TYPE_ANY} if some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID -> TYPE association, or other error codes depending on DER decoding. @end deftypefun ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/texi/asn1_find_structure_from_oid.texi���������������������������������������������0000664�0000000�0000000�00000001042�12244721011�020226� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������@subheading asn1_find_structure_from_oid @anchor{asn1_find_structure_from_oid} @deftypefun {const char *} {asn1_find_structure_from_oid} (asn1_node @var{definitions}, const char * @var{oidValue}) @var{definitions}: ASN1 definitions @var{oidValue}: value of the OID to search (e.g. "1.2.3.4"). Search the structure that is defined just after an OID definition. @strong{Returns:} @code{NULL} when @code{oidValue} not found, otherwise the pointer to a constant string that contains the element name defined just after the OID. @end deftypefun ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/libtasn1.info����������������������������������������������������������������������0000664�0000000�0000000�00000224752�12244721013�013135� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������This is libtasn1.info, produced by makeinfo version 5.1 from libtasn1.texi. This manual is for GNU Libtasn1 (version 3.4, 25 November 2013), which is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation. Copyright (C) 2001-2013 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". INFO-DIR-SECTION Software libraries START-INFO-DIR-ENTRY * libtasn1: (libtasn1). Library for Abstract Syntax Notation One (ASN.1). END-INFO-DIR-ENTRY  File: libtasn1.info, Node: Top, Next: Introduction, Up: (dir) Libtasn1 ******** This manual is for GNU Libtasn1 (version 3.4, 25 November 2013), which is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation. Copyright (C) 2001-2013 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". * Menu: * Introduction:: * ASN.1 structure handling:: * Utilities:: * Function reference:: * Copying Information:: Indices * Concept Index:: Index of concepts and programs. * Function and Data Index:: Index of functions, variables and data types.  File: libtasn1.info, Node: Introduction, Next: ASN.1 structure handling, Prev: Top, Up: Top 1 Introduction ************** This document describes the Libtasn1 library that provides Abstract Syntax Notation One (ASN.1, as specified by the X.680 ITU-T recommendation) parsing and structures management, and Distinguished Encoding Rules (DER, as per X.690) encoding and decoding functions. The main features of this library are: * On-line ASN.1 structure management that doesn't require any C code file generation. * Off-line ASN.1 structure management with C code file generation containing an array. * Distinguished Encoding Rules (DER) encoding support. * No limits for INTEGER and ENUMERATED values. * It's Free Software. Anybody can use, modify, and redistribute the library under the terms of the GNU Lesser General Public License version 2.1 or later. The command line tools, self-tests and build infrastructure are licensed under the GNU General Public License version 3.0 or later. * Thread-safety. No global variables are used and multiple library handles and session handles may be used in parallel. * Portability. The code should work on all Unix like operating systems, and Windows. The library itself should be portable to any C89 system, not even POSIX is required.  File: libtasn1.info, Node: ASN.1 structure handling, Next: Utilities, Prev: Introduction, Up: Top 2 ASN.1 structure handling ************************** * Menu: * ASN.1 syntax:: * Naming:: * Simple parsing:: * Library Notes:: * Future developments::  File: libtasn1.info, Node: ASN.1 syntax, Next: Naming, Up: ASN.1 structure handling 2.1 ASN.1 syntax ================ The parser is case sensitive. The comments begin with '--' and end either with another '--', or at the end of the respective line, whichever comes first. The C-style '/*', '*/' comments are not supported. For an example of the syntax, check the 'pkix.asn' file distributed with the library. ASN.1 definitions must follow the syntax below: definitions_name {<object definition>} DEFINITIONS <EXPLICIT or IMPLICIT> TAGS ::= BEGIN <type and constants definitions> END The '::=' token must be separate from other elements, so the following declaration is invalid: -- INCORRECT Version ::=INTEGER The correct form is: Version ::= INTEGER Here is the list of types that the parser can manage: * 'INTEGER'; * 'ENUMERATED'; * 'BOOLEAN'; * 'OBJECT IDENTIFIER'; * 'NULL'; * 'BIT STRING'; * 'OCTET STRING'; * 'UTCTime'; * 'GeneralizedTime'; * 'GeneralString'; * 'NumericString'; * 'IA5String'; * 'TeletexString'; * 'PrintableString'; * 'UniversalString'; * 'BMPString'; * 'UTF8String'; * 'VisibleString'; * 'SEQUENCE'; * 'SEQUENCE OF'; * 'SET'; * 'SET OF'; * 'CHOICE'; * 'ANY'; * 'ANY DEFINED BY'. This version doesn't handle the 'REAL' type. It doesn't support the 'AUTOMATIC TAGS' option, and the 'EXPORT' and 'IMPORT' sections, either. The 'SIZE' constraints are allowed, but no check is done on them.  File: libtasn1.info, Node: Naming, Next: Simple parsing, Prev: ASN.1 syntax, Up: ASN.1 structure handling 2.2 Naming ========== Consider this definition: Example { 1 2 3 4 } DEFINITIONS EXPLICIT TAGS ::= BEGIN Group ::= SEQUENCE { id OBJECT IDENTIFIER, value Value } Value ::= SEQUENCE { value1 INTEGER, value2 BOOLEAN } END The notation to access the 'Group' type of the 'Example' definition above is 'Example.Group' (as a NUL-terminated string.) Such strings are used in the functions described below. Others examples: * field 'id' of the 'Group' type: 'Example.Group.id'; * field 'value1' of the 'value' field of the 'Group' type: 'Example.Group.value.value1'. Elements of structured types unnamed by the respective definition receive the names '?1', '?2', and so on. The '?LAST' name indicates the last element of a 'SET OF' or 'SEQUENCE OF'.  File: libtasn1.info, Node: Simple parsing, Next: Library Notes, Prev: Naming, Up: ASN.1 structure handling 2.3 Simple parsing ================== For simple types like 'OCTET STRING' the simple parsing functions listed below may be used instead. * *note asn1_decode_simple_der:: * *note asn1_encode_simple_der::  File: libtasn1.info, Node: Library Notes, Next: Future developments, Prev: Simple parsing, Up: ASN.1 structure handling 2.4 Library Notes ================= The header file of this library is 'libtasn1.h'. The main type used in it is 'asn1_node', and it's used to store the ASN.1 definitions and structures (instances). The 'NULL' constant can be used for the variable initialization. For example: asn1_node definitions = NULL; Some functions require an 'errorDescription' argument of type 'char *', pointing to a pre-allocated buffer of at least 'ASN1_MAX_ERROR_DESCRIPTION_SIZE' bytes size (e.g., as in 'char description[ASN1_MAX_ERROR_DESCRIPTION_SIZE];'). 'ASN1_MAX_NAME_SIZE' is the maximum number of characters allowed for an ASN.1 identifier.  File: libtasn1.info, Node: Future developments, Prev: Library Notes, Up: ASN.1 structure handling 2.5 Future developments ======================= * Add functions for a C code file generation containing equivalent data structures (not a single array like now). * The 'REAL' type.  File: libtasn1.info, Node: Utilities, Next: Function reference, Prev: ASN.1 structure handling, Up: Top 3 Utilities *********** * Menu: * Invoking asn1Parser:: * Invoking asn1Coding:: * Invoking asn1Decoding::  File: libtasn1.info, Node: Invoking asn1Parser, Next: Invoking asn1Coding, Up: Utilities 3.1 Invoking asn1Parser ======================= 'asn1Parser' reads a single file with ASN.1 definitions and generates a file with an array to use with libtasn1 functions. Usage: asn1Parser [options] file Options: -h : shows the help message. -v : shows version information and exit. -c : checks the syntax only. -o file : output file. -n name : array name.  File: libtasn1.info, Node: Invoking asn1Coding, Next: Invoking asn1Decoding, Prev: Invoking asn1Parser, Up: Utilities 3.2 Invoking asn1Coding ======================= 'asn1Coding' generates a DER encoding from a file with ASN.1 definitions and another one with assignments. The file with assignments must have this syntax: InstanceName Asn1Definition nameString value nameString value ... To specify the field of a 'CHOICE' to be used, specify its name as a value to the 'CHOICE' element itself. Use '''' to denote the root element itself. (as in the example below.) The output file is a binary file with the DER encoding. Usage: asn1Coding [options] file1 file2 file1 : file with ASN1 definitions. file2 : file with assignments. Options: -h : shows the help message. -v : shows version information and exit. -c : checks the syntax only. -o file : output file. For example, consider an ASN.1 definitions file as follows: PKIX1 { } DEFINITIONS IMPLICIT TAGS ::= BEGIN Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } END And a assignments file as follows: dp PKIX1.Dss-Sig-Value r 42 s 47 Running the command below will generate a 'assign.out' file, containing the DER encoding of 'PKIX1.Dss-Sig-Value'. $ asn1Coding pkix.asn assign.asn1 If the root element is of the 'CHOICE' type, the assignment file may be like (using the types defined in 'pkix.asn'): elt PKIX1Implicit88.GeneralName '' dNSName dNSName example.org  File: libtasn1.info, Node: Invoking asn1Decoding, Prev: Invoking asn1Coding, Up: Utilities 3.3 Invoking asn1Decoding ========================= 'asn1Decoding' generates an ASN.1 structure from a file with ASN.1 definitions and a binary file with a DER encoding. Usage: asn1Decoding [options] file1 file2 type file1 : file with ASN1 definitions. file2 : binary file with a DER encoding. type : ASN1 definition name. Options: -h : shows the help message. -v : shows version information and exit. -o file : output file. For example, after generating the 'assign.out' file from the example section of the 'asn1Coding' command above, the following invocation will decode the DER data. $ asn1Decoding pkix.asn assign.out PKIX1.Dss-Sig-Value  File: libtasn1.info, Node: Function reference, Next: Copying Information, Prev: Utilities, Up: Top 4 Function reference ******************** * Menu: * ASN.1 schema functions:: * ASN.1 field functions:: * DER functions:: * Error handling functions:: * Auxilliary functions::  File: libtasn1.info, Node: ASN.1 schema functions, Next: ASN.1 field functions, Up: Function reference 4.1 ASN.1 schema functions ========================== asn1_parser2tree ---------------- -- Function: int asn1_parser2tree (const char * FILE, asn1_node * DEFINITIONS, char * ERROR_DESC) FILE: specify the path and the name of file that contains ASN.1 declarations. DEFINITIONS: return the pointer to the structure created from "file" ASN.1 declarations. ERROR_DESC: return the error description or an empty string if success. Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in 'file' file. *Returns:* 'ASN1_SUCCESS' if the file has a correct syntax and every identifier is known, 'ASN1_ELEMENT_NOT_EMPTY' if 'definitions' not 'NULL' , 'ASN1_FILE_NOT_FOUND' if an error occured while opening 'file' , 'ASN1_SYNTAX_ERROR' if the syntax is not correct, 'ASN1_IDENTIFIER_NOT_FOUND' if in the file there is an identifier that is not defined, 'ASN1_NAME_TOO_LONG' if in the file there is an identifier whith more than 'ASN1_MAX_NAME_SIZE' characters. asn1_parser2array ----------------- -- Function: int asn1_parser2array (const char * INPUTFILENAME, const char * OUTPUTFILENAME, const char * VECTORNAME, char * ERROR_DESC) INPUTFILENAME: specify the path and the name of file that contains ASN.1 declarations. OUTPUTFILENAME: specify the path and the name of file that will contain the C vector definition. VECTORNAME: specify the name of the C vector. ERROR_DESC: return the error description or an empty string if success. Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in 'inputFileName' file. If 'inputFileName' is "/aa/bb/xx.yy" and 'outputFileName' is 'NULL' , the file created is "/aa/bb/xx_asn1_tab.c". If 'vectorName' is 'NULL' the vector name will be "xx_asn1_tab". *Returns:* 'ASN1_SUCCESS' if the file has a correct syntax and every identifier is known, 'ASN1_FILE_NOT_FOUND' if an error occured while opening 'inputFileName' , 'ASN1_SYNTAX_ERROR' if the syntax is not correct, 'ASN1_IDENTIFIER_NOT_FOUND' if in the file there is an identifier that is not defined, 'ASN1_NAME_TOO_LONG' if in the file there is an identifier whith more than 'ASN1_MAX_NAME_SIZE' characters.  File: libtasn1.info, Node: ASN.1 field functions, Next: DER functions, Prev: ASN.1 schema functions, Up: Function reference 4.2 ASN.1 field functions ========================= asn1_array2tree --------------- -- Function: int asn1_array2tree (const asn1_static_node * ARRAY, asn1_node * DEFINITIONS, char * ERRORDESCRIPTION) ARRAY: specify the array that contains ASN.1 declarations DEFINITIONS: return the pointer to the structure created by *ARRAY ASN.1 declarations ERRORDESCRIPTION: return the error description. Creates the structures needed to manage the ASN.1 definitions. 'array' is a vector created by 'asn1_parser2array()' . *Returns:* 'ASN1_SUCCESS' if structure was created correctly, 'ASN1_ELEMENT_NOT_EMPTY' if * 'definitions' not NULL, 'ASN1_IDENTIFIER_NOT_FOUND' if in the file there is an identifier that is not defined (see 'errorDescription' for more information), 'ASN1_ARRAY_ERROR' if the array pointed by 'array' is wrong. asn1_delete_structure --------------------- -- Function: int asn1_delete_structure (asn1_node * STRUCTURE) STRUCTURE: pointer to the structure that you want to delete. Deletes the structure * 'structure' . At the end, * 'structure' is set to NULL. *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if * 'structure' was NULL. asn1_delete_structure2 ---------------------- -- Function: int asn1_delete_structure2 (asn1_node * STRUCTURE, unsigned int FLAGS) STRUCTURE: pointer to the structure that you want to delete. FLAGS: additional flags (see 'ASN1_DELETE_FLAG' ) Deletes the structure * 'structure' . At the end, * 'structure' is set to NULL. *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if * 'structure' was NULL. asn1_delete_element ------------------- -- Function: int asn1_delete_element (asn1_node STRUCTURE, const char * ELEMENT_NAME) STRUCTURE: pointer to the structure that contains the element you want to delete. ELEMENT_NAME: element's name you want to delete. Deletes the element named * 'element_name' inside * 'structure' . *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if the 'element_name' was not found. asn1_create_element ------------------- -- Function: int asn1_create_element (asn1_node DEFINITIONS, const char * SOURCE_NAME, asn1_node * ELEMENT) DEFINITIONS: pointer to the structure returned by "parser_asn1" function SOURCE_NAME: the name of the type of the new structure (must be inside p_structure). ELEMENT: pointer to the structure created. Creates a structure of type 'source_name' . Example using "pkix.asn": rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); *Returns:* 'ASN1_SUCCESS' if creation OK, 'ASN1_ELEMENT_NOT_FOUND' if 'source_name' is not known. asn1_print_structure -------------------- -- Function: void asn1_print_structure (FILE * OUT, asn1_node STRUCTURE, const char * NAME, int MODE) OUT: pointer to the output file (e.g. stdout). STRUCTURE: pointer to the structure that you want to visit. NAME: an element of the structure MODE: specify how much of the structure to print, can be 'ASN1_PRINT_NAME' , 'ASN1_PRINT_NAME_TYPE' , 'ASN1_PRINT_NAME_TYPE_VALUE' , or 'ASN1_PRINT_ALL' . Prints on the 'out' file descriptor the structure's tree starting from the 'name' element inside the structure 'structure' . asn1_number_of_elements ----------------------- -- Function: int asn1_number_of_elements (asn1_node ELEMENT, const char * NAME, int * NUM) ELEMENT: pointer to the root of an ASN1 structure. NAME: the name of a sub-structure of ROOT. NUM: pointer to an integer where the result will be stored Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ... *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not known, 'ASN1_GENERIC_ERROR' if pointer 'num' is 'NULL' . asn1_find_structure_from_oid ---------------------------- -- Function: const char * asn1_find_structure_from_oid (asn1_node DEFINITIONS, const char * OIDVALUE) DEFINITIONS: ASN1 definitions OIDVALUE: value of the OID to search (e.g. "1.2.3.4"). Search the structure that is defined just after an OID definition. *Returns:* 'NULL' when 'oidValue' not found, otherwise the pointer to a constant string that contains the element name defined just after the OID. asn1_copy_node -------------- -- Function: int asn1_copy_node (asn1_node DST, const char * DST_NAME, asn1_node SRC, const char * SRC_NAME) DST: Destination asn1_node node. DST_NAME: Field name in destination node. SRC: Source asn1_node node. SRC_NAME: Field name in source node. Create a deep copy of a asn1_node variable. *Returns:* Return 'ASN1_SUCCESS' on success. asn1_write_value ---------------- -- Function: int asn1_write_value (asn1_node NODE_ROOT, const char * NAME, const void * IVALUE, int LEN) NODE_ROOT: pointer to a structure NAME: the name of the element inside the structure that you want to set. IVALUE: vector used to specify the value to set. If len is >0, VALUE must be a two's complement form integer. if len=0 *VALUE must be a null terminated string with an integer value. LEN: number of bytes of *value to use to set the value: value[0]..value[len-1] or 0 if value is a null terminated string Set the value of one element inside a structure. If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0); Description for each type: *INTEGER:* VALUE must contain a two's complement form integer. value[0]=0xFF , len=1 -> integer=-1. value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. value[0]=0x01 , len=1 -> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. value="123" , len=0 -> integer= 123. *ENUMERATED:* As INTEGER (but only with not negative numbers). *BOOLEAN:* VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0. value="TRUE" , len=1 -> boolean=TRUE. value="FALSE" , len=1 -> boolean=FALSE. OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha. *UTCTime:* VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0. value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time *GeneralizedTime:* VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0 value="2001010112001.12-0700" , len=1 -> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time OCTET STRING: VALUE contains the octet string and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes octet string *GeneralString:* VALUE contains the generalstring and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes generalstring BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits. value="$\backslash$xCF" , len=6 -> bit string="110011" (six bits) *CHOICE:* if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1); *ANY:* VALUE indicates the der encoding of a structure. LEN != 0. SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it's the first one, "?2" for the second and so on. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); SET OF: the same as SEQUENCE OF. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); *Returns:* 'ASN1_SUCCESS' if the value was set, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element, and 'ASN1_VALUE_NOT_VALID' if 'ivalue' has a wrong format. asn1_read_value --------------- -- Function: int asn1_read_value (asn1_node ROOT, const char * NAME, void * IVALUE, int * LEN) ROOT: pointer to a structure. NAME: the name of the element inside a structure that you want to read. IVALUE: vector that will contain the element's content, must be a pointer to memory cells already allocated. LEN: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. Returns the value of one element inside a structure. If an element is OPTIONAL and the function "read_value" returns 'ASN1_ELEMENT_NOT_FOUND' , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. *INTEGER:* VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. *ENUMERATED:* As INTEGER (but only with not negative numbers). *BOOLEAN:* VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 *UTCTime:* VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. *GeneralizedTime:* VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. *GeneralString:* VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. *CHOICE:* If NAME indicates a choice type, VALUE will specify the alternative selected. *ANY:* If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. *Returns:* 'ASN1_SUCCESS' if value is returned, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element, 'ASN1_VALUE_NOT_FOUND' if there isn't any value for the element selected, and 'ASN1_MEM_ERROR' if The value vector isn't big enough to store the result, and in this case 'len' will contain the number of bytes needed. asn1_read_value_type -------------------- -- Function: int asn1_read_value_type (asn1_node ROOT, const char * NAME, void * IVALUE, int * LEN, unsigned int * ETYPE) ROOT: pointer to a structure. NAME: the name of the element inside a structure that you want to read. IVALUE: vector that will contain the element's content, must be a pointer to memory cells already allocated. LEN: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value. ETYPE: The type of the value read (ASN1_ETYPE) Returns the value of one element inside a structure. If an element is OPTIONAL and the function "read_value" returns 'ASN1_ELEMENT_NOT_FOUND' , it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. *INTEGER:* VALUE will contain a two's complement form integer. integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1. *ENUMERATED:* As INTEGER (but only with not negative numbers). *BOOLEAN:* VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 *UTCTime:* VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1. *GeneralizedTime:* VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. *GeneralString:* VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. *CHOICE:* If NAME indicates a choice type, VALUE will specify the alternative selected. *ANY:* If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. *Returns:* 'ASN1_SUCCESS' if value is returned, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element, 'ASN1_VALUE_NOT_FOUND' if there isn't any value for the element selected, and 'ASN1_MEM_ERROR' if The value vector isn't big enough to store the result, and in this case 'len' will contain the number of bytes needed. asn1_read_tag ------------- -- Function: int asn1_read_tag (asn1_node ROOT, const char * NAME, int * TAGVALUE, int * CLASSVALUE) ROOT: pointer to a structure NAME: the name of the element inside a structure. TAGVALUE: variable that will contain the TAG value. CLASSVALUE: variable that will specify the TAG type. Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: 'ASN1_CLASS_APPLICATION' , 'ASN1_CLASS_UNIVERSAL' , 'ASN1_CLASS_PRIVATE' or 'ASN1_CLASS_CONTEXT_SPECIFIC' . *Returns:* 'ASN1_SUCCESS' if successful, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element. asn1_read_node_value -------------------- -- Function: int asn1_read_node_value (asn1_node NODE, asn1_data_node_st * DATA) NODE: pointer to a node. DATA: a point to a asn1_data_node_st Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values. *Returns:* 'ASN1_SUCCESS' if the node exists.  File: libtasn1.info, Node: DER functions, Next: Error handling functions, Prev: ASN.1 field functions, Up: Function reference 4.3 DER functions ================= asn1_length_der --------------- -- Function: void asn1_length_der (unsigned long int LEN, unsigned char * DER, int * DER_LEN) LEN: value to convert. DER: buffer to hold the returned encoding (may be 'NULL' ). DER_LEN: number of meaningful bytes of ANS (der[0]..der[der_len-1]). Creates the DER encoding of the provided length value. The 'der' buffer must have enough room for the output. The maximum length this function will encode is 'ASN1_MAX_LENGTH_SIZE' . To know the size of the DER encoding use a 'NULL' value for 'der' . asn1_octet_der -------------- -- Function: void asn1_octet_der (const unsigned char * STR, int STR_LEN, unsigned char * DER, int * DER_LEN) STR: the input data. STR_LEN: STR length (str[0]..str[*str_len-1]). DER: encoded string returned. DER_LEN: number of meaningful bytes of DER (der[0]..der[der_len-1]). Creates a length-value DER encoding for the input data. The DER encoding of the input data will be placed in the 'der' variable. Note that the OCTET STRING tag is not included in the output. This function does not return any value because it is expected that 'der_len' will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using 'asn1_length_der()' . asn1_encode_simple_der ---------------------- -- Function: int asn1_encode_simple_der (unsigned int ETYPE, const unsigned char * STR, unsigned int STR_LEN, unsigned char * TL, unsigned int * TL_LEN) ETYPE: The type of the string to be encoded (ASN1_ETYPE_) STR: the string data. STR_LEN: the string length TL: the encoded tag and length TL_LEN: the bytes of the 'tl' field Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in 'tl' , which should have space for at least 'ASN1_MAX_TL_SIZE' bytes. Initially 'tl_len' should contain the size of 'tl' . The complete DER encoding should consist of the value in 'tl' appended with the provided 'str' . *Returns:* 'ASN1_SUCCESS' if successful or an error value. asn1_bit_der ------------ -- Function: void asn1_bit_der (const unsigned char * STR, int BIT_LEN, unsigned char * DER, int * DER_LEN) STR: BIT string. BIT_LEN: number of meaningful bits in STR. DER: string returned. DER_LEN: number of meaningful bytes of DER (der[0]..der[ans_len-1]). Creates a length-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in 'der' . Note that the BIT STRING tag is not included in the output. This function does not return any value because it is expected that 'der_len' will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using 'asn1_length_der()' . asn1_der_coding --------------- -- Function: int asn1_der_coding (asn1_node ELEMENT, const char * NAME, void * IDER, int * LEN, char * ERRORDESCRIPTION) ELEMENT: pointer to an ASN1 element NAME: the name of the structure you want to encode (it must be inside *POINTER). IDER: vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated. LEN: number of bytes of * 'ider' : 'ider' [0].. 'ider' [len-1], Initialy holds the sizeof of der vector. ERRORDESCRIPTION: return the error description or an empty string if success. Creates the DER encoding for the NAME structure (inside *POINTER structure). *Returns:* 'ASN1_SUCCESS' if DER encoding OK, 'ASN1_ELEMENT_NOT_FOUND' if 'name' is not a valid element, 'ASN1_VALUE_NOT_FOUND' if there is an element without a value, 'ASN1_MEM_ERROR' if the 'ider' vector isn't big enough and in this case 'len' will contain the length needed. asn1_get_length_der ------------------- -- Function: long asn1_get_length_der (const unsigned char * DER, int DER_LEN, int * LEN) DER: DER data to decode. DER_LEN: Length of DER data to decode. LEN: Output variable containing the length of the DER length field. Extract a length field from DER data. *Returns:* Return the decoded length value, or -1 on indefinite length, or -2 when the value was too big to fit in a int, or -4 when the decoded length value plus 'len' would exceed 'der_len' . asn1_get_tag_der ---------------- -- Function: int asn1_get_tag_der (const unsigned char * DER, int DER_LEN, unsigned char * CLS, int * LEN, unsigned long * TAG) DER: DER data to decode. DER_LEN: Length of DER data to decode. CLS: Output variable containing decoded class. LEN: Output variable containing the length of the DER TAG data. TAG: Output variable containing the decoded tag. Decode the class and TAG from DER code. *Returns:* Returns 'ASN1_SUCCESS' on success, or an error. asn1_get_length_ber ------------------- -- Function: long asn1_get_length_ber (const unsigned char * BER, int BER_LEN, int * LEN) BER: BER data to decode. BER_LEN: Length of BER data to decode. LEN: Output variable containing the length of the BER length field. Extract a length field from BER data. The difference to 'asn1_get_length_der()' is that this function will return a length even if the value has indefinite encoding. *Returns:* Return the decoded length value, or negative value when the value was too big. *Since:* 2.0 asn1_get_octet_der ------------------ -- Function: int asn1_get_octet_der (const unsigned char * DER, int DER_LEN, int * RET_LEN, unsigned char * STR, int STR_SIZE, int * STR_LEN) DER: DER data to decode containing the OCTET SEQUENCE. DER_LEN: Length of DER data to decode. RET_LEN: Output variable containing the length of the DER data. STR: Pre-allocated output buffer to put decoded OCTET SEQUENCE in. STR_SIZE: Length of pre-allocated output buffer. STR_LEN: Output variable containing the length of the OCTET SEQUENCE. Extract an OCTET SEQUENCE from DER data. *Returns:* Returns 'ASN1_SUCCESS' on success, or an error. asn1_get_bit_der ---------------- -- Function: int asn1_get_bit_der (const unsigned char * DER, int DER_LEN, int * RET_LEN, unsigned char * STR, int STR_SIZE, int * BIT_LEN) DER: DER data to decode containing the BIT SEQUENCE. DER_LEN: Length of DER data to decode. RET_LEN: Output variable containing the length of the DER data. STR: Pre-allocated output buffer to put decoded BIT SEQUENCE in. STR_SIZE: Length of pre-allocated output buffer. BIT_LEN: Output variable containing the size of the BIT SEQUENCE. Extract a BIT SEQUENCE from DER data. *Returns:* Return 'ASN1_SUCCESS' on success, or an error. asn1_der_decoding ----------------- -- Function: int asn1_der_decoding (asn1_node * ELEMENT, const void * IDER, int LEN, char * ERRORDESCRIPTION) ELEMENT: pointer to an ASN1 structure. IDER: vector that contains the DER encoding. LEN: number of bytes of * 'ider' : 'ider' [0].. 'ider' [len-1]. ERRORDESCRIPTION: null-terminated string contains details when an error occurred. Fill the structure * 'ELEMENT' with values of a DER encoding string. The structure must just be created with function 'asn1_create_element()' . If an error occurs during the decoding procedure, the * 'ELEMENT' is deleted and set equal to 'NULL' . *Returns:* 'ASN1_SUCCESS' if DER encoding OK, 'ASN1_ELEMENT_NOT_FOUND' if 'ELEMENT' is 'NULL' , and 'ASN1_TAG_ERROR' or 'ASN1_DER_ERROR' if the der encoding doesn't match the structure name (* 'ELEMENT' deleted). asn1_der_decoding_element ------------------------- -- Function: int asn1_der_decoding_element (asn1_node * STRUCTURE, const char * ELEMENTNAME, const void * IDER, int LEN, char * ERRORDESCRIPTION) STRUCTURE: pointer to an ASN1 structure ELEMENTNAME: name of the element to fill IDER: vector that contains the DER encoding of the whole structure. LEN: number of bytes of *der: der[0]..der[len-1] ERRORDESCRIPTION: null-terminated string contains details when an error occurred. Fill the element named 'ELEMENTNAME' with values of a DER encoding string. The structure must just be created with function 'asn1_create_element()' . The DER vector must contain the encoding string of the whole 'STRUCTURE' . If an error occurs during the decoding procedure, the * 'STRUCTURE' is deleted and set equal to 'NULL' . *Returns:* 'ASN1_SUCCESS' if DER encoding OK, 'ASN1_ELEMENT_NOT_FOUND' if ELEMENT is 'NULL' or 'elementName' == NULL, and 'ASN1_TAG_ERROR' or 'ASN1_DER_ERROR' if the der encoding doesn't match the structure 'structure' (*ELEMENT deleted). asn1_der_decoding_startEnd -------------------------- -- Function: int asn1_der_decoding_startEnd (asn1_node ELEMENT, const void * IDER, int LEN, const char * NAME_ELEMENT, int * START, int * END) ELEMENT: pointer to an ASN1 element IDER: vector that contains the DER encoding. LEN: number of bytes of * 'ider' : 'ider' [0].. 'ider' [len-1] NAME_ELEMENT: an element of NAME structure. START: the position of the first byte of NAME_ELEMENT decoding ( 'ider' [*start]) END: the position of the last byte of NAME_ELEMENT decoding ( 'ider' [*end]) Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function 'asn1_der_decoding()' to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure. One example is the sequence "tbsCertificate" inside an X509 certificate. *Returns:* 'ASN1_SUCCESS' if DER encoding OK, 'ASN1_ELEMENT_NOT_FOUND' if ELEMENT is 'asn1_node' EMPTY or 'name_element' is not a valid element, 'ASN1_TAG_ERROR' or 'ASN1_DER_ERROR' if the der encoding doesn't match the structure ELEMENT. asn1_expand_any_defined_by -------------------------- -- Function: int asn1_expand_any_defined_by (asn1_node DEFINITIONS, asn1_node * ELEMENT) DEFINITIONS: ASN1 definitions ELEMENT: pointer to an ASN1 structure Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER. *Returns:* 'ASN1_SUCCESS' if Substitution OK, 'ASN1_ERROR_TYPE_ANY' if some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID -> TYPE association, or other error codes depending on DER decoding. asn1_expand_octet_string ------------------------ -- Function: int asn1_expand_octet_string (asn1_node DEFINITIONS, asn1_node * ELEMENT, const char * OCTETNAME, const char * OBJECTNAME) DEFINITIONS: ASN1 definitions ELEMENT: pointer to an ASN1 structure OCTETNAME: name of the OCTECT STRING field to expand. OBJECTNAME: name of the OBJECT IDENTIFIER field to use to define the type for expansion. Expands an "OCTET STRING" element of a structure created from a DER decoding process (the 'asn1_der_decoding()' function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. *Returns:* 'ASN1_SUCCESS' if substitution OK, 'ASN1_ELEMENT_NOT_FOUND' if 'objectName' or 'octetName' are not correct, 'ASN1_VALUE_NOT_VALID' if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding. asn1_decode_simple_der ---------------------- -- Function: int asn1_decode_simple_der (unsigned int ETYPE, const unsigned char * DER, unsigned int DER_LEN, const unsigned char ** STR, unsigned int * STR_LEN) ETYPE: The type of the string to be encoded (ASN1_ETYPE_) DER: the encoded string DER_LEN: the bytes of the encoded string STR: a pointer to the data STR_LEN: the length of the data Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the 'der' . *Returns:* 'ASN1_SUCCESS' if successful or an error value.  File: libtasn1.info, Node: Error handling functions, Next: Auxilliary functions, Prev: DER functions, Up: Function reference 4.4 Error handling functions ============================ asn1_perror ----------- -- Function: void asn1_perror (int ERROR) ERROR: is an error returned by a libtasn1 function. Prints a string to stderr with a description of an error. This function is like 'perror()' . The only difference is that it accepts an error returned by a libtasn1 function. *Since:* 1.6 asn1_strerror ------------- -- Function: const char * asn1_strerror (int ERROR) ERROR: is an error returned by a libtasn1 function. Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function. *Returns:* Pointer to static zero-terminated string describing error code. *Since:* 1.6  File: libtasn1.info, Node: Auxilliary functions, Prev: Error handling functions, Up: Function reference 4.5 Auxilliary functions ======================== asn1_find_node -------------- -- Function: asn1_node asn1_find_node (asn1_node POINTER, const char * NAME) POINTER: NODE_ASN element pointer. NAME: null terminated string with the element's name to find. Searches for an element called 'name' starting from 'pointer' . The name is composed by differents identifiers separated by dots. When * 'pointer' has a name, the first identifier must be the name of * 'pointer' , otherwise it must be the name of one child of * 'pointer' . *Returns:* the search result, or 'NULL' if not found. asn1_check_version ------------------ -- Function: const char * asn1_check_version (const char * REQ_VERSION) REQ_VERSION: Required version number, or 'NULL' . Check that the version of the library is at minimum the requested one and return the version string; return 'NULL' if the condition is not satisfied. If a 'NULL' is passed to this function, no check is done, but the version string is simply returned. See 'ASN1_VERSION' for a suitable 'req_version' string. *Returns:* Version string of run-time library, or 'NULL' if the run-time library does not meet the required version number.  File: libtasn1.info, Node: Copying Information, Next: Concept Index, Prev: Function reference, Up: Top Appendix A Copying Information ****************************** * Menu: * GNU Free Documentation License:: License for copying this manual.  File: libtasn1.info, Node: GNU Free Documentation License, Up: Copying Information A.1 GNU Free Documentation License ================================== Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The "publisher" means any person or entity that distributes copies of the Document to the public. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation 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. See <http://www.gnu.org/copyleft/>. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site. "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. "Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. ADDENDUM: How to use this License for your documents ==================================================== To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (C) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.  File: libtasn1.info, Node: Concept Index, Next: Function and Data Index, Prev: Copying Information, Up: Top Concept Index ************* �[index�] * Menu: * ASN.1 schema: ASN.1 syntax. (line 6) * asn1Coding program: Invoking asn1Coding. (line 6) * asn1Decoding program: Invoking asn1Decoding. (line 6) * asn1Parser program: Invoking asn1Parser. (line 6) * FDL, GNU Free Documentation License: GNU Free Documentation License. (line 6) * Future developments: Future developments. (line 6) * Header file libtasn1.h: Library Notes. (line 6) * Main type asn1_node: Library Notes. (line 8) * Porting: Introduction. (line 32) * Supported ASN.1 types, list of: ASN.1 syntax. (line 38) * threads: Introduction. (line 29)  File: libtasn1.info, Node: Function and Data Index, Prev: Concept Index, Up: Top Function and Data Index *********************** �[index�] * Menu: * asn1_array2tree: ASN.1 field functions. (line 9) * asn1_bit_der: DER functions. (line 77) * asn1_check_version: Auxilliary functions. (line 26) * asn1_copy_node: ASN.1 field functions. (line 144) * asn1_create_element: ASN.1 field functions. (line 72) * asn1_decode_simple_der: DER functions. (line 365) * asn1_delete_element: ASN.1 field functions. (line 57) * asn1_delete_structure: ASN.1 field functions. (line 30) * asn1_delete_structure2: ASN.1 field functions. (line 42) * asn1_der_coding: DER functions. (line 102) * asn1_der_decoding: DER functions. (line 231) * asn1_der_decoding_element: DER functions. (line 255) * asn1_der_decoding_startEnd: DER functions. (line 284) * asn1_encode_simple_der: DER functions. (line 51) * asn1_expand_any_defined_by: DER functions. (line 319) * asn1_expand_octet_string: DER functions. (line 339) * asn1_find_node: Auxilliary functions. (line 9) * asn1_find_structure_from_oid: ASN.1 field functions. (line 129) * asn1_get_bit_der: DER functions. (line 209) * asn1_get_length_ber: DER functions. (line 166) * asn1_get_length_der: DER functions. (line 130) * asn1_get_octet_der: DER functions. (line 186) * asn1_get_tag_der: DER functions. (line 147) * asn1_length_der: DER functions. (line 9) * asn1_number_of_elements: ASN.1 field functions. (line 111) * asn1_octet_der: DER functions. (line 27) * asn1_parser2array: ASN.1 schema functions. (line 35) * asn1_parser2tree: ASN.1 schema functions. (line 9) * asn1_perror: Error handling functions. (line 9) * asn1_print_structure: ASN.1 field functions. (line 93) * asn1_read_node_value: ASN.1 field functions. (line 430) * asn1_read_tag: ASN.1 field functions. (line 409) * asn1_read_value: ASN.1 field functions. (line 271) * asn1_read_value_type: ASN.1 field functions. (line 339) * asn1_strerror: Error handling functions. (line 21) * asn1_write_value: ASN.1 field functions. (line 161)  Tag Table: Node: Top865 Node: Introduction1859 Node: ASN.1 structure handling3228 Node: ASN.1 syntax3487 Node: Naming5075 Node: Simple parsing6056 Node: Library Notes6383 Node: Future developments7165 Node: Utilities7464 Node: Invoking asn1Parser7684 Node: Invoking asn1Coding8146 Node: Invoking asn1Decoding9655 Node: Function reference10410 Node: ASN.1 schema functions10694 Ref: asn1_parser2tree10893 Ref: asn1_parser2array11944 Node: ASN.1 field functions13262 Ref: asn1_array2tree13479 Ref: asn1_delete_structure14331 Ref: asn1_delete_structure214705 Ref: asn1_delete_element15160 Ref: asn1_create_element15632 Ref: asn1_print_structure16286 Ref: asn1_number_of_elements16915 Ref: asn1_find_structure_from_oid17510 Ref: asn1_copy_node17988 Ref: asn1_write_value18408 Ref: asn1_read_value22442 Ref: asn1_read_value_type24927 Ref: asn1_read_tag27478 Ref: asn1_read_node_value28185 Node: DER functions28531 Ref: asn1_length_der28734 Ref: asn1_octet_der29320 Ref: asn1_encode_simple_der30128 Ref: asn1_bit_der30958 Ref: asn1_der_coding31749 Ref: asn1_get_length_der32772 Ref: asn1_get_tag_der33312 Ref: asn1_get_length_ber33857 Ref: asn1_get_octet_der34450 Ref: asn1_get_bit_der35145 Ref: asn1_der_decoding35823 Ref: asn1_der_decoding_element36761 Ref: asn1_der_decoding_startEnd37922 Ref: asn1_expand_any_defined_by39197 Ref: asn1_expand_octet_string40002 Ref: asn1_decode_simple_der41003 Node: Error handling functions41596 Ref: asn1_perror41812 Ref: asn1_strerror42153 Node: Auxilliary functions42564 Ref: asn1_find_node42756 Ref: asn1_check_version43352 Node: Copying Information43951 Node: GNU Free Documentation License44204 Node: Concept Index69318 Node: Function and Data Index70424  End Tag Table ����������������������libtasn1-3.4/doc/reference/�������������������������������������������������������������������������0000775�0000000�0000000�00000000000�12244722065�012555� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/reference/html/��������������������������������������������������������������������0000775�0000000�0000000�00000000000�12244722065�013521� 5����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������libtasn1-3.4/doc/reference/html/intro.html����������������������������������������������������������0000664�0000000�0000000�00000004160�12244722065�015463� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>GNU Libtasn1 API Reference Manual

GNU Libtasn1 API Reference Manual

This document describes the GNU Libtasn1 library developed for ASN.1 (Abstract Syntax Notation One) structures management and DER (Distinguished Encoding Rules) encoding functions.

More up to date information can be found at https://www.gnu.org/software/libtasn1/.

libtasn1-3.4/doc/reference/html/index.html0000664000000000000000000000354312244722065015443 00000000000000 GNU Libtasn1 API Reference Manual

for GNU Libtasn1 3.4 . The latest version of this documentation can be found on-line at https://www.gnu.org/software/libtasn1/reference/.


libtasn1-3.4/doc/reference/html/api-index-full.html0000664000000000000000000010460112244722065017147 00000000000000 API Index

API Index

A

ASN1_API, macro in libtasn1
asn1_array2tree, function in libtasn1
ASN1_ARRAY_ERROR, macro in libtasn1
ASN1_ARRAY_TYPE, macro in libtasn1

B

asn1_bit_der, function in libtasn1

C

asn1_check_version, function in libtasn1
ASN1_CLASS_APPLICATION, macro in libtasn1
ASN1_CLASS_CONTEXT_SPECIFIC, macro in libtasn1
ASN1_CLASS_PRIVATE, macro in libtasn1
ASN1_CLASS_STRUCTURED, macro in libtasn1
ASN1_CLASS_UNIVERSAL, macro in libtasn1
asn1_copy_node, function in libtasn1
asn1_create_element, function in libtasn1

D

ASN1_DATA_NODE, macro in libtasn1
asn1_data_node_st, typedef in libtasn1
asn1_decode_simple_der, function in libtasn1
asn1_delete_element, function in libtasn1
ASN1_DELETE_FLAG_ZEROIZE, macro in libtasn1
asn1_delete_structure, function in libtasn1
asn1_delete_structure2, function in libtasn1
asn1_der_coding, function in libtasn1
asn1_der_decoding, function in libtasn1
asn1_der_decoding_element, function in libtasn1
asn1_der_decoding_startEnd, function in libtasn1
ASN1_DER_ERROR, macro in libtasn1
ASN1_DER_OVERFLOW, macro in libtasn1

E

ASN1_ELEMENT_NOT_EMPTY, macro in libtasn1
ASN1_ELEMENT_NOT_FOUND, macro in libtasn1
asn1_encode_simple_der, function in libtasn1
ASN1_ERROR_TYPE_ANY, macro in libtasn1
ASN1_ETYPE_ANY, macro in libtasn1
ASN1_ETYPE_BIT_STRING, macro in libtasn1
ASN1_ETYPE_BMP_STRING, macro in libtasn1
ASN1_ETYPE_BOOLEAN, macro in libtasn1
ASN1_ETYPE_CHOICE, macro in libtasn1
ASN1_ETYPE_CONSTANT, macro in libtasn1
ASN1_ETYPE_DEFAULT, macro in libtasn1
ASN1_ETYPE_DEFINITIONS, macro in libtasn1
ASN1_ETYPE_ENUMERATED, macro in libtasn1
ASN1_ETYPE_GENERALIZED_TIME, macro in libtasn1
ASN1_ETYPE_GENERALSTRING, macro in libtasn1
ASN1_ETYPE_IA5_STRING, macro in libtasn1
ASN1_ETYPE_IDENTIFIER, macro in libtasn1
ASN1_ETYPE_IMPORTS, macro in libtasn1
ASN1_ETYPE_INTEGER, macro in libtasn1
ASN1_ETYPE_INVALID, macro in libtasn1
ASN1_ETYPE_NULL, macro in libtasn1
ASN1_ETYPE_NUMERIC_STRING, macro in libtasn1
ASN1_ETYPE_OBJECT_ID, macro in libtasn1
ASN1_ETYPE_OCTET_STRING, macro in libtasn1
ASN1_ETYPE_PRINTABLE_STRING, macro in libtasn1
ASN1_ETYPE_SEQUENCE, macro in libtasn1
ASN1_ETYPE_SEQUENCE_OF, macro in libtasn1
ASN1_ETYPE_SET, macro in libtasn1
ASN1_ETYPE_SET_OF, macro in libtasn1
ASN1_ETYPE_SIZE, macro in libtasn1
ASN1_ETYPE_TAG, macro in libtasn1
ASN1_ETYPE_TELETEX_STRING, macro in libtasn1
ASN1_ETYPE_UNIVERSAL_STRING, macro in libtasn1
ASN1_ETYPE_UTC_TIME, macro in libtasn1
ASN1_ETYPE_UTF8_STRING, macro in libtasn1
ASN1_ETYPE_VISIBLE_STRING, macro in libtasn1
asn1_expand_any_defined_by, function in libtasn1
asn1_expand_octet_string, function in libtasn1

F

ASN1_FILE_NOT_FOUND, macro in libtasn1
asn1_find_node, function in libtasn1
asn1_find_structure_from_oid, function in libtasn1

G

ASN1_GENERIC_ERROR, macro in libtasn1
asn1_get_bit_der, function in libtasn1
asn1_get_length_ber, function in libtasn1
asn1_get_length_der, function in libtasn1
asn1_get_octet_der, function in libtasn1
asn1_get_tag_der, function in libtasn1

I

ASN1_IDENTIFIER_NOT_FOUND, macro in libtasn1

L

asn1_length_der, function in libtasn1

M

ASN1_MAX_ERROR_DESCRIPTION_SIZE, macro in libtasn1
ASN1_MAX_LENGTH_SIZE, macro in libtasn1
ASN1_MAX_NAME_SIZE, macro in libtasn1
ASN1_MAX_TAG_SIZE, macro in libtasn1
ASN1_MAX_TL_SIZE, macro in libtasn1
ASN1_MEM_ALLOC_ERROR, macro in libtasn1
ASN1_MEM_ERROR, macro in libtasn1

N

ASN1_NAME_TOO_LONG, macro in libtasn1
asn1_node, typedef in libtasn1
node_asn, macro in libtasn1
node_asn_struct, macro in libtasn1
node_data_struct, macro in libtasn1
asn1_node_st, typedef in libtasn1
asn1_number_of_elements, function in libtasn1

O

asn1_octet_der, function in libtasn1

P

asn1_parser2array, function in libtasn1
asn1_parser2tree, function in libtasn1
asn1_perror, function in libtasn1
ASN1_PRINT_ALL, macro in libtasn1
ASN1_PRINT_NAME, macro in libtasn1
ASN1_PRINT_NAME_TYPE, macro in libtasn1
ASN1_PRINT_NAME_TYPE_VALUE, macro in libtasn1
asn1_print_structure, function in libtasn1

R

asn1_read_node_value, function in libtasn1
asn1_read_tag, function in libtasn1
asn1_read_value, function in libtasn1
asn1_read_value_type, function in libtasn1
asn1_retCode, typedef in libtasn1

S

asn1_static_node, typedef in libtasn1
asn1_static_node_t, macro in libtasn1
static_struct_asn, macro in libtasn1
asn1_strerror, function in libtasn1
ASN1_SUCCESS, macro in libtasn1
ASN1_SYNTAX_ERROR, macro in libtasn1

T

ASN1_TAG_BIT_STRING, macro in libtasn1
ASN1_TAG_BMP_STRING, macro in libtasn1
ASN1_TAG_BOOLEAN, macro in libtasn1
ASN1_TAG_ENUMERATED, macro in libtasn1
ASN1_TAG_ERROR, macro in libtasn1
ASN1_TAG_GENERALIZEDTime, macro in libtasn1
ASN1_TAG_GENERALSTRING, macro in libtasn1
ASN1_TAG_IA5_STRING, macro in libtasn1
ASN1_TAG_IMPLICIT, macro in libtasn1
ASN1_TAG_INTEGER, macro in libtasn1
ASN1_TAG_NULL, macro in libtasn1
ASN1_TAG_NUMERIC_STRING, macro in libtasn1
ASN1_TAG_OBJECT_ID, macro in libtasn1
ASN1_TAG_OCTET_STRING, macro in libtasn1
ASN1_TAG_PRINTABLE_STRING, macro in libtasn1
ASN1_TAG_SEQUENCE, macro in libtasn1
ASN1_TAG_SET, macro in libtasn1
ASN1_TAG_TELETEX_STRING, macro in libtasn1
ASN1_TAG_UNIVERSAL_STRING, macro in libtasn1
ASN1_TAG_UTCTime, macro in libtasn1
ASN1_TAG_UTF8_STRING, macro in libtasn1
ASN1_TAG_VISIBLE_STRING, macro in libtasn1
ASN1_TYPE, macro in libtasn1
ASN1_TYPE_EMPTY, macro in libtasn1

V

ASN1_VALUE_NOT_FOUND, macro in libtasn1
ASN1_VALUE_NOT_VALID, macro in libtasn1
ASN1_VERSION, macro in libtasn1

W

asn1_write_value, function in libtasn1
libtasn1-3.4/doc/reference/html/ix03.html0000664000000000000000000000347512244722065015123 00000000000000 Index of new symbols in 1.6

Index of new symbols in 1.6

A

asn1_perror, asn1_perror ()
asn1_strerror, asn1_strerror ()
libtasn1-3.4/doc/reference/html/left.png0000644000000000000000000000071312244722065015100 00000000000000‰PNG  IHDRàw=øbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÒ1&¹³[(XIDATxœµ•!OÃPEïÛ*ˆ‰ŠID%~ꊯ˜ÄÕ"pæ'öŘ`sÜ–¥rKf–´‚¤â h—mi—ÇIžz}÷ܯIû¤–.pÚö\“`xä‹ ˆl‡?l·[²,H¬‡¯×k<Ï#Žcþ%\’AUx[S³7–n6ù¾¯år¹ßèõzE‰‡’s’žŒ1³ºö“²æÅj@œ—NL$ݤiª0 ¿5/ð}¿²\E‡Ž¤KIo¥Í“$a0üjÞdF£bŠkIê„‹æAh>ŸW¶lC'?“tk;|/t*I»ÝN«ÕÊZø^`Œy•4ë÷ûšN§r]×® çJÒÌó<«’½À“Út»Ýú€à`±Xàºî1@p´ä€¸d½÷ŽZ')høÖÚK¬ ª$V?%Å]€­+³L’sgUKà"ÿw5â3O·•ÜòIEND®B`‚libtasn1-3.4/doc/reference/html/libtasn1.devhelp20000664000000000000000000003651712244722065016625 00000000000000 libtasn1-3.4/doc/reference/html/up.png0000644000000000000000000000062612244722065014575 00000000000000‰PNG  IHDRàw=øbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÒ2.œE€Ù#IDATxœí“=JÄ@F¿o‰] !+¤œ2…Å[ZÌ<@/á<€¥…XÛ Ú­20v±³ˆÂ…Ïj0»lþvV°ðA`˜ ïÍ ð—t*iùâHÒ­~xR~'IUUÉ9ç#OÁ‘my–eJÓTeY†GvÉ@x¤O#ß;2E>9²|t$DÞ9nnBäíÈjµò‘BRIsIªë:HîŸ8ŽU…œùëùPÖÚN™1fc­sNÎ95Mã§–ɵ¤ ׿ŸØŒ1~¸pEòe$ïIž°€Ç î7nrDòf!;Ã`¨çÝ'äykíÎI’øáû䲤sI_]ÿÇy—‡‘€ÅÀ^^I>O>Á¡ø­§²š?YBIEND®B`‚libtasn1-3.4/doc/reference/html/right.png0000644000000000000000000000073012244722065015262 00000000000000‰PNG  IHDRàw=øbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÒ2 I%Á=eIDATxœ­”!oÂ@†Ÿ.'**M0$ÄÁ$¿?1~¢vIeEuLlÉ&–Ô4‚ä Í¶B»Ý›œ¹|÷>ï—ûî …$ݶ©oc<”´ÑA©¤×€X’ò Index of deprecated symbols

Index of deprecated symbols

libtasn1-3.4/doc/reference/html/style.css0000644000000000000000000001210012244722065015303 00000000000000.synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; border: solid 1px #d3d7cf; padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ background: #e6f3ff; border: solid 1px #729fcf; padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } @media screen { sup a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { display: inline-block; position: relative; top:-5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 3.2em; padding-bottom: 20em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; z-index: 10; } .navigation a, .navigation a:visited { /* tango:scarlet red 3 */ color: #a40000; } .navigation a:hover { /* tango:scarlet red 1 */ color: #ef2929; } td.shortcuts { /* tango:scarlet red 1 */ color: #ef2929; font-size: 80%; white-space: nowrap; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } .navigation .title { font-size: 200%; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } hr { /* tango:aluminium 3 */ color: #babdb6; background: #babdb6; border: none 0px; height: 1px; clear: both; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .warning { /* tango:orange 0/1 */ background: #ffeed9; border-color: #ffb04f; } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; border-color: #abf562; } .note, .warning { padding: 0.5em; border-width: 1px; border-style: solid; } .note h3, .warning h3 { margin-top: 0.0em } .note p, .warning p { margin-bottom: 0.0em } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-size: 80%; font-weight: normal; } /* code listings */ .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */ .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */ .listing_code .programlisting .function { color: #000000; font-weight: bold; } .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */ .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */ .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .normal { color: #000000; } .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */ .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */ .listing_code .programlisting .type { color: #000000; } .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */ .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; } .listing_lines pre, .listing_code pre { margin: 0px; } libtasn1-3.4/doc/reference/html/index.sgml0000664000000000000000000003322412244722065015440 00000000000000 libtasn1-3.4/doc/reference/html/ix04.html0000664000000000000000000000306712244722065015121 00000000000000 Index of new symbols in 2.0

Index of new symbols in 2.0

A

asn1_get_length_ber, asn1_get_length_ber ()
libtasn1-3.4/doc/reference/html/home.png0000644000000000000000000000121612244722065015075 00000000000000‰PNG  IHDRàw=øbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÒ1õÚKvIDATxœÕ•±kqÅ?ßrC‡ßàpà ~C„np¼¡CAAJ .B-\'G‡]:Ü “‚ƒCÇ -(ˆ8´à Ô€!…fD°€…çÒ“klbRÛÁoyüxïûîËïwpðIJº<°of_®-@ÒððçRH•´ÏfÖŸtèÂü¤^¯×ÓÚÚš’$Q«ÕÒ|“ôpâ’¶€gív;X^^&Ïs¢(bww—Z­F£ÑÀ9Çææ&Þû3à¶™ Æ’^IRµZUE.0Z]]Uš¦ ÃPY–Mü8óHÒGIÚÙÙÑìììæeŸkqqñÒ€™!ó  $ÛÛÛ¬¯¯3Œn eýþ{-/seeeìÔÃŒãXóóóåO‡Í·$ý8==UÇS™—é½×ÑÑQòRR€¤'ã–9-sÚÛÛ+B^ éC·Û•sîŸÍËÂ+%À°<7³ŸWô˜¿ õâ:™2IEND®B`‚libtasn1-3.4/doc/reference/html/libtasn1-libtasn1.html0000664000000000000000000044141012244722065017563 00000000000000 libtasn1

libtasn1

libtasn1

Synopsis

#define             ASN1_API
#define             ASN1_VERSION
#define             ASN1_SUCCESS
#define             ASN1_FILE_NOT_FOUND
#define             ASN1_ELEMENT_NOT_FOUND
#define             ASN1_IDENTIFIER_NOT_FOUND
#define             ASN1_DER_ERROR
#define             ASN1_VALUE_NOT_FOUND
#define             ASN1_GENERIC_ERROR
#define             ASN1_VALUE_NOT_VALID
#define             ASN1_TAG_ERROR
#define             ASN1_TAG_IMPLICIT
#define             ASN1_ERROR_TYPE_ANY
#define             ASN1_SYNTAX_ERROR
#define             ASN1_MEM_ERROR
#define             ASN1_MEM_ALLOC_ERROR
#define             ASN1_DER_OVERFLOW
#define             ASN1_NAME_TOO_LONG
#define             ASN1_ARRAY_ERROR
#define             ASN1_ELEMENT_NOT_EMPTY
#define             ASN1_PRINT_NAME
#define             ASN1_PRINT_NAME_TYPE
#define             ASN1_PRINT_NAME_TYPE_VALUE
#define             ASN1_PRINT_ALL
#define             ASN1_CLASS_UNIVERSAL
#define             ASN1_CLASS_APPLICATION
#define             ASN1_CLASS_CONTEXT_SPECIFIC
#define             ASN1_CLASS_PRIVATE
#define             ASN1_CLASS_STRUCTURED
#define             ASN1_TAG_BOOLEAN
#define             ASN1_TAG_INTEGER
#define             ASN1_TAG_SEQUENCE
#define             ASN1_TAG_SET
#define             ASN1_TAG_OCTET_STRING
#define             ASN1_TAG_BIT_STRING
#define             ASN1_TAG_UTCTime
#define             ASN1_TAG_GENERALIZEDTime
#define             ASN1_TAG_OBJECT_ID
#define             ASN1_TAG_ENUMERATED
#define             ASN1_TAG_NULL
#define             ASN1_TAG_GENERALSTRING
#define             ASN1_TAG_NUMERIC_STRING
#define             ASN1_TAG_IA5_STRING
#define             ASN1_TAG_TELETEX_STRING
#define             ASN1_TAG_PRINTABLE_STRING
#define             ASN1_TAG_UNIVERSAL_STRING
#define             ASN1_TAG_BMP_STRING
#define             ASN1_TAG_UTF8_STRING
#define             ASN1_TAG_VISIBLE_STRING
typedef             asn1_node_st;
typedef             asn1_node;
#define             ASN1_MAX_NAME_SIZE
typedef             asn1_static_node;
#define             ASN1_ETYPE_INVALID
#define             ASN1_ETYPE_CONSTANT
#define             ASN1_ETYPE_IDENTIFIER
#define             ASN1_ETYPE_INTEGER
#define             ASN1_ETYPE_BOOLEAN
#define             ASN1_ETYPE_SEQUENCE
#define             ASN1_ETYPE_BIT_STRING
#define             ASN1_ETYPE_OCTET_STRING
#define             ASN1_ETYPE_TAG
#define             ASN1_ETYPE_DEFAULT
#define             ASN1_ETYPE_SIZE
#define             ASN1_ETYPE_SEQUENCE_OF
#define             ASN1_ETYPE_OBJECT_ID
#define             ASN1_ETYPE_ANY
#define             ASN1_ETYPE_SET
#define             ASN1_ETYPE_SET_OF
#define             ASN1_ETYPE_DEFINITIONS
#define             ASN1_ETYPE_CHOICE
#define             ASN1_ETYPE_IMPORTS
#define             ASN1_ETYPE_NULL
#define             ASN1_ETYPE_ENUMERATED
#define             ASN1_ETYPE_GENERALSTRING
#define             ASN1_ETYPE_NUMERIC_STRING
#define             ASN1_ETYPE_IA5_STRING
#define             ASN1_ETYPE_TELETEX_STRING
#define             ASN1_ETYPE_PRINTABLE_STRING
#define             ASN1_ETYPE_UNIVERSAL_STRING
#define             ASN1_ETYPE_BMP_STRING
#define             ASN1_ETYPE_UTF8_STRING
#define             ASN1_ETYPE_VISIBLE_STRING
#define             ASN1_ETYPE_UTC_TIME
#define             ASN1_ETYPE_GENERALIZED_TIME
#define             ASN1_DELETE_FLAG_ZEROIZE
typedef             asn1_data_node_st;
#define             ASN1_MAX_ERROR_DESCRIPTION_SIZE
int                 asn1_parser2tree                    (const char *file,
                                                         asn1_node *definitions,
                                                         char *error_desc);
int                 asn1_parser2array                   (const char *inputFileName,
                                                         const char *outputFileName,
                                                         const char *vectorName,
                                                         char *error_desc);
int                 asn1_array2tree                     (const asn1_static_node *array,
                                                         asn1_node *definitions,
                                                         char *errorDescription);
void                asn1_print_structure                (FILE *out,
                                                         asn1_node structure,
                                                         const char *name,
                                                         int mode);
int                 asn1_create_element                 (asn1_node definitions,
                                                         const char *source_name,
                                                         asn1_node *element);
int                 asn1_delete_structure               (asn1_node *structure);
int                 asn1_delete_structure2              (asn1_node *structure,
                                                         unsigned int flags);
int                 asn1_delete_element                 (asn1_node structure,
                                                         const char *element_name);
int                 asn1_write_value                    (asn1_node node_root,
                                                         const char *name,
                                                         const void *ivalue,
                                                         int len);
int                 asn1_read_value                     (asn1_node root,
                                                         const char *name,
                                                         void *ivalue,
                                                         int *len);
int                 asn1_read_value_type                (asn1_node root,
                                                         const char *name,
                                                         void *ivalue,
                                                         int *len,
                                                         unsigned int *etype);
int                 asn1_read_node_value                (asn1_node node,
                                                         asn1_data_node_st *data);
int                 asn1_number_of_elements             (asn1_node element,
                                                         const char *name,
                                                         int *num);
int                 asn1_der_coding                     (asn1_node element,
                                                         const char *name,
                                                         void *ider,
                                                         int *len,
                                                         char *ErrorDescription);
int                 asn1_der_decoding                   (asn1_node *element,
                                                         const void *ider,
                                                         int len,
                                                         char *errorDescription);
int                 asn1_der_decoding_element           (asn1_node *structure,
                                                         const char *elementName,
                                                         const void *ider,
                                                         int len,
                                                         char *errorDescription);
int                 asn1_der_decoding_startEnd          (asn1_node element,
                                                         const void *ider,
                                                         int len,
                                                         const char *name_element,
                                                         int *start,
                                                         int *end);
int                 asn1_expand_any_defined_by          (asn1_node definitions,
                                                         asn1_node *element);
int                 asn1_expand_octet_string            (asn1_node definitions,
                                                         asn1_node *element,
                                                         const char *octetName,
                                                         const char *objectName);
int                 asn1_read_tag                       (asn1_node root,
                                                         const char *name,
                                                         int *tagValue,
                                                         int *classValue);
const char *        asn1_find_structure_from_oid        (asn1_node definitions,
                                                         const char *oidValue);
const char *        asn1_check_version                  (const char *req_version);
const char *        asn1_strerror                       (int error);
void                asn1_perror                         (int error);
#define             ASN1_MAX_TAG_SIZE
#define             ASN1_MAX_LENGTH_SIZE
#define             ASN1_MAX_TL_SIZE
long                asn1_get_length_der                 (const unsigned char *der,
                                                         int der_len,
                                                         int *len);
long                asn1_get_length_ber                 (const unsigned char *ber,
                                                         int ber_len,
                                                         int *len);
void                asn1_length_der                     (unsigned long int len,
                                                         unsigned char *der,
                                                         int *der_len);
int                 asn1_decode_simple_der              (unsigned int etype,
                                                         const unsigned char *der,
                                                         unsigned int der_len,
                                                         const unsigned char **str,
                                                         unsigned int *str_len);
int                 asn1_encode_simple_der              (unsigned int etype,
                                                         const unsigned char *str,
                                                         unsigned int str_len,
                                                         unsigned char *tl,
                                                         unsigned int *tl_len);
asn1_node           asn1_find_node                      (asn1_node pointer,
                                                         const char *name);
int                 asn1_copy_node                      (asn1_node dst,
                                                         const char *dst_name,
                                                         asn1_node src,
                                                         const char *src_name);
int                 asn1_get_tag_der                    (const unsigned char *der,
                                                         int der_len,
                                                         unsigned char *cls,
                                                         int *len,
                                                         unsigned long *tag);
void                asn1_octet_der                      (const unsigned char *str,
                                                         int str_len,
                                                         unsigned char *der,
                                                         int *der_len);
int                 asn1_get_octet_der                  (const unsigned char *der,
                                                         int der_len,
                                                         int *ret_len,
                                                         unsigned char *str,
                                                         int str_size,
                                                         int *str_len);
void                asn1_bit_der                        (const unsigned char *str,
                                                         int bit_len,
                                                         unsigned char *der,
                                                         int *der_len);
int                 asn1_get_bit_der                    (const unsigned char *der,
                                                         int der_len,
                                                         int *ret_len,
                                                         unsigned char *str,
                                                         int str_size,
                                                         int *bit_len);
typedef             asn1_retCode;
#define             node_asn_struct
#define             node_asn
#define             ASN1_TYPE
#define             ASN1_TYPE_EMPTY
#define             static_struct_asn
#define             ASN1_ARRAY_TYPE
#define             asn1_static_node_t
#define             node_data_struct
#define             ASN1_DATA_NODE

Description

Details

ASN1_API

#define ASN1_API __attribute__((__visibility__("default")))


ASN1_VERSION

#define ASN1_VERSION "3.4"


ASN1_SUCCESS

#define ASN1_SUCCESS			0


ASN1_FILE_NOT_FOUND

#define ASN1_FILE_NOT_FOUND		1


ASN1_ELEMENT_NOT_FOUND

#define ASN1_ELEMENT_NOT_FOUND		2


ASN1_IDENTIFIER_NOT_FOUND

#define ASN1_IDENTIFIER_NOT_FOUND 3


ASN1_DER_ERROR

#define ASN1_DER_ERROR			4


ASN1_VALUE_NOT_FOUND

#define ASN1_VALUE_NOT_FOUND		5


ASN1_GENERIC_ERROR

#define ASN1_GENERIC_ERROR		6


ASN1_VALUE_NOT_VALID

#define ASN1_VALUE_NOT_VALID		7


ASN1_TAG_ERROR

#define ASN1_TAG_ERROR			8


ASN1_TAG_IMPLICIT

#define ASN1_TAG_IMPLICIT		9


ASN1_ERROR_TYPE_ANY

#define ASN1_ERROR_TYPE_ANY		10


ASN1_SYNTAX_ERROR

#define ASN1_SYNTAX_ERROR		11


ASN1_MEM_ERROR

#define ASN1_MEM_ERROR			12


ASN1_MEM_ALLOC_ERROR

#define ASN1_MEM_ALLOC_ERROR		13


ASN1_DER_OVERFLOW

#define ASN1_DER_OVERFLOW		14


ASN1_NAME_TOO_LONG

#define ASN1_NAME_TOO_LONG		15


ASN1_ARRAY_ERROR

#define ASN1_ARRAY_ERROR		16


ASN1_ELEMENT_NOT_EMPTY

#define ASN1_ELEMENT_NOT_EMPTY		17


ASN1_PRINT_NAME

#define ASN1_PRINT_NAME			1


ASN1_PRINT_NAME_TYPE

#define ASN1_PRINT_NAME_TYPE		2


ASN1_PRINT_NAME_TYPE_VALUE

#define ASN1_PRINT_NAME_TYPE_VALUE 3


ASN1_PRINT_ALL

#define ASN1_PRINT_ALL			4


ASN1_CLASS_UNIVERSAL

#define ASN1_CLASS_UNIVERSAL		0x00 /* old: 1 */


ASN1_CLASS_APPLICATION

#define ASN1_CLASS_APPLICATION		0x40 /* old: 2 */


ASN1_CLASS_CONTEXT_SPECIFIC

#define ASN1_CLASS_CONTEXT_SPECIFIC 0x80 /* old: 3 */


ASN1_CLASS_PRIVATE

#define ASN1_CLASS_PRIVATE		0xC0 /* old: 4 */


ASN1_CLASS_STRUCTURED

#define ASN1_CLASS_STRUCTURED		0x20


ASN1_TAG_BOOLEAN

#define ASN1_TAG_BOOLEAN		0x01


ASN1_TAG_INTEGER

#define ASN1_TAG_INTEGER		0x02


ASN1_TAG_SEQUENCE

#define ASN1_TAG_SEQUENCE		0x10


ASN1_TAG_SET

#define ASN1_TAG_SET			0x11


ASN1_TAG_OCTET_STRING

#define ASN1_TAG_OCTET_STRING		0x04


ASN1_TAG_BIT_STRING

#define ASN1_TAG_BIT_STRING		0x03


ASN1_TAG_UTCTime

#define ASN1_TAG_UTCTime		0x17


ASN1_TAG_GENERALIZEDTime

#define ASN1_TAG_GENERALIZEDTime 0x18


ASN1_TAG_OBJECT_ID

#define ASN1_TAG_OBJECT_ID		0x06


ASN1_TAG_ENUMERATED

#define ASN1_TAG_ENUMERATED		0x0A


ASN1_TAG_NULL

#define ASN1_TAG_NULL			0x05


ASN1_TAG_GENERALSTRING

#define ASN1_TAG_GENERALSTRING		0x1B


ASN1_TAG_NUMERIC_STRING

#define ASN1_TAG_NUMERIC_STRING		0x12


ASN1_TAG_IA5_STRING

#define ASN1_TAG_IA5_STRING		0x16


ASN1_TAG_TELETEX_STRING

#define ASN1_TAG_TELETEX_STRING		0x14


ASN1_TAG_PRINTABLE_STRING

#define ASN1_TAG_PRINTABLE_STRING 0x13


ASN1_TAG_UNIVERSAL_STRING

#define ASN1_TAG_UNIVERSAL_STRING 0x1C


ASN1_TAG_BMP_STRING

#define ASN1_TAG_BMP_STRING		0x1E


ASN1_TAG_UTF8_STRING

#define ASN1_TAG_UTF8_STRING		0x0C


ASN1_TAG_VISIBLE_STRING

#define ASN1_TAG_VISIBLE_STRING		0x1A


asn1_node_st

  typedef struct asn1_node_st asn1_node_st;


asn1_node

  typedef asn1_node_st *asn1_node;


ASN1_MAX_NAME_SIZE

#define ASN1_MAX_NAME_SIZE 64


asn1_static_node

  typedef struct asn1_static_node_st asn1_static_node;


ASN1_ETYPE_INVALID

#define ASN1_ETYPE_INVALID        0


ASN1_ETYPE_CONSTANT

#define ASN1_ETYPE_CONSTANT       1


ASN1_ETYPE_IDENTIFIER

#define ASN1_ETYPE_IDENTIFIER     2


ASN1_ETYPE_INTEGER

#define ASN1_ETYPE_INTEGER        3


ASN1_ETYPE_BOOLEAN

#define ASN1_ETYPE_BOOLEAN        4


ASN1_ETYPE_SEQUENCE

#define ASN1_ETYPE_SEQUENCE       5


ASN1_ETYPE_BIT_STRING

#define ASN1_ETYPE_BIT_STRING     6


ASN1_ETYPE_OCTET_STRING

#define ASN1_ETYPE_OCTET_STRING   7


ASN1_ETYPE_TAG

#define ASN1_ETYPE_TAG            8


ASN1_ETYPE_DEFAULT

#define ASN1_ETYPE_DEFAULT        9


ASN1_ETYPE_SIZE

#define ASN1_ETYPE_SIZE          10


ASN1_ETYPE_SEQUENCE_OF

#define ASN1_ETYPE_SEQUENCE_OF   11


ASN1_ETYPE_OBJECT_ID

#define ASN1_ETYPE_OBJECT_ID     12


ASN1_ETYPE_ANY

#define ASN1_ETYPE_ANY           13


ASN1_ETYPE_SET

#define ASN1_ETYPE_SET           14


ASN1_ETYPE_SET_OF

#define ASN1_ETYPE_SET_OF        15


ASN1_ETYPE_DEFINITIONS

#define ASN1_ETYPE_DEFINITIONS   16


ASN1_ETYPE_CHOICE

#define ASN1_ETYPE_CHOICE        18


ASN1_ETYPE_IMPORTS

#define ASN1_ETYPE_IMPORTS       19


ASN1_ETYPE_NULL

#define ASN1_ETYPE_NULL          20


ASN1_ETYPE_ENUMERATED

#define ASN1_ETYPE_ENUMERATED    21


ASN1_ETYPE_GENERALSTRING

#define ASN1_ETYPE_GENERALSTRING 27


ASN1_ETYPE_NUMERIC_STRING

#define ASN1_ETYPE_NUMERIC_STRING 28


ASN1_ETYPE_IA5_STRING

#define ASN1_ETYPE_IA5_STRING     29


ASN1_ETYPE_TELETEX_STRING

#define ASN1_ETYPE_TELETEX_STRING 30


ASN1_ETYPE_PRINTABLE_STRING

#define ASN1_ETYPE_PRINTABLE_STRING 31


ASN1_ETYPE_UNIVERSAL_STRING

#define ASN1_ETYPE_UNIVERSAL_STRING 32


ASN1_ETYPE_BMP_STRING

#define ASN1_ETYPE_BMP_STRING     33


ASN1_ETYPE_UTF8_STRING

#define ASN1_ETYPE_UTF8_STRING    34


ASN1_ETYPE_VISIBLE_STRING

#define ASN1_ETYPE_VISIBLE_STRING 35


ASN1_ETYPE_UTC_TIME

#define ASN1_ETYPE_UTC_TIME       36


ASN1_ETYPE_GENERALIZED_TIME

#define ASN1_ETYPE_GENERALIZED_TIME 37


ASN1_DELETE_FLAG_ZEROIZE

#define ASN1_DELETE_FLAG_ZEROIZE 1


asn1_data_node_st

  typedef struct asn1_data_node_st asn1_data_node_st;


ASN1_MAX_ERROR_DESCRIPTION_SIZE

#define ASN1_MAX_ERROR_DESCRIPTION_SIZE 128


asn1_parser2tree ()

int                 asn1_parser2tree                    (const char *file,
                                                         asn1_node *definitions,
                                                         char *error_desc);

Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in file file.

file :

specify the path and the name of file that contains ASN.1 declarations.

definitions :

return the pointer to the structure created from "file" ASN.1 declarations.

error_desc :

return the error description or an empty string if success.

Returns :

ASN1_SUCCESS if the file has a correct syntax and every identifier is known, ASN1_ELEMENT_NOT_EMPTY if definitions not NULL, ASN1_FILE_NOT_FOUND if an error occured while opening file, ASN1_SYNTAX_ERROR if the syntax is not correct, ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier that is not defined, ASN1_NAME_TOO_LONG if in the file there is an identifier whith more than ASN1_MAX_NAME_SIZE characters.

asn1_parser2array ()

int                 asn1_parser2array                   (const char *inputFileName,
                                                         const char *outputFileName,
                                                         const char *vectorName,
                                                         char *error_desc);

Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in inputFileName file. If inputFileName is "/aa/bb/xx.yy" and outputFileName is NULL, the file created is "/aa/bb/xx_asn1_tab.c". If vectorName is NULL the vector name will be "xx_asn1_tab".

inputFileName :

specify the path and the name of file that contains ASN.1 declarations.

outputFileName :

specify the path and the name of file that will contain the C vector definition.

vectorName :

specify the name of the C vector.

error_desc :

return the error description or an empty string if success.

Returns :

ASN1_SUCCESS if the file has a correct syntax and every identifier is known, ASN1_FILE_NOT_FOUND if an error occured while opening inputFileName, ASN1_SYNTAX_ERROR if the syntax is not correct, ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier that is not defined, ASN1_NAME_TOO_LONG if in the file there is an identifier whith more than ASN1_MAX_NAME_SIZE characters.

asn1_array2tree ()

int                 asn1_array2tree                     (const asn1_static_node *array,
                                                         asn1_node *definitions,
                                                         char *errorDescription);

Creates the structures needed to manage the ASN.1 definitions. array is a vector created by asn1_parser2array().

array :

specify the array that contains ASN.1 declarations

definitions :

return the pointer to the structure created by *ARRAY ASN.1 declarations

errorDescription :

return the error description.

Returns :

ASN1_SUCCESS if structure was created correctly, ASN1_ELEMENT_NOT_EMPTY if *definitions not NULL, ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier that is not defined (see errorDescription for more information), ASN1_ARRAY_ERROR if the array pointed by array is wrong.

asn1_print_structure ()

void                asn1_print_structure                (FILE *out,
                                                         asn1_node structure,
                                                         const char *name,
                                                         int mode);

Prints on the out file descriptor the structure's tree starting from the name element inside the structure structure.

out :

pointer to the output file (e.g. stdout).

structure :

pointer to the structure that you want to visit.

name :

an element of the structure

mode :

specify how much of the structure to print, can be ASN1_PRINT_NAME, ASN1_PRINT_NAME_TYPE, ASN1_PRINT_NAME_TYPE_VALUE, or ASN1_PRINT_ALL.

asn1_create_element ()

int                 asn1_create_element                 (asn1_node definitions,
                                                         const char *source_name,
                                                         asn1_node *element);

Creates a structure of type source_name. Example using "pkix.asn":

rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr);

definitions :

pointer to the structure returned by "parser_asn1" function

source_name :

the name of the type of the new structure (must be inside p_structure).

element :

pointer to the structure created.

Returns :

ASN1_SUCCESS if creation OK, ASN1_ELEMENT_NOT_FOUND if source_name is not known.

asn1_delete_structure ()

int                 asn1_delete_structure               (asn1_node *structure);

Deletes the structure *structure. At the end, *structure is set to NULL.

structure :

pointer to the structure that you want to delete.

Returns :

ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if *structure was NULL.

asn1_delete_structure2 ()

int                 asn1_delete_structure2              (asn1_node *structure,
                                                         unsigned int flags);

Deletes the structure *structure. At the end, *structure is set to NULL.

structure :

pointer to the structure that you want to delete.

flags :

additional flags (see ASN1_DELETE_FLAG)

Returns :

ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if *structure was NULL.

asn1_delete_element ()

int                 asn1_delete_element                 (asn1_node structure,
                                                         const char *element_name);

Deletes the element named *element_name inside *structure.

structure :

pointer to the structure that contains the element you want to delete.

element_name :

element's name you want to delete.

Returns :

ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if the element_name was not found.

asn1_write_value ()

int                 asn1_write_value                    (asn1_node node_root,
                                                         const char *name,
                                                         const void *ivalue,
                                                         int len);

Set the value of one element inside a structure.

If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn":

result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0);

Description for each type:

INTEGER: VALUE must contain a two's complement form integer.

value[0]=0xFF , len=1 -> integer=-1. value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. value[0]=0x01 , len=1 -> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. value="123" , len=0 -> integer= 123.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0.

value="TRUE" , len=1 -> boolean=TRUE. value="FALSE" , len=1 -> boolean=FALSE.

OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0.

value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha.

UTCTime: VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss-hh'mm'", "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm-hh'mm'". LEN != 0.

value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time

GeneralizedTime: VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s-hh'mm'", "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm-hh'mm'" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0

value="2001010112001.12-0700" , len=1 -> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time

OCTET STRING: VALUE contains the octet string and LEN is the number of octets.

value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes octet string

GeneralString: VALUE contains the generalstring and LEN is the number of octets.

value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes generalstring

BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits.

value="$\backslash$xCF" , len=6 -> bit string="110011" (six bits)

CHOICE: if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\:

result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1);

ANY: VALUE indicates the der encoding of a structure. LEN != 0.

SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it's the first one, "?2" for the second and so on.

Using "pkix.asn"\:

result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1);

SET OF: the same as SEQUENCE OF. Using "pkix.asn":

result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1);

node_root :

pointer to a structure

name :

the name of the element inside the structure that you want to set.

ivalue :

vector used to specify the value to set. If len is >0, VALUE must be a two's complement form integer. if len=0 *VALUE must be a null terminated string with an integer value.

len :

number of bytes of *value to use to set the value: value[0]..value[len-1] or 0 if value is a null terminated string

Returns :

ASN1_SUCCESS if the value was set, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, and ASN1_VALUE_NOT_VALID if ivalue has a wrong format.

asn1_read_value ()

int                 asn1_read_value                     (asn1_node root,
                                                         const char *name,
                                                         void *ivalue,
                                                         int *len);

Returns the value of one element inside a structure.

If an element is OPTIONAL and the function "read_value" returns ASN1_ELEMENT_NOT_FOUND, it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on.

INTEGER: VALUE will contain a two's complement form integer.

integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6.

OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1").

LEN = strlen(VALUE)+1

UTCTime: VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1.

GeneralizedTime: VALUE will be a null terminated string in the same format used to set the value.

OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets.

GeneralString: VALUE will contain the generalstring and LEN will be the number of octets.

BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits.

CHOICE: If NAME indicates a choice type, VALUE will specify the alternative selected.

ANY: If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used.

root :

pointer to a structure.

name :

the name of the element inside a structure that you want to read.

ivalue :

vector that will contain the element's content, must be a pointer to memory cells already allocated.

len :

number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value.

Returns :

ASN1_SUCCESS if value is returned, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, ASN1_VALUE_NOT_FOUND if there isn't any value for the element selected, and ASN1_MEM_ERROR if The value vector isn't big enough to store the result, and in this case len will contain the number of bytes needed.

asn1_read_value_type ()

int                 asn1_read_value_type                (asn1_node root,
                                                         const char *name,
                                                         void *ivalue,
                                                         int *len,
                                                         unsigned int *etype);

Returns the value of one element inside a structure.

If an element is OPTIONAL and the function "read_value" returns ASN1_ELEMENT_NOT_FOUND, it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on.

INTEGER: VALUE will contain a two's complement form integer.

integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6.

OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1").

LEN = strlen(VALUE)+1

UTCTime: VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss-hh'mm'". LEN=strlen(VALUE)+1.

GeneralizedTime: VALUE will be a null terminated string in the same format used to set the value.

OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets.

GeneralString: VALUE will contain the generalstring and LEN will be the number of octets.

BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits.

CHOICE: If NAME indicates a choice type, VALUE will specify the alternative selected.

ANY: If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used.

root :

pointer to a structure.

name :

the name of the element inside a structure that you want to read.

ivalue :

vector that will contain the element's content, must be a pointer to memory cells already allocated.

len :

number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value.

etype :

The type of the value read (ASN1_ETYPE)

Returns :

ASN1_SUCCESS if value is returned, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, ASN1_VALUE_NOT_FOUND if there isn't any value for the element selected, and ASN1_MEM_ERROR if The value vector isn't big enough to store the result, and in this case len will contain the number of bytes needed.

asn1_read_node_value ()

int                 asn1_read_node_value                (asn1_node node,
                                                         asn1_data_node_st *data);

Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values.

node :

pointer to a node.

data :

a point to a asn1_data_node_st

Returns :

ASN1_SUCCESS if the node exists.

asn1_number_of_elements ()

int                 asn1_number_of_elements             (asn1_node element,
                                                         const char *name,
                                                         int *num);

Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ...

element :

pointer to the root of an ASN1 structure.

name :

the name of a sub-structure of ROOT.

num :

pointer to an integer where the result will be stored

Returns :

ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if name is not known, ASN1_GENERIC_ERROR if pointer num is NULL.

asn1_der_coding ()

int                 asn1_der_coding                     (asn1_node element,
                                                         const char *name,
                                                         void *ider,
                                                         int *len,
                                                         char *ErrorDescription);

Creates the DER encoding for the NAME structure (inside *POINTER structure).

element :

pointer to an ASN1 element

name :

the name of the structure you want to encode (it must be inside *POINTER).

ider :

vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated.

len :

number of bytes of *ider: ider[0]..ider[len-1], Initialy holds the sizeof of der vector.

ErrorDescription :

return the error description or an empty string if success.

Returns :

ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, ASN1_VALUE_NOT_FOUND if there is an element without a value, ASN1_MEM_ERROR if the ider vector isn't big enough and in this case len will contain the length needed.

asn1_der_decoding ()

int                 asn1_der_decoding                   (asn1_node *element,
                                                         const void *ider,
                                                         int len,
                                                         char *errorDescription);

Fill the structure *ELEMENT with values of a DER encoding string. The structure must just be created with function asn1_create_element(). If an error occurs during the decoding procedure, the *ELEMENT is deleted and set equal to NULL.

element :

pointer to an ASN1 structure.

ider :

vector that contains the DER encoding.

len :

number of bytes of *ider: ider[0]..ider[len-1].

errorDescription :

null-terminated string contains details when an error occurred.

Returns :

ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is NULL, and ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn't match the structure name (*ELEMENT deleted).

asn1_der_decoding_element ()

int                 asn1_der_decoding_element           (asn1_node *structure,
                                                         const char *elementName,
                                                         const void *ider,
                                                         int len,
                                                         char *errorDescription);

Fill the element named ELEMENTNAME with values of a DER encoding string. The structure must just be created with function asn1_create_element(). The DER vector must contain the encoding string of the whole STRUCTURE. If an error occurs during the decoding procedure, the *STRUCTURE is deleted and set equal to NULL.

structure :

pointer to an ASN1 structure

elementName :

name of the element to fill

ider :

vector that contains the DER encoding of the whole structure.

len :

number of bytes of *der: der[0]..der[len-1]

errorDescription :

null-terminated string contains details when an error occurred.

Returns :

ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is NULL or elementName == NULL, and ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn't match the structure structure (*ELEMENT deleted).

asn1_der_decoding_startEnd ()

int                 asn1_der_decoding_startEnd          (asn1_node element,
                                                         const void *ider,
                                                         int len,
                                                         const char *name_element,
                                                         int *start,
                                                         int *end);

Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function asn1_der_decoding() to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure.

One example is the sequence "tbsCertificate" inside an X509 certificate.

element :

pointer to an ASN1 element

ider :

vector that contains the DER encoding.

len :

number of bytes of *ider: ider[0]..ider[len-1]

name_element :

an element of NAME structure.

start :

the position of the first byte of NAME_ELEMENT decoding (ider[*start])

end :

the position of the last byte of NAME_ELEMENT decoding (ider[*end])

Returns :

ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is asn1_node EMPTY or name_element is not a valid element, ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn't match the structure ELEMENT.

asn1_expand_any_defined_by ()

int                 asn1_expand_any_defined_by          (asn1_node definitions,
                                                         asn1_node *element);

Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER.

definitions :

ASN1 definitions

element :

pointer to an ASN1 structure

Returns :

ASN1_SUCCESS if Substitution OK, ASN1_ERROR_TYPE_ANY if some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID -> TYPE association, or other error codes depending on DER decoding.

asn1_expand_octet_string ()

int                 asn1_expand_octet_string            (asn1_node definitions,
                                                         asn1_node *element,
                                                         const char *octetName,
                                                         const char *objectName);

Expands an "OCTET STRING" element of a structure created from a DER decoding process (the asn1_der_decoding() function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME.

definitions :

ASN1 definitions

element :

pointer to an ASN1 structure

octetName :

name of the OCTECT STRING field to expand.

objectName :

name of the OBJECT IDENTIFIER field to use to define the type for expansion.

Returns :

ASN1_SUCCESS if substitution OK, ASN1_ELEMENT_NOT_FOUND if objectName or octetName are not correct, ASN1_VALUE_NOT_VALID if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding.

asn1_read_tag ()

int                 asn1_read_tag                       (asn1_node root,
                                                         const char *name,
                                                         int *tagValue,
                                                         int *classValue);

Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: ASN1_CLASS_APPLICATION, ASN1_CLASS_UNIVERSAL, ASN1_CLASS_PRIVATE or ASN1_CLASS_CONTEXT_SPECIFIC.

root :

pointer to a structure

name :

the name of the element inside a structure.

tagValue :

variable that will contain the TAG value.

classValue :

variable that will specify the TAG type.

Returns :

ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if name is not a valid element.

asn1_find_structure_from_oid ()

const char *        asn1_find_structure_from_oid        (asn1_node definitions,
                                                         const char *oidValue);

Search the structure that is defined just after an OID definition.

definitions :

ASN1 definitions

oidValue :

value of the OID to search (e.g. "1.2.3.4").

Returns :

NULL when oidValue not found, otherwise the pointer to a constant string that contains the element name defined just after the OID.

asn1_check_version ()

const char *        asn1_check_version                  (const char *req_version);

Check that the version of the library is at minimum the requested one and return the version string; return NULL if the condition is not satisfied. If a NULL is passed to this function, no check is done, but the version string is simply returned.

See ASN1_VERSION for a suitable req_version string.

req_version :

Required version number, or NULL.

Returns :

Version string of run-time library, or NULL if the run-time library does not meet the required version number.

asn1_strerror ()

const char *        asn1_strerror                       (int error);

Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function.

error :

is an error returned by a libtasn1 function.

Returns :

Pointer to static zero-terminated string describing error code.

Since 1.6


asn1_perror ()

void                asn1_perror                         (int error);

Prints a string to stderr with a description of an error. This function is like perror(). The only difference is that it accepts an error returned by a libtasn1 function.

error :

is an error returned by a libtasn1 function.

Since 1.6


ASN1_MAX_TAG_SIZE

#define ASN1_MAX_TAG_SIZE 4


ASN1_MAX_LENGTH_SIZE

#define ASN1_MAX_LENGTH_SIZE 9


ASN1_MAX_TL_SIZE

#define ASN1_MAX_TL_SIZE (ASN1_MAX_TAG_SIZE+ASN1_MAX_LENGTH_SIZE)


asn1_get_length_der ()

long                asn1_get_length_der                 (const unsigned char *der,
                                                         int der_len,
                                                         int *len);

Extract a length field from DER data.

der :

DER data to decode.

der_len :

Length of DER data to decode.

len :

Output variable containing the length of the DER length field.

Returns :

Return the decoded length value, or -1 on indefinite length, or -2 when the value was too big to fit in a int, or -4 when the decoded length value plus len would exceed der_len.

asn1_get_length_ber ()

long                asn1_get_length_ber                 (const unsigned char *ber,
                                                         int ber_len,
                                                         int *len);

Extract a length field from BER data. The difference to asn1_get_length_der() is that this function will return a length even if the value has indefinite encoding.

ber :

BER data to decode.

ber_len :

Length of BER data to decode.

len :

Output variable containing the length of the BER length field.

Returns :

Return the decoded length value, or negative value when the value was too big.

Since 2.0


asn1_length_der ()

void                asn1_length_der                     (unsigned long int len,
                                                         unsigned char *der,
                                                         int *der_len);

Creates the DER encoding of the provided length value. The der buffer must have enough room for the output. The maximum length this function will encode is ASN1_MAX_LENGTH_SIZE.

To know the size of the DER encoding use a NULL value for der.

len :

value to convert.

der :

buffer to hold the returned encoding (may be NULL).

der_len :

number of meaningful bytes of ANS (der[0]..der[der_len-1]).

asn1_decode_simple_der ()

int                 asn1_decode_simple_der              (unsigned int etype,
                                                         const unsigned char *der,
                                                         unsigned int der_len,
                                                         const unsigned char **str,
                                                         unsigned int *str_len);

Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the der.

etype :

The type of the string to be encoded (ASN1_ETYPE_)

der :

the encoded string

der_len :

the bytes of the encoded string

str :

a pointer to the data

str_len :

the length of the data

Returns :

ASN1_SUCCESS if successful or an error value.

asn1_encode_simple_der ()

int                 asn1_encode_simple_der              (unsigned int etype,
                                                         const unsigned char *str,
                                                         unsigned int str_len,
                                                         unsigned char *tl,
                                                         unsigned int *tl_len);

Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in tl, which should have space for at least ASN1_MAX_TL_SIZE bytes. Initially tl_len should contain the size of tl.

The complete DER encoding should consist of the value in tl appended with the provided str.

etype :

The type of the string to be encoded (ASN1_ETYPE_)

str :

the string data.

str_len :

the string length

tl :

the encoded tag and length

tl_len :

the bytes of the tl field

Returns :

ASN1_SUCCESS if successful or an error value.

asn1_find_node ()

asn1_node           asn1_find_node                      (asn1_node pointer,
                                                         const char *name);

Searches for an element called name starting from pointer. The name is composed by differents identifiers separated by dots. When *pointer has a name, the first identifier must be the name of *pointer, otherwise it must be the name of one child of *pointer.

pointer :

NODE_ASN element pointer.

name :

null terminated string with the element's name to find.

Returns :

the search result, or NULL if not found.

asn1_copy_node ()

int                 asn1_copy_node                      (asn1_node dst,
                                                         const char *dst_name,
                                                         asn1_node src,
                                                         const char *src_name);

Create a deep copy of a asn1_node variable.

dst :

Destination asn1_node node.

dst_name :

Field name in destination node.

src :

Source asn1_node node.

src_name :

Field name in source node.

Returns :

Return ASN1_SUCCESS on success.

asn1_get_tag_der ()

int                 asn1_get_tag_der                    (const unsigned char *der,
                                                         int der_len,
                                                         unsigned char *cls,
                                                         int *len,
                                                         unsigned long *tag);

Decode the class and TAG from DER code.

der :

DER data to decode.

der_len :

Length of DER data to decode.

cls :

Output variable containing decoded class.

len :

Output variable containing the length of the DER TAG data.

tag :

Output variable containing the decoded tag.

Returns :

Returns ASN1_SUCCESS on success, or an error.

asn1_octet_der ()

void                asn1_octet_der                      (const unsigned char *str,
                                                         int str_len,
                                                         unsigned char *der,
                                                         int *der_len);

Creates a length-value DER encoding for the input data. The DER encoding of the input data will be placed in the der variable.

Note that the OCTET STRING tag is not included in the output.

This function does not return any value because it is expected that der_len will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using asn1_length_der().

str :

the input data.

str_len :

STR length (str[0]..str[*str_len-1]).

der :

encoded string returned.

der_len :

number of meaningful bytes of DER (der[0]..der[der_len-1]).

asn1_get_octet_der ()

int                 asn1_get_octet_der                  (const unsigned char *der,
                                                         int der_len,
                                                         int *ret_len,
                                                         unsigned char *str,
                                                         int str_size,
                                                         int *str_len);

Extract an OCTET SEQUENCE from DER data.

der :

DER data to decode containing the OCTET SEQUENCE.

der_len :

Length of DER data to decode.

ret_len :

Output variable containing the length of the DER data.

str :

Pre-allocated output buffer to put decoded OCTET SEQUENCE in.

str_size :

Length of pre-allocated output buffer.

str_len :

Output variable containing the length of the OCTET SEQUENCE.

Returns :

Returns ASN1_SUCCESS on success, or an error.

asn1_bit_der ()

void                asn1_bit_der                        (const unsigned char *str,
                                                         int bit_len,
                                                         unsigned char *der,
                                                         int *der_len);

Creates a length-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in der.

Note that the BIT STRING tag is not included in the output.

This function does not return any value because it is expected that der_len will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using asn1_length_der().

str :

BIT string.

bit_len :

number of meaningful bits in STR.

der :

string returned.

der_len :

number of meaningful bytes of DER (der[0]..der[ans_len-1]).

asn1_get_bit_der ()

int                 asn1_get_bit_der                    (const unsigned char *der,
                                                         int der_len,
                                                         int *ret_len,
                                                         unsigned char *str,
                                                         int str_size,
                                                         int *bit_len);

Extract a BIT SEQUENCE from DER data.

der :

DER data to decode containing the BIT SEQUENCE.

der_len :

Length of DER data to decode.

ret_len :

Output variable containing the length of the DER data.

str :

Pre-allocated output buffer to put decoded BIT SEQUENCE in.

str_size :

Length of pre-allocated output buffer.

bit_len :

Output variable containing the size of the BIT SEQUENCE.

Returns :

Return ASN1_SUCCESS on success, or an error.

asn1_retCode

  typedef int asn1_retCode; /* type returned by libtasn1 functions */


node_asn_struct

#define node_asn_struct asn1_node_st


node_asn

#define node_asn asn1_node_st


ASN1_TYPE

#define ASN1_TYPE asn1_node


ASN1_TYPE_EMPTY

#define ASN1_TYPE_EMPTY NULL


static_struct_asn

#define static_struct_asn asn1_static_node_st


ASN1_ARRAY_TYPE

#define ASN1_ARRAY_TYPE asn1_static_node


asn1_static_node_t

#define asn1_static_node_t asn1_static_node


node_data_struct

#define node_data_struct asn1_data_node_st


ASN1_DATA_NODE

#define ASN1_DATA_NODE asn1_data_node_st

libtasn1-3.4/doc/reference/tmpl/0000775000000000000000000000000012244722065013531 500000000000000libtasn1-3.4/doc/reference/tmpl/libtasn1-unused.sgml0000664000000000000000000000000012244722065017341 00000000000000libtasn1-3.4/doc/reference/tmpl/libtasn1.sgml0000664000000000000000000002542112244722065016056 00000000000000 libtasn1 @file: @definitions: @error_desc: @Returns: @inputFileName: @outputFileName: @vectorName: @error_desc: @Returns: @array: @definitions: @errorDescription: @Returns: @out: @structure: @name: @mode: @definitions: @source_name: @element: @Returns: @structure: @Returns: @structure: @flags: @Returns: @structure: @element_name: @Returns: @node_root: @name: @ivalue: @len: @Returns: @root: @name: @ivalue: @len: @Returns: @root: @name: @ivalue: @len: @etype: @Returns: @node: @data: @Returns: @element: @name: @num: @Returns: @element: @name: @ider: @len: @ErrorDescription: @Returns: @element: @ider: @len: @errorDescription: @Returns: @structure: @elementName: @ider: @len: @errorDescription: @Returns: @element: @ider: @len: @name_element: @start: @end: @Returns: @definitions: @element: @Returns: @definitions: @element: @octetName: @objectName: @Returns: @root: @name: @tagValue: @classValue: @Returns: @definitions: @oidValue: @Returns: @req_version: @Returns: @error: @Returns: @error: @der: @der_len: @len: @Returns: @ber: @ber_len: @len: @Returns: @len: @der: @der_len: @etype: @der: @der_len: @str: @str_len: @Returns: @etype: @str: @str_len: @tl: @tl_len: @Returns: @pointer: @name: @Returns: @dst: @dst_name: @src: @src_name: @Returns: @der: @der_len: @cls: @len: @tag: @Returns: @str: @str_len: @der: @der_len: @der: @der_len: @ret_len: @str: @str_size: @str_len: @Returns: @str: @bit_len: @der: @der_len: @der: @der_len: @ret_len: @str: @str_size: @bit_len: @Returns: libtasn1-3.4/doc/reference/libtasn1-docs.sgml0000664000000000000000000000312212244720630016016 00000000000000 ]> GNU Libtasn1 API Reference Manual for GNU Libtasn1 &version;. The latest version of this documentation can be found on-line at https://www.gnu.org/software/libtasn1/reference/. GNU Libtasn1 API Reference Manual This document describes the GNU Libtasn1 library developed for ASN.1 (Abstract Syntax Notation One) structures management and DER (Distinguished Encoding Rules) encoding functions. More up to date information can be found at https://www.gnu.org/software/libtasn1/. API Index Index of deprecated symbols Index of new symbols in 1.6 Index of new symbols in 2.0 libtasn1-3.4/doc/reference/version.xml.in0000664000000000000000000000001212244720630015276 00000000000000@VERSION@ libtasn1-3.4/doc/reference/libtasn1-sections.txt0000664000000000000000000000524412244722065016605 00000000000000
libtasn1 ASN1_API ASN1_VERSION ASN1_SUCCESS ASN1_FILE_NOT_FOUND ASN1_ELEMENT_NOT_FOUND ASN1_IDENTIFIER_NOT_FOUND ASN1_DER_ERROR ASN1_VALUE_NOT_FOUND ASN1_GENERIC_ERROR ASN1_VALUE_NOT_VALID ASN1_TAG_ERROR ASN1_TAG_IMPLICIT ASN1_ERROR_TYPE_ANY ASN1_SYNTAX_ERROR ASN1_MEM_ERROR ASN1_MEM_ALLOC_ERROR ASN1_DER_OVERFLOW ASN1_NAME_TOO_LONG ASN1_ARRAY_ERROR ASN1_ELEMENT_NOT_EMPTY ASN1_PRINT_NAME ASN1_PRINT_NAME_TYPE ASN1_PRINT_NAME_TYPE_VALUE ASN1_PRINT_ALL ASN1_CLASS_UNIVERSAL ASN1_CLASS_APPLICATION ASN1_CLASS_CONTEXT_SPECIFIC ASN1_CLASS_PRIVATE ASN1_CLASS_STRUCTURED ASN1_TAG_BOOLEAN ASN1_TAG_INTEGER ASN1_TAG_SEQUENCE ASN1_TAG_SET ASN1_TAG_OCTET_STRING ASN1_TAG_BIT_STRING ASN1_TAG_UTCTime ASN1_TAG_GENERALIZEDTime ASN1_TAG_OBJECT_ID ASN1_TAG_ENUMERATED ASN1_TAG_NULL ASN1_TAG_GENERALSTRING ASN1_TAG_NUMERIC_STRING ASN1_TAG_IA5_STRING ASN1_TAG_TELETEX_STRING ASN1_TAG_PRINTABLE_STRING ASN1_TAG_UNIVERSAL_STRING ASN1_TAG_BMP_STRING ASN1_TAG_UTF8_STRING ASN1_TAG_VISIBLE_STRING asn1_node_st asn1_node ASN1_MAX_NAME_SIZE asn1_static_node ASN1_ETYPE_INVALID ASN1_ETYPE_CONSTANT ASN1_ETYPE_IDENTIFIER ASN1_ETYPE_INTEGER ASN1_ETYPE_BOOLEAN ASN1_ETYPE_SEQUENCE ASN1_ETYPE_BIT_STRING ASN1_ETYPE_OCTET_STRING ASN1_ETYPE_TAG ASN1_ETYPE_DEFAULT ASN1_ETYPE_SIZE ASN1_ETYPE_SEQUENCE_OF ASN1_ETYPE_OBJECT_ID ASN1_ETYPE_ANY ASN1_ETYPE_SET ASN1_ETYPE_SET_OF ASN1_ETYPE_DEFINITIONS ASN1_ETYPE_CHOICE ASN1_ETYPE_IMPORTS ASN1_ETYPE_NULL ASN1_ETYPE_ENUMERATED ASN1_ETYPE_GENERALSTRING ASN1_ETYPE_NUMERIC_STRING ASN1_ETYPE_IA5_STRING ASN1_ETYPE_TELETEX_STRING ASN1_ETYPE_PRINTABLE_STRING ASN1_ETYPE_UNIVERSAL_STRING ASN1_ETYPE_BMP_STRING ASN1_ETYPE_UTF8_STRING ASN1_ETYPE_VISIBLE_STRING ASN1_ETYPE_UTC_TIME ASN1_ETYPE_GENERALIZED_TIME ASN1_DELETE_FLAG_ZEROIZE asn1_data_node_st ASN1_MAX_ERROR_DESCRIPTION_SIZE asn1_parser2tree asn1_parser2array asn1_array2tree asn1_print_structure asn1_create_element asn1_delete_structure asn1_delete_structure2 asn1_delete_element asn1_write_value asn1_read_value asn1_read_value_type asn1_read_node_value asn1_number_of_elements asn1_der_coding asn1_der_decoding asn1_der_decoding_element asn1_der_decoding_startEnd asn1_expand_any_defined_by asn1_expand_octet_string asn1_read_tag asn1_find_structure_from_oid asn1_check_version asn1_strerror asn1_perror ASN1_MAX_TAG_SIZE ASN1_MAX_LENGTH_SIZE ASN1_MAX_TL_SIZE asn1_get_length_der asn1_get_length_ber asn1_length_der asn1_decode_simple_der asn1_encode_simple_der asn1_find_node asn1_copy_node asn1_get_tag_der asn1_octet_der asn1_get_octet_der asn1_bit_der asn1_get_bit_der asn1_retCode node_asn_struct node_asn ASN1_TYPE ASN1_TYPE_EMPTY static_struct_asn ASN1_ARRAY_TYPE asn1_static_node_t node_data_struct ASN1_DATA_NODE
libtasn1-3.4/doc/reference/libtasn1-overrides.txt0000664000000000000000000000000012244721003016730 00000000000000libtasn1-3.4/doc/reference/Makefile.in0000664000000000000000000013163312244721750014551 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(top_srcdir)/gtk-doc.make $(srcdir)/Makefile.in \ $(srcdir)/Makefile.am $(srcdir)/version.xml.in subdir = doc/reference ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = version.xml 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) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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@ # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE = $(PACKAGE) # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level SGML file. You can change this if you want to. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR = $(top_srcdir)/lib # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS = # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS = --ignore-decorators=ASN1_API # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS = --xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS = # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS = # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS = # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB = $(top_srcdir)/lib/*.h CFILE_GLOB = $(top_srcdir)/lib/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES = # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_HFILES = element.h gstr.h int.h parser_aux.h structure.h gllib # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files = # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files = # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS = GTKDOC_LIBS = @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt # This includes the standard gtk-doc make rules, copied by gtkdocize. # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) DOC_STAMPS = setup-build.stamp scan-build.stamp tmpl-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ tmpl.stamp sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt #DISTCLEANFILES += # Comment this out if you want 'make check' to test you doc status # and run some sanity checks @ENABLE_GTK_DOC_TRUE@TESTS_ENVIRONMENT = cd $(srcdir) && \ @ENABLE_GTK_DOC_TRUE@ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ @ENABLE_GTK_DOC_TRUE@ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(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/reference/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/reference/Makefile .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/gtk-doc.make: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(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 all-local 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 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 clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local 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 \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am dist-hook \ distclean distclean-generic distclean-libtool distclean-local \ 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-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local @ENABLE_GTK_DOC_TRUE@all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) @ENABLE_GTK_DOC_FALSE@all-local: docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### setup #### setup-build.stamp: -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ echo ' DOC Preparing build'; \ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ test -f $(abs_srcdir)/$$file && \ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \ done; \ fi; \ test -d $(abs_srcdir)/tmpl && \ { cp -rp $(abs_srcdir)/tmpl $(abs_builddir)/; \ chmod -R u+w $(abs_builddir)/tmpl; } \ fi @touch setup-build.stamp #### scan #### scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) @echo ' DOC Scanning header files' @_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ echo " DOC Introspecting gobjects"; \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi @touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### templates #### tmpl-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt @echo ' DOC Rebuilding template files' @gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ if test -w $(abs_srcdir) ; then \ cp -rp $(abs_builddir)/tmpl $(abs_srcdir)/; \ fi \ fi @touch tmpl-build.stamp tmpl.stamp: tmpl-build.stamp @true $(srcdir)/tmpl/*.sgml: @true #### xml #### sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) @echo ' DOC Building XML' @-chmod -R u+w $(srcdir) @_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo ' DOC Building HTML' @rm -rf html @mkdir html @mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; @echo ' DOC Fixing cross-references' @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @touch html-build.stamp #### pdf #### pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo ' DOC Building PDF' @rm -f $(DOC_MODULE).pdf @mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) @touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ rm -rf tmpl; \ fi maintainer-clean-local: clean @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # @ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc: @ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc: @ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist" @ENABLE_GTK_DOC_FALSE@ @false dist-hook: dist-check-gtkdoc dist-hook-local @mkdir $(distdir)/tmpl @mkdir $(distdir)/html @-cp ./tmpl/*.sgml $(distdir)/tmpl @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs #TESTS = $(GTKDOC_CHECK) -include $(top_srcdir)/git.mk # 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: libtasn1-3.4/doc/reference/libtasn1.types0000664000000000000000000000000012244722065015266 00000000000000libtasn1-3.4/doc/reference/Makefile.am0000664000000000000000000000704612244720630014534 00000000000000## Process this file with automake to produce Makefile.in # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE=$(PACKAGE) # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level SGML file. You can change this if you want to. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR=$(top_srcdir)/lib # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS=--ignore-decorators=ASN1_API # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS=--xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS= # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS= # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB=$(top_srcdir)/lib/*.h CFILE_GLOB=$(top_srcdir)/lib/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES= # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_HFILES=element.h gstr.h int.h parser_aux.h structure.h gllib # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES= # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files= # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files= # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS= GTKDOC_LIBS= # This includes the standard gtk-doc make rules, copied by gtkdocize. include $(top_srcdir)/gtk-doc.make # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST += # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt #DISTCLEANFILES += # Comment this out if you want 'make check' to test you doc status # and run some sanity checks if ENABLE_GTK_DOC TESTS_ENVIRONMENT = cd $(srcdir) && \ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) #TESTS = $(GTKDOC_CHECK) endif -include $(top_srcdir)/git.mk libtasn1-3.4/doc/asn1Parser.10000664000000000000000000000272512244722001012634 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.43.3. .TH ASN1PARSER "1" "November 2013" "asn1Parser (libtasn1) 3.4" "User Commands" .SH NAME asn1Parser \- ASN.1 syntax tree generator for libtasn1 .SH SYNOPSIS .B asn1Parser [\fIOPTION\fR] \fIFILE\fR .SH DESCRIPTION Read FILE with ASN.1 definitions and generate a C array that is used with libtasn1 functions. .PP Mandatory arguments to long options are mandatory for short options too. .TP \fB\-c\fR, \fB\-\-check\fR checks the syntax only .TP \fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR output file .TP \fB\-n\fR, \fB\-\-name\fR=\fINAME\fR array name .TP \fB\-h\fR, \fB\-\-help\fR display this help and exit .TP \fB\-v\fR, \fB\-\-version\fR output version information and exit .SH AUTHOR Written by Fabio Fiorina. .SH "REPORTING BUGS" Report bugs to: help\-libtasn1@gnu.org .br GNU Libtasn1 home page: .br General help using GNU software: .SH COPYRIGHT Copyright \(co 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . .br This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B asn1Parser is maintained as a Texinfo manual. If the .B info and .B asn1Parser programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. libtasn1-3.4/doc/libtasn1.pdf0000664000000000000000000076156312244721131012762 00000000000000%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 7 0 obj << /Length 482 /Filter /FlateDecode >> stream xÚSMÓ0½çWø˜HØxüÇ7‰®´‚ h8‡dI»m¼$Ùý÷Œí¤J Z¡HÎØóæÍóÌLjåÄHɬ*Èý1áátØ“h|¾M`Æ))ðÿ"„z …ÿ £˜•øÞVÉëÑDp–ëB“jç5é˜) Rý _Ó÷]3ÕcÙ÷ê.yW%¿ÎD©%+àœÐk@H4´d—|ŠüZàÌr žlΠωV€9!&¹iÆi¨ï§ŒJ)Óí©ÏD‘Nõo¿Wié¦zê\½û6߸æ7Û’‘‡®É êá÷;7Dìô0Ý–_¢k> stream xÚ}TKoÛ0 ¾çW;É@íJ–üÂN}£CÑ M¶Ëºƒc+‰0Ç.lymþýHQiÒ­ X"ùñMJ>”<È¥ŒKUõvÆwXty¸™ S2ó¿(M’ :²v¾˜^§i x\òR‹º%e‘‹&øÎ3†‘Ì%ÛV]˜lªZ¤ÛóWý@—›û¯t¹3K[ ê‘§üjê43¡`}G6d¬NàVH–¤„¾ïJøm˜älFð×)$\H0(¼ÖóÆÔÝò>¤ŠÀ­YÕîvDc¤?Ÿ ‘±H¥x¶íPÕ@J±ùÎ¥i«¤1 [YãéçN³:›ßÇ£!YÕ5$»4£5Ýz2ãF7$»êê)XB=L­IŠÆ.¯ö¦\­ÍSô&XŠuj]0ñ«(‹…"ÑEÿ„ï³Þ¸ &Uq’Ë:𔄫‘z©ã¶G2æ&ä÷ÈEJз"Tœª œ;T¹ˆ°+¸”ì:„® Z5ïW{øŒñTƒ>ÂôS׸TNˆyÛÕ”T$³¸, JMúX¾ÐülÍ8ºV$ Ížë3gk ÛÓYû‚ ;𒨪­6ËÉj‚@ËNq|ñ¾Ý7hµóv6{ ‰êi«i8ˆ )èaÕï–…˜ÑF^°~…gîŽáÖ/PE5CêòO_~úPvgjÝ“)Jö õ4®Ôà«æE,½¿NÚÚIaz´çïW5߉üiZ¶~~UÉa Ɉ*e€ÌC³‘MÍ.Žš\—Ük³?†Qš•ìÙØ ™èz‚Ýv´öiÊÜÆßSBÍuÚ#$žJ§ô÷fP0=Õ,º8zFðé9[ @¿X´"îמç•{K~”ý»#²ƒr É’‘Êëˆ9 [Œ§+^Zêîq³«Û©Â¾SuÓÑ6©ØH™×„±­{V€ó(¤¢g°‡9Bê_s„j~Ž>¸›]-f¿BF¢J endstream endobj 40 0 obj << /Length 1493 /Filter /FlateDecode >> stream xÚíšKsÛ6Çïþ:’¡xƒìÍõ#“NÆÓI”SÛ#Q §z %uìo_x¢@ЦíFN4™±d†Ø]ãÿãb AùR8„€”&£éòÖW˯#õåã» ¤ïËÇοM.~¹el„ HaŠF“ùˆ¡¤Âš›ÌFFEü÷ä÷‹›‰µÃ0~¤ÃêÎ#Bz#F+2&žP€UÞ&qJ£ìË"ÇD°h=WŸWëULP´ËÕǶŠI™¢€PŽ+Sò¯£@Ê•%Â,z¯†”ki E³ýtWHcõx¡kÉïŒSi¨6ð«4À…úà¿=þâÐqÿÛÅÎ[Z¢S9µ)qJL”î€Éÿ0•?®8¼â’ ‡ñ†F€–-c;éÄ £¿êÎ~’”3¬™¹üt"o»+%2ûRù-[ÍÅê« À?i€:tU“0XV;< êÁ<ûDmbèÓôÐÝaCÊ|CG,¥ ¬VrJµ •–hû°Šqí²{¥&'®Trƒ†&ƒïøà¾1G<ÊL™UïéDªñcÇ€’¶›n*Ý@z° »´\&Hm€5—wÙÒ¦•C¹\S~ñdŒu!«…Žlc „¬Ëñ"ëÒ‡lÐ¥E–‹ª,ÔÄMì§b¹©ë4™J7Y¹íÀ7@àÓ]ßüÒE£Òl8Œv|ˆE êE±‰¢Ä? "£ A©!‘j?_ʬ|P(Þ­wù¶cA¯²óO‘GO©qШhé†ÙéâGÒ ¤É K ¥¬o9·P2 åmœh/;‡Eu–¤Ñ,ÿ·*8óÅz³ÌUíé%aEçœù2™Pë3œ¼Æ@ˆ<?yN }äµ\u­ IÒDbªÕ¶~Þ‹bW˜ô×êN !çÝg5ÊfÞ‡vÊÎøîVù@\æEÉ £¥–G£)HïÁÛ,¿¯“T´ÖÿTõ]Ʋí ýQ]“E_^úügéY^‹F%-Ñà4ÖŒd1—/yN=àýYîdVJ“Ô€‡{Á»ZÇc,¢YG·°²s·ü"K§Qg8st.~êœ@ú° º´Üñ$ĬŸ¶§íæî:ŸöG€8=“74½iE†³Ö±æ Ͻ¬9ô±ÖryT¦Q e%o;dU¦ÝVg\û•:ˆªOÊ|ž—ùjšûÏ¥˜+¸xÉÊídÊ9•e¦mh•åŒï®²´^œ0úHhyìÈ:XFMà=“˜Æ2Ç|Ë—™ú}®9ñ÷‰œˆs™õäuMë0<×4B¹Æ•ÛO˜HaA—–0„b‰! öD4_ÌÔÊ6Q$L–S Ço«i<]ì´8ñk „°sðcçÒ‡]Ð¥Áޤ €ÐbgÊ©ë›Hc©œ°ón—xíƒ*’‚jÊXOÆP;|¶Ü¨×8¼;bn$=†}Z fê-{@pS–ëR‘h_àxÌòÊf磫Pñn´Öó>©Æ@)W^”z‘r"éC*èÓ"%¤Ìöþåþ¾X, {ì& W۹켌>o5hE†ÃÖÁæ ¡6'’>ØZ>ZE"‹yŽ˜rw¹ÙÔ¯+æ«Yq¯zÄK9+„’èj½©^h|P9LT/8Î×å2ë|­Q¦0éëvGJY6"û7=])5~ìð5r-7J)ïƒn$}Jµ|v¤Ì:]ÚVîÝÝg•êã¿2×ïG\W{GI4Ý›s¿L7ÿ²ÿPLóÕ6÷æ”ÈÐ’7ºg=“ÃçÆ@èqvë€Ä‰¤’–Ï£Ç˪&:{\­WÓ|³3Ïë,¿÷oô@&$öCnô<Ÿõ¬›yœR”r öVn$=´„}V´p*W çñþ ¬YÕ—ël—õR”À—.6¾Ï¹—‘BÏÍpÅ!Å] ˆw¹w#9Rü?ÍÆÒ endstream endobj 143 0 obj << /Length 1244 /Filter /FlateDecode >> stream xÚ­WmoÛ8 þÞ_‘o“ÚgùÝûÖk³¡‡]Z¤)nÀí>(¶Òsìže·ë¿)ÒIúÜ( ÔEIäǤ"g!üÉYÎò8ʤ˜U»“ÐIû» –ŸO$ëù èiþ¾:ùíSšÎd”a)g«ÍñQ«zö·8ߪûA÷žDZ=?IRqÙzQ!†¾ó|øÖc5˜®Åq*¥Þ?«?Næ«ý­iý¢y¨ùʾì˃H¦ Û—I ã„쓞ŸfZK²¾“E`ÈKÿ€¨Â’·¯¶ÆÂ–°59S;MÞ±XÛª7k·¦YuØj|1ëAÙVÒ¬1ë^õO“ŽâîÁ(Øü`êiÿÙÚ½ªxýæ îËÅ ~Ð|Ñ ŠðÄÙU«Ñ ´[ÆL%Ùý-Ló›E O)" ŽN¢XØ{²´2ßB™è¥‘X£O¤áŒÇÁ× +B^®ný©öºêvAíl€k$©Ü«ÞšöŽ&ªåƒÁ€zì5_¿S­ÿ–¹êNO°‚Áq™Ðq‰ c8x4v«Y4o+f–»E˱qèÁ]¿˜/Oi¦XŠ~çÂfà[’ñ8Õ¯Üß_ëãµcÛÉôÍØ:2ÙÀ-ÊÈ™€FÈ=‡4¥ÇNŒZœˆVŒ Ê» }"¬#U<)ˆ-0W½þHlÍ’c¶úiP–%Ý—Sèeþ³ed IëªõÓ²aŽ)tG .ï5I fGá™,uì…U—¬çKaÛ°zýïhz¾@µÌ0\9'Ù+« ßéV÷Ž`Á›^³+Ç ÿ¢× OŽGáÞqY¨J+¯¼Ù£¶4:§OEÎ×¼gïŒ.LªtP€8W*^S}¯Ÿ"ÿíñÿ ôËüx_戦üðPþ@ —SNPѯwÙñžêI×ï©EGW4fg¶lÓqŸ¹\¬æŸçˉ[5-£Í‹Û?çË3Äq5¿ õ/…ú׌ھ7´—ô¬,Ä'¯@ÆkšÝt›ãùˆÿ uÏÏâ\œQP¯`(1%Ê\TŽ °u´+¶„´cn™£KAÚéöº†ØBóMÇPã¥C«éØÖ®îÞ(¿ÐÀw®NJªEð¥£`ðyqKƒ/ÚZªŸ tìnhr=®S±’©tkyëú«¡/¸$Aä’ oásW> stream xÚÅXmOãFþίÈGç„﫽”"A0œO`P0U¥¶ªL²€KbG¶ÃK«þ÷Îz×$á8"õN|°=;;óÌ3/»÷<øÃ=éõ|J‘dAo4ÝòiyÛ3/Ó-lõ\Pt—4“­cÎ{ØCÒ“¸—Ü,›JƽߜÁ]:«UÙw)¥Ùí»Œqçà2F؈ªºœêy©Ìç]š'Y~Ûw ñ9ìèÿ‘|Ù “œoĪ5¿ëXÌ™+†0e,é»\ç ïbÇBô¹Sõ±³„$/(œ±Ée‚h›À•HJkQYcóY‹ò>%N>S«\‚),&–Êä®!ÉsfiYJ='«ô;£´²«•Ê«¬Îú$pÒ„³ÅÖQ1ª\/Õvã5Pí;ê6ËÍ÷cVßY0b  ¢Òì6`\· 1æÈã~«,¯êåŒäÖQ#Mó¢wxÅÔGLøïxňÄêlk•žËH€¤ R„96K…vNZ›gÝÐH $ÅÍÊJà”ªšC@å¨åÔlü«m`×#Îã]6Ò+wÊ(X/ÀµªŒòïfeUC6„'m6@càVµÞñ›5ÕT”µ£f+t†dz£@ØÖñq? &°9ÍÍS=¥ÓÙDCM@h² §Ä³“>m Ëwó¸7"­ÜUA’!?ÚØf÷ÙJ«¼‹ {‰J³‰õ?Î`Ne×sËÚâe Œ“ìºLËgœ Ý%Œ!ˆ Þ·aiö•ö‘C³yeDÓ>Ð7¯jóuSL&…ñ±õcÃr´ Äè^›*µú»ÝT@!ÈU8cu“YæéŒsÂöŠë¿ âÍ×Bgÿß&2LD êcã(<Žâ(‰ÎãK³a/üõâ4D‰ùÔ¹ÖÏèÌH÷Ígrpbõww^±kÛõ0<‰â®…½úyf‘63F¿Œ ‚:ÍõX[Å\íwa㣮p»8Jº+‹PÄ}Ò–‹áµA‚‘/ÍW÷Í„€¢gTêl&ÛŒmÍR¥`ʧµ2K7e15r3)¡š¨©>BÚVÕÓHÀÑR˜å¦0õ–E5«^«ÑD›zŒNf]xˆdujfý‡>¶'ÙJ°³ºG2À«ÌÁ¼6™çÃa8HÚT,ÛÿE•UÄ–B'áI8ìLÅÈ£þ×éiZ`T”eS´º?nŠrjÄYÕ‰·ËÔk(-úodçÛgÕNFs8¯Ìˆ¶µÍˆƒ¥fþÛ#¦jÇ^Z¯ @¶täC˜íÌœ¦yz«lp0—qA2ä«2†aãwŽ‚Äâø|#Xæ!oqø©Û/A>Æ1ÿã0¾: ‡IØÙ˜nm‹fëö-àÞEl.ÄG\žŸŸ†ñ÷ùüð‹nŠ&›ÑQ'ÑqÔͽäïÇ=Câ«ÓÓÎéEôëÛ^)G\°M¢?Œlè—É0ŠO:ÓΡ­Þ¡_ø( ›Ñ?HÂw!oCð%"o@üU2H²©úþ•w¢rUÂ8ÿ[×`†xÁÛdɧný_µªýµêÝgË—±nï°'7 ?žOU™~”û耯wÍ1⌿Sóp³Ü€õî µzúQa_€Û:½ž¨õþ×¢»Ê³8áß*»úÿàÄ;»øPÞõ>þNÉ@ç endstream endobj 150 0 obj << /Length 1473 /Filter /FlateDecode >> stream xÚ½XÛnã6}ÏWø-2±âM”R 'QR-²v+‹^*¶v#Ô‘ KN»(úïrhEÊR¹=~ Eç g†‡CÓQ?:Šƒ‘âœÄ"-î3ºý<ÂÎÕŵr>úÉ“ìà›s)G4 qÓQö©«*[Ž~õNoóMSlÇ>çÜcÇc_éMæSBq¨n¶»E³Ûøy›WËUY}ûŒ)É=>þ={d­ ’±Úª%¿26=c#˜”£0„rÿP¥AacaW–2ÂV”ºÎΣy³Õ–¢lÏ R¦Ø^ö[éCûaLb¦F> IÈ^…ý±¬Ë›U1 ¯R< )Bƒø-ðóäÇëdzš¸…$žF–Š[dù&d“*³s—¡é>mâDÂЛöž¹@)83z&Þ,&Wo}bÇœA²ñ§Á…€d‹ÞâóÓïg©;Ö\>‡«H@£·lz2ýùÿ÷´5ž>KÎÓir¦?„wâ´DIÇm¢-§ Õù, 2â8•Ý–5Ð^x÷cy@tÔÛÖåºÂÁ帆ëê°ÁÃö›ÛÂivHI†{ô«dr鲑E„Šö86þËáÈØ"饓¢ ¬ÐÖUcêÚ‰z·Ù˜©õÖŽ ™$€LešÉu6û0ÉÒSth6¹˜»,ô¹‚¶¦œPIqízÓ€{Žp%8;¸*$±Ú£&?ý0»rQ®ºáÒJº%Œ¶[H? *k}Z mkm-J°rk“ʘ0“ˆÈµ6œ»`ŒÖRö<ýÅyäXH¤h³u¸Í6/+צÆdÍ÷7i¾Z­õÄ_&é–G8}³kpºZc»ÐÓ·4Êû‡ÊÛåº*p•ÎU‚;‚†)0 @„ o3Enηü´4öeȼ©Î©rênྂ¢‚Æ„²}Éû*—ûš¡¹-íÖ–œbQ• IûüØåGKJ=—'çw} $“Þ?ØPl6Í¿&|`¸› •FH³t6£¤ÚezšføeòÛôŽ¿ë­·9}’\¤S×ÄÅv½Û<,5‡‹MÖË,óõJ GƒJ%½ÙÉûäÔš’ž%Ó,=O“«£=^wÍ}¾Úi dà}4}LÖ®z”tú—¼ÒÜ2µÐé4K.ž2‘YÁ“Ùì2™LVR—™v0™ž9éòLÐøë#é«xoÝä!fýÕ¬u˼|±(êÚŽ¡(óþpR  ‰z Œ¬›–CÞ’÷¡UÝegYê¡R7ª)^[´¹îªÍòPYÐý‘zØu~c,0Ôq¯IÁBÃ!4àLÇý8íâ$xltI¿dë„ àÒ–A®ïÎ0þ0CÓëKžÀ$yS,q¬6…0iH® ó²Zwz¯FÓ£ÝÕûåe…SÆËzàÓ®BRÇ+ED$ú^õb[¢« {?Ù/˺xEÆBôÓm¦¯K±ú¥>vWÊæÊê-îÔ1r¸ŽÑA-VÖ.gp଄a{m–K§Nú(&Z›ÎIMÆÆ[ƒêE¯ ùA0„¯³î …}0º ‘t¦qï(¦=¼òQD6X?¾Äï,Œü1mÅ-!>[[¢Bíz*tý xEɸñ"×k…û•…‹öpÊ …h¨¢×GÚhîRžŽ4 8(ÞuÚl {Ò”¥A›é‡¶6Z$~T©'«â®h«)¦bô´¦,n ð°Vhéê¼Ý–ÎzlWUù€u7FûèGèl‹Úîhfÿ&Ð}6FÑEQîi¸§DƒÔî£ÇˆT­·ÞÑçö‘K/ fqøˆéß±—¨ëî«m©¹®Ðùœˆø Eñ»ËÉ<|·U»vŒ­c«e¹€k¢~ÄX«¼¶EpבµAï2Øï¼âáÙ©ø¥OsÙ¥ÁõÖ©‘ÃQ¯þ‹#ê½<õ?dÿz2¶Q endstream endobj 155 0 obj << /Length 1454 /Filter /FlateDecode >> stream xÚ­WmoÛ6þž_¡o•†™IQ”:ìC–ºEŠ4Ýl–m)¶0Yr%¹o¿¾G%K¶²[ _ï¹çÞ‘Ôñá:±ïHÎIDÎj{æ›ÞjíàÇì͵ó&0qÒ›ùëâì§×B8Ô'±Sgqßßj‘87îÅFíš´ò&œs—½ô&A Üóù5¡ØU7Õ~Õì«›U$yV¬½ cRp7ðnoϦ‹‚`ì‰Xõ̰À„!³`Ã( ”–îMDÈÜy¶Ýå’îNUµF@Ž6hL(³¾¾ö"î–Ú×k·€ïÆc‘ûuNEnZc_žý£{S»oØß—úŒD‚Ãþfß÷‹éù™/f—×oưHŸð¨]ÑlÒS­#¦q¿/VMVšºIý¸KÀ)Ý4/=øùŒã[e\ÀÆÁƾ†u€¨œ0Îáƒ*HVÀ¾*!ˆ8 úˆ#ˆŒ€Ù!¡–ÿ>•ǧ”’Ð ¹ ’†&äDÀñcøG™‰ý°§/\=é-ÑìЄAr£ê‚¶P>Àð„¡4scAõ~7·¾“Àà[0Hç³™¹u€ ©˜;ó³ßG>‘>šMÒUiÈMÒãÀo‹ŸÃ¸”$ÙŒ[­œØe~L|Xÿ vHÃÙ±ÓÕí(ïZ›D¸4>“ppá¤ö¥ððéogŸ„~¨ÁEÂ1R>ªB;í¿ªð°üaö‘<¦B˜ÑçQaßlZ«ÒXÔ1hP+U žÃ%€ó– øº/­ÊšVzŸ<ºªÊÔ2·§*Ó,¨è̾i1«FS[o‡‡k¬N¿(^Žy4a1ÜyBtžÇdž ÚﳎtÝñ þhÿ#@Ÿñ£ór«¡Çlpmй[¥÷» <´œQBmõiU•Õ«´^UÙNï5†"†RK»0¨j½ß¦]‡9·ñÑÍrÌv$¡úu÷ÂÕFY^³ Sg«ÿÀ—.n^fh/€ÀÈ~J˜‡ÔÈ«/á]•NTžc-Y)¼`Jß]îá(p“Ž$EW W5ØÎSU7£41‘¬ƒg‹Þ½;ÿón:›½ŸÝ½šÎ/f—¿-.ß_ßÍ/ÿšŽùG#8àQGëÒט†ëì[ŠPôYKÉšè 2;!+¬¯œîGÖW›³ÿƒ u†ŸrŸbóˆ·£eðha²ÝøE— Nˆ„'8:!ÉëówÓ‡¹òCpÚ1åÁoSÈb«¾d[Mà~‹#…mÀ›*œi VzHP+xÚíŒ<Ì3C/H°sˆ-ð·M£°Y–¤ÅÄfMab†&Ói6­,Ã:ëkFàö¶eVè2Ë!ãÄ»·¯P©“Æ'3Ü@ŽåN=h6õ¿½bzU·½@žPÊH(:õ'­»½œ2ð=¾°ìuW2ÓìŠ8|¯Ó"­”I%vj¡9m ˆ‚d©»Æt®Âdœr ô'žNÁÖÚ ì;Â/ʦE¤‰÷‡Œë7e{P\UÀôWlvo\Ó*0Ò=µ™œX~b}—O*y³éùÃ%/ìžÎýŒJÚëßwÛÅ endstream endobj 161 0 obj << /Length 1151 /Filter /FlateDecode >> stream xÚÍWQoÛ6~ϯð[e âDQ²${H'Óº9Yí Ú>06m •©@”ÃþûŽ<Ê–b¹É†= âãñxüxwß‘¢=þh/ñzc$ âÞ|sám¹ê¡ðéæ‚Z; ݆å‡ÙÅ×aØ£I¼„öf˦«Ù¢÷Ù­ùc%ʾËsذïAèÜWYžU™P öB/vÂþ×ÙÏãÙa§Ð÷ßI[ž`ŠSD|Ó ebb}7ø °9®  ¾^ <âG‰]B(.JeŸQg§ÿß2¹‚D¡Ã•¤wZÇK‡5þÂA3.à&„úÖŸYÐ4nqà‘–{h[ ¾Ð‘ò‡ëŸØQ°q.PõÅ£ʱó”UkÔ^NûÔ™hÐz´ÚJÂa ©Ð”Ëέ„%¯D­ÿžW.­QYò¾9{V…>Dϵ°] Ñ ûV L½uÂ'Ï*}|Ô/·rn`‘sQ_§D{»W|% †(M3„P¡ó¹x4޾âp™~ |øÂ<ëã­†f.$‘µ»k\>ĵ.žŠÕZ °ù#J¡4"RïcüPëhwÎÑN” à “Ë¢Üðê 0‰Ñ‚xΪnÏó–çùZÌ¿½Ä¨ö²âÏ(2ß·Y?E#RMŶzÜVÇÉn¯ä›öj]ûãéb—kïÇÄ;RÌb#@ Ú…V¾c£¢a|Â1Ök± @0çjü ÇBÎak¨øâÕ²,6hÅQq¤Ì¡ÚA{9µ,d§, 4¡à8µ\@úJ´-¤8r `6óVS vV*[ÉšŒRH‡9 ‚6qfkKÃH b§`³ÂélU…&k®‡;½‘uU­3…›YÈŸ‡]iq[ˆ"J¥ª¸œ‹‰)CèKÈוXf¡wmÍézšV¥ÉY²ãùVüsËfBºÊ£3Šý2£Ë1q´8³˜gKÝc¹§c‘/ЮX¢’wE†êr “ºG?ݦ£q“Ð k»ª@Ÿ¦$í®ÐiïAL|Ä5±e&© [ …9wý8¦cd´õúPÀ}?$žÿà€'"µc.rQÖàù’è×A]¾sÏ„’„¶|÷®3k+¡­81M< –-úªfBY˜¶¾¿é ”·ÕžÉžÄ3ß<ævð€e‘ÚÕ…‰œøÄ‹ghYw\íW—t…š¥5É8`*“¼ÜóW,«¡¶iŒØÀbÓÀÈë,=wáÚ~zîÂ¥GÑ?¹`mòv×AKÐ7­ÑâÐT×-†{½æîÐáê.év ;û4 ÿÕÛàÿÿ4 ÿæmpòOï¨]Iצw–-ƼÇÑbž-ð!À7&hë‹“^œ/˜Ë"·´SÃ7WøÝÇô[hâÏ_]÷ÉÕø:¤³ôv2E«ô×»_ÒQ:ÃÑìòÆê‡Ã»^Æ7é¤Ó±Rî4[¹¿cï­]a:þí~<ÆjáÙo¤¿×{£ endstream endobj 164 0 obj << /Length 1149 /Filter /FlateDecode >> stream xÚWKoÛ8¾çWø°@% ⊤$J¹u7ë-à.wQ íAµh[ˆD’œ4‡ýï;äP¶”ÐÝ @ÄÇpøñ›§é,„?:Ë™àœdQ:[סYm·3ÜÝ^P+€`0’ücuñû‡8žÑdaFg«ÍXÕª˜}õ®wù¾—­pÎ=~åQ{Ÿû²*ûRv°Æaê%þ÷Õ_óÕñ¦˜±7BÒ’¯1%cL”¦$áÉ,I#By„À4¤DÄÞb¹šßÎï.5ÐPNhŒ"ÝTÄH u¡EÁ‡Ã,!<´‹óå^~IiçB-”÷ª@~rý‰¼¼ëÊ­ª¥òYêõî} iTÉA×6MU5Zè©»²wMŒ/ãÞVì} -öþþ¸øBÉM×÷å6ø'¯rò väIKGÌMÙo|èÝA©Rm5­ð°4üz릮sC¬þðaOÚgáÚSYU8ÚJ%Û¼·s×›͈H 5W"—¤9ô.Œ %,Y¤ø”‹PýÂëóRùÔ{‰:õnÀ!Ì@ªÀzF–0þ˜ ucžSàq°X³qaŽa‚0Îæ¿aJR*†SÄí1`Ê&Fø –wŠ^7ˆLÏ÷åO‹Ã®¡M ýŸm¿Zl ¸Y† éA‹ozœÊJ. e‡ßftÐñ1’ÆG#]ÿùiq=wâ £#‹½¾éyî6b~‚60\Lë\Ûþ'Ú%…gwªòÁ?;Aö:t†ÃÑ €p…4¢Ó,1Ad#¸úZ% lð5"%G>ÊAA]ÐÑ3y“lj@Yõ£Ì°¨÷U¹.û4%·&êªe^;3Ä»wžÆ¡W,ïÇ2ã·[F¿ü™ƒrIšv‹èD¬=ŠG Óè´zAÒÌÆ'Ž%Ü[@*ŸSïQÿk0¨ºòÔ±ëÆ£oÖ€€G–yÏŒÄ'L JàÎÉ!ï€ÕXz¹Âïûû%¡8ìúö°î­Äé¦mj+‹ŸÁ»ôø©ìw¯XO€²Ø¨ã5ÅDÇRåí3z˜Å7!ùT"¸½Ã \À|©FY‰œ£j䟻|+¡rSpö)oÆš_›½Áü§›²’ô4d8ìŸ÷è1LLaN\⟡G@•*䦴<—¯®µú,qguçø1Uø@â¨yæ%cå.`8Wàñ¨"p<ûÒvuŽ–`7¹¦Û5O¶Þš4¦;YÙb^ËN[É8x<§çQ¶Ýl©6M[ç'ôÆû0\ËÞItм¤ÔÞÕvèO›ÄaaTL*Ó?… ©Êm’€ÕÔƒÇPñ7¦—Ôû6$Ñ )?[='pòíTšDLÛÔŽñ<Ü3h'\[æ¨)òðeç ,¦:‡‰•FåØLÓØ©aÒ=#vL¦_z4¥é7°S™t‰¶ 1uÅõA}|m ©Ã´[¦: ©Â6ž0Æ z|L(EÞçîîÃÂ>Ó}LÓˆ³ÿhý/›Uý“á?"q7_ endstream endobj 11 0 obj << /Type /ObjStm /N 100 /First 820 /Length 1702 /Filter /FlateDecode >> stream xÚÅXÛnÛF}×WìcûÐÕ^fo…4‰ã @jv´u@‘脈LØß³\J±EJ²e }©ÝÙsfÎÌ^¸– FL Ï SF0IL+ˤf$=Ó‘×L:æ4¬<ó„G`Áh¦`,¬(ɤt‚)Ťò’)Øë ˜‚¥°3LZàET‡Få¤ÁæD–©(c˜„´v ¡œƒ€òé!$ƒ*âÄ¡ C½†ÁQ˜+˜†Û"fÐ%= b“Bý  6Fˆ , ´´ÌÂ^´G*Äáž!F Ja™³x"ìèYxàE*† H‚§ÕÌÏxH<¥žEPB[€àÙàYžƒ³!ºŽx¥ˆ>K¨ƒôp_ @zõf)?:Š.P(¥TŒ‘1UÂÆ‹—b6 †ô ïH".‰‘1A„ˆ.! AƘ2FZ"GÈ!`$È$â ‰`©‰p 5Q2ìÈøŒn2>ö3²pÙÎÁ‰ÉAVI`ò‘Ï€"«`f1(D‚¡¨h`F¢|àŸ‰C2ŒŠAªSA?i`ª=@Am Ô‘`€øpÝ!áPÙÁÂC$‡!žÌÆHJ4ÔÌ„¦³ePå„ó6:Ð.‘T¸dU,jð‚ª‘H®ÕÈ ü³¤õàèh0üxw“±á‡Ñ×l0|]uVÔ3æ0™ÎólVΫq6ÜjþÌ&ùèUyË.‹,й .^a¤Of/‹¢Ê&$þ³ËÁ‹÷¸šÞÁðUYM²*!‰ËH6®Ù…òĵˆ5¸^ŽôAMNÚÁì|þ¥n`ÞçÅw€±£#6||àг†/ì‰ÏbQñi3ЋŠ_³õˆçòiL8¿H¸Wm|¦YbúùäžâS–K—悆VËñ¥øðÇUhù°« ý|aO|–¸‰O9ÂÑ¡ƒ}¾cv¡Ûƒä_ÿ?ÎkÅ|:½Üxè¼wNŽ{¤‡Q¬9úQ‡Ñ‡^½+ꪜÌÇu^[:ö/ÏO¹üW˜ÕlæUÿ|“i^¤³ý6› ˜wE=º]IQ§£ë%cûÞ±9ϯo¦ ûͨš-ͻ͑ïó/Õ¨º‹6§eÍÒÀNkgÜÉ|ï$û‘MË›ëxÔO£×ôu0>Õù4¯óéÏ¿=ÙûQ~‡ÿ3~cáû`–U‹<öömÅx]N–B­éÛŠqœ7 ,{{Ô+šº‹–Uv•ákgœ-ÄëëÚPKãoÙõ(¾]µ#g«…Õc±ï*Ϧ“Mp=´ã7g=Öθ7UUV÷'QÊ›ndóÛ|:ÍÛr^jMgåuys×r½+®Êêzôs%YÓ×Áx{ú)ÚœTY39ŽËñ<ÎŒÑ"ÝïóqVÌÚ:x¬q§(˜›:y3Én>®´n¬I(ÛŽêÑ ÎV« w¤;—$w¸¥Àž"ºMå16Û6žg_|H²Ýˆi׈Í#"~º5§@÷4eL¼¬t{“Ɉ®L~W™Â#$xhCk!ÁÏPW4Xj³³Ý <óÈ> stream xÚíZ[sÛ¸}÷¯Ðì“Ô‰âFû–zåï$vk+3Ýf3†¢mM-É¥è$þ÷=¸PdÊ’'î>t:y €ønç»Ætá˜l 8'FèA¹8ÊÜj}3ð¿ÑpnŒƒãèä_§GoO¤ÐŒ˜ÌÐÁô:¾j:|ß÷MUÆœó¡øy4BOFZ –e3_-íŽÖÕuUW˲™4Ü Õèóô·£ÉtC[2v “öä.¸T„Q)—¹„rá¹£±Ìø2<âKɈ/°ão„‹œÙ[  !‰‘,\B¨¿æÝhL‡—göÕÞ±Ña9âtx[- ¿tˆ¬»k9É Ãp-ˉ6Æ_[¬—´UÆ¿7RRjˆrSJ¤VÎOŸ³Á ›¿ 2"5|sGAÕxº\ý½ÓFG2AŒî.¦¹'{_ÔëªfM]ÙS;s¡‰Q9X•„cË}ó †íH‡ŸÃ—9Ø…ž¤ÓÚ˜k˜F!÷Í|Ù@kL:9¯žPͳ˜*åx‡áÛ?2™&>&¬=TBÍÇ_9bjx[4þ%PH¸Ë)ɳ¼ýöz~Wõ€Ð´;õÆß×o(.2’‹Ô9¡9ß¶“P3qÂOÍ”åB*— cÁ¿–+xŒΪgdâ’˜(p;«®çËy„¾”JnH&:ÉpË Œ¬c€†Jô:Ý L±ƒ00–Óö²ª®WõÕ¬Z—}¦ÍQ¹ˆ,Kû¸S ×à[¬ü‘Qq× Sxk'¹‹>b¸¾w*«Êùõ£g¾¹X+ÿ|_àÍÛs9óÍmØ[‹ çÕµÿ ”Ã-E‹3 šb»•w!àØ¬*p ý2:¦ÇˆWºõÆYe)¥fK¸¥‘¤ÜhD¯æ¡F$c"óB0A‡Vz5\Í—Ö\hvÛ«­cë¦~(ñyå×˺*šjæ÷®ëÕ¢síÈ-8l¿q‹Ÿúø”D1ÕY9²[ž::Axö& H¶‚z-£ûÕkÑ,•JìÀÙf#ÈÈ>áRþˆûR‘Cv›È8Ñ9míÚzC*Ëp–m·5§[@¢gÜ=ÚËêù}—UÛbÎ.î Ì{˜x¾¼ñ[óèõCYVk¯9¤7ØÅSM%1ÊD&_[`ðL:Ù•uSÔMXrŒfÂ'¿VÜݬêys» ŒËá±×ÚŸ ÈacYU³mB ›j ›kŠ$›=ãаÑSêA^æey÷௄6à}@d*Fb”R{å.'¸nѧRç–ÈÇ@T¢Ó gÙõÏ}6¢s* ^]~<>ž\^ö1¢¡bFUiÁh¯¨@ì^ûÅÂÿ”«º®ÊÆ¿¬­b¡W&Šïᨋ‰x¨¾Z Uõ£¿k>óÔGä›[B®ìÃÙy ó/$+l~[¾é“¡Ý¢-5Ÿwò~òar6½:;Ÿ^M>ümú{o¤Gi M$xŸ1Qß<—“ sØÇl"êrÕôF<›Ü7TÏ>¾ß‹\•¤Ôík4a<5ñÉéû‰øäüãÙ/½CO*‹%FÐÖ|ÎÖO ö|ŠÁÓ_€ÀÓ“ÓÉÅ«åJ¥˜?mCÿõ|êÈýb»:Dlû>«¶Ê}à*è¼OoÂ\5Ûác½§ž½û0¹šžŸ_½??ûµ_ó°V—“¼æ©— ¿Á¬“Ì/ÖáÑ‚yÉìûSɰ ºò «zsKÑ› bôy ~><Á$JyWGuà„¼<ý礷4AQ¯7ß–·E‰©­$Ò¾il|a{ \ŠCÚ5Ûûh¦_¥]³wI®’v­¨ë¶š~ÏfI?ö7mh¼»@ðßjÚ"î3[®÷PÒh™ ßêÞ6EÒÙì 8f\ }o9Òê¡ÙG™@ýå\‡BÓ]ñ¡lUöToÖ'7q•þ*}òpMS}õY*­f`Xw5¨Ã}ÿ¦|µz8ÅBüQ¼màT[¬(Þí…N…NEqXmªzÒÀ©®S¼í0Æ>Ìã(³»÷ÈÒ²¯/©Ðåp÷Ìl7°Y|3Ö Ÿ± |ƺ½ <žœðYªÝ1'<ž¾ÍïîüS¤†­»Žý/-ƒ2<»‰‘ãÂû¥twîRŠDËô‹ºú§û¦©?öïÙþ®1}IÓÈ$ŠñüUšF†dføÿHÏ(dëkBŠáMµ¬jßþÙ¯ûŸh a7ÝàÁmá›ôýJÛtuu”îl|Àæ­<²épœtŽml‚”h¼Ü×F9†ðæaâBE½[³Í¨=ò`ûÛxaQ,m[ê×n+¿¸ÕˆÚ½®õo}ÅGùÕõû#§‰MÔÚTž£ÛH}ô´¿]Œ»”|IÖµžëWªn¼¸Bô¶(Þ~ùòöûwòøØÛ@$£ÍŸúû$TN› mXì+%1b£ÝýqYK"%}‰¬;{C›Ï£.i,9kÁÒEhû\Öw!ïpn›§ÔŒ~B'´ÜÁ×Dv½Ó ´ÿ4Æ1ŠÚ›²5¨ƒ^:ÖN€¶_ ín’F>WE3§åkEë W¢Mñ…”ýsM’óýsÍMJ²AÈè^e‹ïÎ5¿>›éP\É®rÞ ³œš`F»)’Çp%p¼·yÒîø*À>} åVoÃlÿ ŽGÎý¸êžu†Ûµ-¨Ì—&Ë^%ijˆ¢Ð°µ× šÃ!¡ƒ„* Õk3¨£ìWXÿ(17$ÿÿñð9â!35ÀY&3¡/6ðê&û˜ÐìJ ¹ÍP‹î ¡iÐüE™Ui³g‚¨ºa¥“6¤ …·­}C6°g²ÄøÌ„&ƒ!Å36»aíbÝÊxnÆææ´ö_8\Ë·‡kŽþÒ“m ~Ö%N¯aRUÒ¢ýi#7jttÖ¦ËdŠþß6‡Ä[ã̶°ï‘õ};€Ã0€s½RÿŽÚÿ‘Îò'¸gÇlvލX¾wÎÖý|)#þPÀÐöÏ-˜ýs‹¨5—NÕëúÅðÚ†‘ø-lèÿþŠ: endstream endobj 177 0 obj << /Length 1981 /Filter /FlateDecode >> stream xÚíY[oÛÈ~÷¯à[¥E8ûeßÜX^d‘uZ[y²Á•(G€M¥$ÝÀÿ¾g.¤8ÔÈ–µE…L‘ÃsùÎå;3$†?’œ)Æá:[<œaw·¾ËüÅõ/g$¬Ëaa>Xù·ùÙ_/…ÈF’ÍWCQóeöyòökñ­-ëiΛðŸ§9çbr9Õ|òX-Úõ¦²Oø¤.We]V‹ršSa˜™èé—ù¯g³y¯[Pz ‘v厕 ¬dƒ™ÁJ©9"Œ{+‹¦"Âö’1Hpá–r*¬¬Ï_p¶„‡¿f M³ïnéC ˆ†«ûìæì)„rd ©­ëbÊÈ䉶uYZÆp2®‘Q2Ë©D„L?~¬ÇL¾„7%XŒŒÔ¾™3 (°É½³®Ú) #œ«·VñP©ÄC¥ÖV…e÷êïXà Á —qD9ë-6UÓú(§Á¤Àd$“BÃ{d &W=– QÅb,cÅð ©œ( v:š¶h׋]½ ƒp€äz†0kë­6²z²,½ó?@£X0&ð*~ PFƒœ ËÞ<‡&¯0äà ¼âà–âx¯ '!à:‡<'‚ø7—åj]­mf6)! 0'#Sª&_‹ú9 R´Ïæ²®7õEÙ,êõ7W©,¶§tÅ$ePNF³àÅ 0Áÿ§TMRô6ñ]Kã“æ›¬\¬WO¾¥µ_¡4K½•ç^]$ÏÁ“­ak[™Š…Ê„¶îÃ5Üt½žÛl¶·ŠÊ§/51Q+Y/KßÐÖVˆíjœâÐ’91¾"àŽóÓ^„ÒókÜ8ÔôÓZŒ*¢6üy–ÍË“¤cµ æJuí5ˆâ‡"Lißó»‰Ê™†"‘*&²Ôc2ÐHà ö˜ž„ ì‘¢2Á)ô&ˆôö0Ó—©@ÿ§¨€¦¹ÀvprÔáÒ.Ð8…A"ÍäQ¥ewž§!ƒX‡#=:øx¬šõ]å‡&>Yê•ïaÉãNÖ2.Õ}qפpŽ“ö’ìÌÿòÙq$â"ÙyMDÏè‡@±ŒÝ(–K· *î½ö}ˆ‰~ïý1”Òo×J/ —Îg·—ïÏIŽþ±Á(Bg ±P"våOZ=VÕŸ´újZ=‚Uõ!¬J1t,hã§ UŠ1¤1=ŒVO¢8ðj¤ô>”•ýfÓþ÷‰Õ+o“¬ s„&ô;,ØþÛÕ\H ócßi0  œ(Iù˜V°1É_ϧýW(n¿)è¾)äÔf½1j@ù¶*’»:hmŒ¼¼«3à ûïév¿.ôÌy˱O¶Ë(X)˜OÁ**'h·\!ˆÐ˜lÛ3ø‡>b‰µÑµTv±úޏ2\Ž?XCí m0ö/0'ã•e¹TH0z“ïÄÃ*^>ð¦AN·g;Y»ÃbƒÃxȇõò¹¡c´ýDò2}ÓçOê¶»sÔÆ—HuÄI=×2:©ìE†&îê+8¶Y£ïÂ2¡…*„ÙÁA²Ñ†´×ö_l.øÓwÛjóX-QWSÿ|P, endstream endobj 185 0 obj << /Length 2616 /Filter /FlateDecode >> stream xÚµZ[oÛF~ϯöe¥"šåÜg²XYW)ܺvÖvŠ]¤ HTÌ­D¹$7ÿ~Ï\xjdɶJžûå;‡ÂƒþáN’R¤™Ìׯûmñeà.®|…ý¹1wNþóöÕßÞq>À ҉ƃÛe—Ôíbðqxv7»¯Òb4¦”ٛј1>|7Rl¸ÍçU¶ÉÍ6,ÒeZ¤ù< ×TõèÓíO¯&· oNÈ‘Bš“;RJ’¢ÄôR ŦÌI9+s\3ü£¡„±Fœq{”nh}ü” pó§A‚¸"ƒ{t=€XÁÕjpóê_1Ž˜0¤5 Ù΋tV¥Æc|Æ2AT„|ÓUºNóÅÃÊ0ïû& 0$¡ˆP÷ÄGpm\†‡ŸüsŒ„4çÄ<7¦ Œ.AûL–W#p·Ö:]§Žµg+’.[Ì4R˜Ôÿ–ðÄsÑÝc ÖŠ;ŽÌi!0(­úöc²1h(ih¾óa"”ùÎÛ/ß@˜ªá"õjV ìÍjé2Ë3cµ2¦ŒÐ(iξvY2‡³•K‹ùØÜÍ|ú|c7&„# 10§cŽ©r³-æé4Ÿ­Ó½lqï[R‰80‰´z™-FÜ–”ä´oËý:RŽ„hÒÞh1ˆ?Ê;„cÚIBV44Ù"ý-Á,ôUž"iŒfKÞ[é7Yn<å V§MuçÕ*«b;¯¶EZ—;¸†4ÊÓ…ûâ³yü[›T¬€œRLÕlÿ“ €4'îgE rì8’*p ØSP†•OtdX 4øFiKJ$$Lž{rûå×1͉e]ebž3¥IAEcå]wƒ=RFÁcÜ+°Bêe¡‹9EHR¢ Ý6»u $‚w  D ÷\Éáfé¾inU#"‡ßLHÉá¾3yúàîtBÊ|oÊåÚDÑÖsàs—N–—Ù½ß5åT?ÓTašHÈr)BS5šœDq×r‚$<¸Öw*“[ÑN%lQ>EJºþ´°²0Žp Ë™=Qúbéž ˆPë-Ë$pd,«)Ap°–|·\jB;ÐÃýaäÔœü9[߯¼ôÛ2Ë¿Ä) µA¬͉ûß³?¤rŒÕÝ2|˜ÖoKŠ¡JøœåîV1w†ú‡þ¦³ñ‡ˆg¼ &14< •€C7W ?€¾4tGz®ŠU"dȵÑ&eçiQÅ ±µú2@옶È äu´TÛËãüþçóct*d¦wν9wbPd£Ç“­qн¯ S1þaݤî5ƒkÓZóòML¦6üöæOo>œMnnb2Ij‘_f!µYB]ÔØ¹…%lxõsÔŽ”£ÉÅä—ÉåíôòêvúîêÃå1–˜X׺Ã3V;$[€y tŒ)KØ`ÌW±|ãæïà $r_›Ãê)RvàD31q¨ýÐRN21Zú‚+OEÖÎ-=Þ\Âø@OÃ[@b ònk}¬¯$ÊMøùSÓ×M¶èŒMFájÚcÝ›› XPÁŸ47½;¿˜<¸•©€þìf[Åè¤@!(¸-?s@Ý/Aa”A%IP‚Ð`üÉÃX߃q.SªUÈö.¢4˜‡ÙÓ hÔ hòÀ€&L÷kš÷¾‰ †8ÜžòæÌºÈ§§íâ‡õf êÞyƒîX°PËÖía‰‚Z«ùó ¼ßzË™†Q£²)úâMY-àà~ è%G€Çr¦B)ÈIPbu7óò3Ïm¶îà ƒ™÷–#à }ÍʬŠëáÅ ô8~¤f~yÖÉÊbZDÇaG<dfÕŽ4T¨ž4¥³h:Ï–ß×;×SÜ7›¸|éå¾”P)ksÃ¥7¤­üðpU£§=mÆœžÒš}øýõ¹éÂo™Ä4S¦5 O x[P,Er%C¼ŸC-³éíÞïçx˜¥Ü£„¥;ýõíŇI<[IHÞY¾ØƒþÚ¢ßaóöâ"*8LâX¶C‰³ð3 –Þ>Ë êàÑÜýoSFÑv ¸§ Œº«B_K€è"-çEv_mŠ–‰½hrà¯^ŒªH›[3€°0@ÙOËb³~T@VI&ä¬b2ÜZ5õÜŒ˜FîÞªÓ;yÁ¼ˆÈ£…]É¥›Œ§í€=¬-áð=îQ K¡ÏœîZ ®{»ÁzÛõˆ“æð7¶ØÂ”ú4R€îŽRl–±!Œhó$LµB:AÀ´³£n# hœp†kú|»þœÓͲÞÔ—QÈ)Í y ä¤VõY‹¥t×/Z/¾$Pfß ÕÓWõÁ^¹§ˆÙ+ŸtOÿ4h9Æa;AŒ´u 'æ;ÀíDÄ„Z"*IXþÛ¸ÂùiÓC0u“7í¨eöl#‹»'ª¦êº=m¨Ô;¿íçñž½ßµA(WW·è Îj œAEë¨tÁ2æ(kÖÖªo©<Ü¥EÚ·¸YeBu…2±òAõ­V-¨R×mŠtá"'U¸ÝlÛþމgq£üõ wÂÚ tª ïÌÜǾ­áÎ|¶ZÙ×&pÛÂ8ûíCVÝy¦à7O,ýc;[¹oÁD‘ΙÙxx3õ=Þ³éLxÇì·bËÕø:ü’ç{rA¬BÑý“6õ»ñúèv Â[’£·k-ºÛ5B9ø{>7Q™–år»Š£aPRñgìÖˆ€®ß­A#¦ä °ãЗZB¥]¸]šÑ¡Ù¥EÅSè‘â ò¬?N.'×çgÓÉõõÕuTƒD€÷›Ùɨ_b¾‘ÁboÅQ¸«W<ÄZèpù!>îY)‚˜©†G£L¬ Âì4(ìPœ·ãC¾ˆmº< _ÉAB¶Pï¡"“r€vNÁšÀ¨Ä yÛg—­ÞNci•’¶f·æ@],^Že=$3hvnᘹú®o—Y¾h·©Sc†i#Tow&ÀÈS`\*54~[ôâ/¸F] ÂäŒ ‰Tuÿ·‡•‚_wA>Ò60ñ¯³Õ6º£„$#Á¯~öýfÊ7 áóó~²QcI}¾·£sº-Ðèb"ôé ä![yB{l¿Ž8Z#Ķ_lxuþC¸:,ÓYÑÝ—5[ÒXYÔ¾t?ºõC÷E±(yâ[ÀfSkbMîî4oœªÖcg¯Ñ Óz·ê^O5þq?’¡ÃÿnëµûlÙ`ßó6æë:5Šk’'¼0H´‹žÇÚ]c €ÚÑ—ç}´V b'h;ð¿¢Ã¥Ù…nóÅk÷qf,²2u½QÅÐýè`ã—¥ÎJÜÇ”p# w¹ÜÙW ã ÿ cˆÜ{eØz¶β¼ìí™{›èîµÇ—¬õeg6g¢ºŽþ9º endstream endobj 193 0 obj << /Length 2734 /Filter /FlateDecode >> stream xÚÅYYs¹~÷¯`öŤc"¸‡SJ•-Q[rÉrbQ©Úx].šY¬ðÐr†öêß§À¢´Ò:¥Í`t£¯¿YÂëYÚÓB+Moº|FÝèækÏ?|øù ó†0qØšùfüìoÇYÖc”XjYo|ÙÞj<ë}ì^M®Ë|3 !úòÕ`(eÖ?Ùß®¦å|½Â/²¿É/óM¾šæƒ!Ϥ°}FŸÆoŸÆµðŒó{j‰3o©©AMA(èÔTF&¤WsR¬X%ð·z'Æ,Édæ¦Jžá^?ÑÞ >¾íQ’Þûî¦.{0xZôΟý+%‘qI¬•±Øéúz Xÿ&!:ˈÔöiD+ð·±èÕ,Ïú³ew½(pµSrA”Ð~ÅGp›¨ÝÆúŸÂJv"6Ë8® v× Ž[3_•ðGæ üŽ{óyµ®d*ږɘ!RT ¥ ûÛö,I¸äÕ¤´×¸DÃÉ[ Þ5ÔµåáZÄ–‹¥qaˆÆ€­¤Õ帩-§¢ósE„’•‚³¢LNjÀaÒKŸÓõ f»l˜`ÿ«IÈš)9ÊÝ+9ŸW“ež–QÂk„Áð«âD†àh–±;“@1bÀRCÔ±ÇX“©Œ£ÜVBª[³ØLˆ5ANËšq”ÆÖ„(e)•†^´Á¾Ý`ˆrIbš¸w)ûGy1²~ i6_MœÜñœ»*ˆ|)ê£H&ç–»­˜½å#gÂú•$ÏΨ†dfŠ0¥¢ÃwB …(ÈTp!WÙ£b 2•Så¶¢"¨ÝdD|FE(H‹-~<Ï3od·Ît¾òÿgyQF~p&Ð;M ¼Y°@ÖÞ®û©é*s¾Þn¦ù].gVkDOQNçpØ€2ð…4¯t}˜Ãñ9³±¿Ãi»þæ ´îe&# Ñ£ü­ åÒm¥¬½‡ÃÕC^´ûœ 5ÈÆ¾=Üä“2l1ñ«fy~]AÑ5"Ð__¶¦‰] Ø ÑË”±ò/À7lã¶ÊÚÅ¿åßoƒ *ôfh3ù²¨½¬ã´–Üé¹ùC^n7«âUÊêRA‰©­îg6”¡E6´+AaÞëó3öùüâðpt~žÚUs( 5\®+m§Ó¼p˜´)Ð÷ALBc…ºéË8Øž‹'!}¸—*âÄ~ßÌË<Åø,¤‘|¹JVŠä~(ÞŸ,¶iÆG-T?5ãsgýü­‘Úá|‚:{ÒœH ÔgÈunEú2 n`«Œh›=˜¦ Áý¼Y¯“Ô/SDý„deíãaMöU´Ïh¢D´¯–Ž@@·žÏî’ÎÚÒç-ׯò!«Uf:xeÒ†‚Àù«ù‹|•Œ—ˆêíd_ Ø-Ã`n3ò`'õÚ8¬…† RÏ<ª.ê ®ÝVÒ"²ñ¢×iþg‰½ÅF®ý´—é‡þYöËuT;Šr³ªæiÒfaÙ`DåUÞ-Uñª?å‹|™{%+óYøfµ «'!Úopåz뇿ãˤ٬9o‘—iæôŽJÒª™Ú‰sÜf"*`4†½éçÓrvÎd[ä˜P0Rx‡äÓùåñ‡ƒ_sáfPL*Eûÿ0Æû¯O/F^ÎO³u) ¾xÅý§IÐg8s¯Ÿ4䟱QÃ2]/¯#ÿB1¸\o–øÄûUl~Í7xP #—~ô€úI/P9V)K€-Ô’Ð߸ÁFGx™øMÜîÛÅÂB ,‘€;¿QóÕWÿíû¼¼r‡ vvÕ€NPÔ‡U É ¢q8ÕHÔÉZä¶GÐýÑ@¢¤Üå¤ F‘–ØÜµ‡_´bß1†ð;Ä¡ð ƒ* \…©õÊ B}¶ô!ÍcÈ>±¿–úWp› p¤v4©ä ÛÆæÛ8sòµí%Q{©òM˪çyÙA’HT…4@—Wa ƒ4²…4·‘D2Ãa09D?ÆtËñŽ80÷a‰ïÿ9>yöú´Z1óÃ5^áhWÚoàsÿÏ`ëª}ÏÃÞåKì"h{‹vªr;~Ø…·±åàìâô4äÁÖ.鈿_½(‚Ù»å_‰ý~Ú15?¹þïüw„+IÛ®²ìþ{½ª¢Ì8z¹f“ÛEy°ƒk@ymzÈ"â1Í3°·^l¬¹“s hæ'Ë\3cb±uÀ#ëæ›òeÊÊÐq¥ïoåòKq{Í¥LN!ɼ(¶ùæb5ÿm›Ÿ¥D0I‰°òþ2™Ã|és‘"û{¨$š{*â|?Ê‹éf~]] ¸:ÄÄSÞ C±}•êC»I}6ý<úl@3 ʦ.—Q%Q­2‰¼{í‘`RÝ„6>.•­×eQW´'”Å¨Ú l¡!í ƒ6‘YÚh}@?>— Œÿ0¥>šþ0é8Î!ÙŒ¶²ªiÎêRx0d€ŒÕ LÐtŠ4_Øý¸LêÇp ®îÔo(,ðTß”ÞRÓRݵež»¡.\U¶Â‘´­ ó3±ÏTTÊ”©p_Ó÷Ѝ[ŠPÿ¹f±~ö,#™–1xbØ$•Yûf$©´mwž±Î¸- ¡Vî %ÇÒ6™ÙŒ‹¤£6ø§½ê¾lU.ŸmI+HF 3{­ vYA¢¾é;-Ž·Å+­ÑÙŻч×xó1%Å(b›;Û×y‘ê_¶Ö«ÅMèq«†;Õ€<«ü뤜û¤æUžFjG#5ÐÈ6}† L„ŠoÞ¿?½>K* ¼nzèuÔ<À[CÌu`%øxß" ·I¼7¤ï@ì ýÊ0þ€Ú€j©Ü`„3¾'ØL=ÊM*bEkÊ~}Žƒ±ÎÓɽe´­27 ¯°yNGg>þb˜&9íÝy-þò£Ìé/Ú¿Ã1² ÐjžÎn¼éf{€9ÚØÇd¸QYä“ÕÔ«1Û >ñÒ‹òºþO³N§‚²®•t°Rs‚d$½óvtfäÖôOŽFgã“ã“Ñ –}…ã: œ×j_¬nÀ?MüXøÖ† œTuñøÍ##Ž6ŒßR=u¢*òëɦé<¿´~q ÍálС9'_I2,ð—H½êriA44 JÒ@­’‚æÝõ[@@T0D*Sóë?˜—ǽx#ià”VÒJ²ã@ØÇD‚°Ç³€: ߟÌŠÉãjX\Mvü¨ex¸ôh1€‹ñáx¾ÌwVO‘¥ªg¦y+!2-š„ÀO?Ö\ká[;!pR•ø s7 8€W"8u¸CØvLÊúç·È`àj”&ûÿË/ïÞ]]-—EñŸ$Y4íŸõîÓ-¦òLC3ô€Ê{?­ôÿQ«¤RŒ4Uá¯{·»ºz¾\>O&°jgÌ~TJžn()%LGÖÃÎ8Ü­!‚pŸân5±ÍŒ‡è¶ˆZ¿(=Úü» ‘ÒîàœÐ´ ú‡‚lø"`ï”ûG‡N-îîêƒWdÿh@âó endstream endobj 200 0 obj << /Length 2719 /Filter /FlateDecode >> stream xÚíZmsÛ¸þž_¡ÞÜL¨6BñJ‚餙œ#§¹Iœ^¬ÜÍ5Éd‰Žx‘(IÇq}w"È’lwîCkH€‹Ýž<»$Pøgƒ”!H*õ`º¼GÍÝêÓÀ^?»Çܺ,õVþ0¹÷×c¥Œ’”¦l09듚Ìo££yvÞäÕp$„ˆäÃáHJµŒ.ÊiS¬Jœ‘Q•ŸåU^Nóáˆ+)Òˆ±áûÉ÷Æ“nsÅùž\âÊl2¦‰ÄZ&¤åôËPÅQ¶¸ÈáÎð@ܨQäÍÒïÜ ¤" OÚ©¦Œ2Æ)ýWˆZÌgüZr0”ª[ò§t´ÈËG † ËQˆ®”„ÇßM·)–ù£³²r]dÕ•%ÎêÆíÈÒTÛ{YãæøÜ(]â@FϪ<7.‹)þÌqßÁˆÅŠ0 çÁaÊî÷2ÏJk ØÙñ—ôù£ø ašÛžåe^e‹âßù Ÿx)U$fi+ÒÏCÆXôäÅ›ñp3-huc¯>‚é(·EiW¥»±:³¿Í¼¨íèlU-³æaHÙøL1Š_áïå˧Oçó‘Õ+¤2ubvÕrYפš¤$Ñzç†zm5!¶*ÙŸÈšëk8cœqˆ.¶³¦o¢PËZ3Ö!ºGþ²“è|~¹¼Œ1±¸¥úG’RÂæúáÇ0ÚÎ'S(r|ËÃioj&!riJâôîŽA"ÝHÐDF«*xBÅp!¼0u˜é]wÂ{[¤gk—sH„W©ˆŒIÃHB šÓ¬Ék;ÑÌÛËò骜¹™Ë¢™ÛQf"ò•}þ¼Ê§EÙÖFf0¥6LpQ|šÐrLº¿ºQœ *R"Òë-íûWø¸€ãƒŸ2ByP$I´L÷'DºÈèÅøÄ"–?=²yŒ:•RiTé%¯;…€%X *Ẍ&”†#Ý‹ªEö´N€ãUõ)+± vkZpgljåÚ\wÁqnwhîI´Åy¤s Ý8Çüáþrt´jf¤ØŒ>°š@ã‹­rÂÆÇˆfúZãKûøÕõ:ôÕ¨xŸæîB àeA.x_O»…~G­‹¯k#€,”ÀhlùïYÇÑ?^=?Óƒ¢D&'ÚK£“'/1A0ݯwp"³?¶¹´*°Kˆ×q‚sk³xBœù©Ö¬»?xU»ÅÓâìÊîdZ?8µrLØœ3٢ɫ2s­DZç8MñÅTLµµ[{¡®2ûck±°Ó@mY” Ô¬ä[Ë 7ñ¦^§ä^ 'v†;ÿ\|%Y]-#í»ÙwÛü нTñ>l›XÂTRÞÙWy}±hÁv]÷÷®AË’˜ÐDîP-H†-Ú·ïé`“b@σK³r9„'(âbpzï§`WCµ U»H)Ñ4v%tU4ù·ÛrªÌÙÝÁ¶œ¦ «ö·í¢!úÍ4¯š`[EiËÜ ™²ý‘æc}Ô¿Cê Ú°ñoC¬e  ™6ážP §tÛÞ!À>Ìw6WÍÊÓü÷ ÓØé"ݾå©í ù¾È06ýmìúää×`H¬ß¨ñ«ð’-ð”Ѭ}µ"ZŒ9s¸Uté3³KÁß/¦ÍE•û./œËKtyçP†ëÓñOoÆ'GÈM"£WÇíÀc®{Ñ.Q&›'hxaY†5½¨”lD¥Dú5€#°æŽÕþ‡2þ%¸ÀYº# iÚ­°ð?i–˜éð™ Šo4P»iýbƒ±b®—/à Òž}뤰²XZ*;›/ò¥}ÑØYû¬:?·Š,gFK8UÚg¬RáFí¬Üí>iï—ÙÒÀØË1‡ä¶OÚ6Åea3ÇúE¨«šTÇ?wæ(‰i¼H/_£S4÷]êsþ " KUí$€ÜŒ")”ÉíéÇü.¸>[UÎ[›Î©sÒvP¯ø-! :är£±·5+ `*Žÿø¤¬Àcü9™kpÏø.R2RйÚ+%ß~×6#{»î—‘¨ùuÊÞ9Ÿ62 ØÑuI³t§!ïýZiÏ·J{Åh}Ø+|5Ü%aÎŽŒof±‰]h˜ç‹6P¢'º˜ÒKyæ bÛ1—Drù_ñ½´œÛñD`ò&~¥£êNH1¶ŸßÝ~×Îñz»î‰„¡Ur»ßâh  /8¸Úq’Ç/žœN¯³X¿©uC—S{±G®v§øu8´¬ƒ_5ȘðugäÉé ûpúæèh|zìó2’0ðÄÁt†`//Í›šÚ^ÔyØ,RI´N=Æ/Æ/Ç'“'¯&Ž_½9yîêi’ê~S!DœˆõÇ/œ(qEôº(¿€]dK¸ÿ]‹«øA^ò3Ó¤|`ƒÂŒ –¡žÀ?#¤7âÂèyX\¦ÉÚnÂÒ²ŽjñÅœB¨îéh̳Ú+X.«U[ÊØ¯`ˆ}>Qø–ÛûK5ü ’*áÔŽuéÐíXO0Ûˆ: Ì® ;Êp½°ãoË Ú§©4´âD¶‘6›¶U’0Êîf[(Y•òwý2Œy´U½ ³’ÑN¬œ±¼=jÑ}ÿÆ¢÷ë³c C0Pó]‚…®­°lð•©2ªý€‚~èiL}O$Y# Ân‡ÔótÂeW;„OŒKX®A ÅWòÀ<‘úïÛ¡œRê?ë®fnÅð4À½ÏmªÕª IÎÊÖ²: ¸Þ!Ò5 3‡ýÿÚ(ÖŽùͨðíFjc£/X°­ZRqE U±/<ô¶ Jº±MÑÕ¥ QpÁûàg‘—AÃÐDó´g,ÄÁˆAJOùÆ{ÊUwjãÛŽ4îÕ ¦Áa{­+Ç{ûR¡Yy=Ò^W$ÈŠ%ìe¯­aÔº?á˜èfÙ̶/ÓMù•¿Qw]ÌÜä&Ÿí³™;+|nuájv“àú‡ÕŠ‹ѱí‰X¬gHPŒüq_Pm,Û©rUÇ¡âm#A‰þK';åú^¦25}oq/©;L‰ë0ÁóÝ×”x‘ÙçÇŽ;­ìì2_®ª+‡–­ž™MóÅ¢MC TÚ•;†ÅÂ}Q½*Ò†ªÿÖùš[ endstream endobj 205 0 obj << /Length 2833 /Filter /FlateDecode >> stream xÚÝÛnÛ8ö½_aìKåٚ˛(©@w‘&N7ƒÆ™IœŠN¨¶ °å¬e·›ýú=G‡’I™i’yZäÁ$Ež;ÏbñA¢Ët:˜­^ñfus7 Áå‡WÂîÁÆ‘³óýôÕßNãx 8Ëx&Ó[Ôt>ø/òûm±Ž”R‘~;iG§ÃTG»j¶-×~ÑѦ¸-6E5+†#k•EB¿L~5žvÈc)ŸI%î<$3sÉ"eéÀ¤š ¥‰ÒeQ!Ê>CÀ¨ 7›tT eíVC™F_â4j9\ßÒïWüô°-jb¯]þéÛ06Q¾ÜVÝü3ÿÂÌbš1#ñ…¶³ªÜ–ùò`,ÖËyMÃí¢ øuùŸ¢ÅÑaÈÎ`d Ãx,‰Ëb»ÛT}(1./@|eŠe±!g[úRVu9·sú©·›Ý €[ìÜÇ{† rT{œEpVDË¡ ö”5í¹øezv19úØžœÓ€¨†ÁíÎ[["ýWRÆLeÿÒqÌ™´;6E>omï_Q©D0%ÍÀÄ’I£Y}þÂsø\2 ¾7;WÅd¢`´\½ú5tETÕ€âŠîEbA³XÇ?ä c&V{H»P*aYÚ:ºšˆ›ñÇñùx2½!kQ2e‰6ÙˆXоÉÅôæôâzrÜ!Ñá~ƒ8ŽJP¢T1¨4G3“Ê€Âr»¸]”vͳ(üô/V^W¯íü~SÔÎ&×Â(h0Ç«×Àªfëæ.ÎËê®ÝÔ¢œV·Åœx´‹DvNó̵ߑID4m?üÎ…ÞÔ[šxtãÞüÍéçjüëõxr<Ø‘Ñ̈l`À,30‚?bG&­Ç ¨DfÄÈÅ©%hÓR2=$Bà ®’?ƒ-3ÆaKT3þVùŠdß7G“°T™çß͈þ4”´Ýa£æœ‰Dø¦>]XV3ôIàTD4ß;Âú$aF%/`BþLdà6t»ƒ!ºn©cöPâ ®|ï9âÉtüa|ù6HlÊdÚ ë·¡":úx=&tßËå’ÎÖtò²òBÀïðwü´~mCÌl½ºïÛõfE_KZ.îŠU%H¶.ÒÙõn$Æ($É8aŠwrúûc’ì\–ƒßñŸžì7DDâwÂâ–4 $CЖ Âd®Í½˜ .Bd„,5˜Wœú O®ÏÇ—GÃTEÓñIPÏ©XÐYÜ‘U•µ Bþ;ù×ÝÖæU›‚|/· Uk«Íª¸Ë·å7”½@¬0GJš)©x0a‰ñxxqñq|4 o$SB‡ŒTZ2RðMmzFòò0'ÚÚ=Ÿ®Êª‰Íb†P$ç ’‰é%bºc±`RÈ‚¡Þ›2øô¡iwÏÓ$ZY]…‰Ò-é…~ˆ2‡4f|wúqÏ Žÿyqv<‡>ˆ¸ig Mã-‰£ÉÑ9 *ÁZf^Îrb >äôCкœ4ß6¬ß‘XФ±oUÉŠv×v㬼}°çIæ.4x•ŠJ²X¬ ¼,±®ä–˜Âü9B8š| J@I¦3åJ@sc%€#G8Åž¤æ þ"Ï´Øç_Kí°Çp ‚4@iÁ¶•Lt‚z]*\¥ÛÖ[CïA[Êk«’³Ìaœ/Ûr íse»¾ÁÌCC„Nµ×¼º>>_]ÝŒ‚гKçJ-8§ŒÓ¦ûc¸mGó7á¶ä±iìHþ°íˆqKåÐ ʼ»؆ ’ d{HµUG)¹I<}P¹kD7-Ç圦N[0Èl–1ŒÇëohGOp*R¦SéJ‘mllÔ-©aÚÖZ¯òbƒswô€`bZ …Vý‡.#öv3ÞV|ù¤b©J=æÎÇç7ãËË‹Ë`ûòUOH2ê¿É$Ý?cÐ:uf[dç–eÜùµ¼£µ¢Zïî4Æük8a!RËÖ6E½[’†€Q0nz]À®¹VVmv2$ƒn_yn¦nÑõÈ{’ä,˜Únš¢p•8Ý47Zô)þ«’÷Øû‹¦A5oŸUp`ÝCcšÍª§Ðò!Õ”p•±¬×•8ì ‘5o’CEGzã̳mk¦þœ–±VHͲL7° wúÑ«‹ÀV=lùSÐÆÀBìcý6ÄØ>»ôPgŠpL j¸øìáÞ¡ÄТPOA·¤áFéF=Z%têó)¶ôÚ·S}Ù"Ô91ÖëXDÀåÊ:§ZVpSb7º½AIß|C¦o¶÷³ážÇº™ï[ÀXY4Þ#ªfRwæ¶™€{'*R”Fö—†Ì‡iúN"•à—uë)˜¶lxblŠ®Âݬ×Û23Îû•’w½ÿ¦¾Aç*2ÌŽ’h‘ohöS§IX² s"Î!ÎØÃ©ÈÅ­›X"y:ðÊáªúU~ùÍy8Ìz¯}&Î\4ûn;¹ LD¤>ôcþ zÊRÙ‡½«êò®*æíóp‡I…1%mZÅcæ¨0ŠK·U"bW™øž|CÒ©Þ¬Ëöm û¶OÉÞºíõ[_ÛÖ«ÁgîR,`¯…öhö{LÜ#¢{“¯¨´vjƒîSï9^9Ïñú€ÎölnÿÐÛÎöóq’Sü±-»è,Â,Z²ý'šþ3¶ÏhÊÄþ½M•×UÜQË®Á«z•\ÜÖ™±÷ ÍS“³¹ËÃ`5‰šè¹«-h§cL-8P;bZÓ×U±ZolŽD|¸WpV,—6úæK”ÙƒÕÂrÙä!–aAörôÿÏÿB9¼ J)¼bë‘«¢öÝQ+…i‹Þ?¾3½qi²Žî¥ sÖÀ‹=ÐÖ’w•þ¡{‰o¼1B’í?~Œ§Ÿ~ézŠˆø¿Y×l endstream endobj 210 0 obj << /Length 2760 /Filter /FlateDecode >> stream xÚ­ZëoÛÈÿž¿Bè—Ðm´Ý—d€´Pd:ÕÁ–r¶ô F¢-•¥KÓ¿¾3œ%µ¤×¯ë!@´/Îþæ±3³³ÿÄ áƒH)–èx°Ø¼âõèîn@˯„]7„…Cgåûù«¿Ÿ…á@p–ðD æ·.©ùrð9¯²oû|w2TJúíÉPë08;‰up(ûb[âŒvùm¾ËËE~2”¡VI ÔÉ—ùO¯Òy»y(å3QâÊ'` ³x`b̈́҄ô2ßveEH÷«œ€ý~š [rßÞÒð¶´ù:ßä剌ƒ=ÍeU,ídF?Õ~wXñœ!O€q( ±¤}'HÒð CQ„Iߊ`}"¨á‡5EEkfç“ÙttÞ|¹¤¡†Æí¾·ò…-{ãr/eÈT’’Á_욎„BɨY±Ë³e£ßZA«H0%ÍÀ˜؉PÔŸ¿ðÁ&K¦£Á÷zåf ˜Œ´Öƒ«W?ûô¡"@dŠXZÉeïãA³P‡²0ª# ¤^){Æ-©ÑÕTܤçéE:ßÔ *³HЛb"¤eÓÙüælv==õ ìJ´[¿A£ƒ”(U*ÍÐ̤2 °ÌîW…ëXN}?‘QUåkÛÿ¶Ë+g“khäÔXâ«i•‹-´â`Y”wÍ¢fËhuŸ/‰E‹˜8„»¦§yâðÐD"˜7¿r¡wÕž:à8€‡3ú¹J¾N§ãÔcHF3#’тűù¿ lÑÀ’2 #³3 h× ™ß¡áPpý ´L‡%^¨gü-³ ¿oŽpbež8ÿ)|T iøÓTâfù&@Æ™ˆD׿+ëЪ|N ¼Š–GOèÙ>Š˜QÑ ˜‰ü†nV'D Û³EîGCÁƒùž'žÎÓéå[/ؘɸÖ§!D0:¿Ni»ïÅzM.¶t²¢ìÄ€=âï8µ}mcÌb»ùÖ·Û݆f ÎïòU…Ðì¬z7Dcè“d1Å[9ýã!I¶>«õ½Ÿù—wü?ggDû [çå;Á0˜ë´ċB˜Äµ¹ÃàÂç`©Á¼Âž´ÒéõEz9:‰U0OO½zŽ Ä‚ÖâFVUÖ2hó_yÈ¿ö6!(×?د¨Un­6Ëü.Û¿£|ìªeuØ 1|/ù®z0aÁtxx?›§£©¼‘L í3R Û’‘‚oª·®!a‡¼<ô [³’¶MQÖ¢îC Àâ‹ÄB€ã|A61¿Ä®So,L ù(-hê£)ƒO÷šv×< éÌÊêÊJCº¤_ ýeqÈŒ »îô<¾ ­ùìÈRpÈxÓÃÙûŸÒñÓ>LN!'™œMÐGÕ?}뇠ժ;èƒBé(]cß*ØÒ©mZy¶À¯V.… þo7ص˜«ü[¶³”ɯhî?:îp¹µçSÁræU¢Y¬_`X`;LAZP¼>ƒTÏ'×LàãïEP1ñŽ”„9z5?{pn¸hvûÛÓìùC@BŸÚv=Ï‹Mîe†…Ç Ú e zôãÀ¦ˆ&KRdIªcIÐëX’r, æ( JJrÛ¾µß­ ‘¥O0îeûê­ß%@ÛÄÏ×Û/¿\ íñ‹ Wã½læâôtµÚl*ï]À„,ŒÌóu²Z½Þl^{a73y:wyÀ‘)7>Æï-ÇÁ ð³ÉK|¶ öè§|fþ˜½ÀÆý‘P%‚ ¼Ö»Fþ!/ó]¶.þ›/4ö„×7|Ÿ±›Ö_×Ê¡“Ѭcå¦gåÐo­VÖVnds‡#€§|ê‘uÓ’CÕ\¹,´î•kÛ$Ú6…Ø7©7dB!dBpŠþ:Âlòô"°^›?c×»›î³;oàÀ² IkìõÒÏgXNkóDð娸b„ø–ƒù;˜tÒú²¢û eX‹ô9¼iw4¼{À%˜žrnäÜÒO:>šIÝ.òëIJpJD×e“¼°¼ßÙMb@H*lžK½¬ý›ÿÒ¸·¸Ýv»÷q!CЩq^¬õWö.@9HfS¢¿ú62±ßwë÷7 {tÊ!zXÈUÇ!€â>9otI¯à"…xñ>(^ÙÂ[¬³ªr¶èˆ‘ MíVl|@ Ø8=ç½#•µÊ膖„%GÂoéúKùζ)y[oÓ\ÚúϽ~$D·“~<~ øß°‡¡}š.é~édÇíTïUZ9¯ÒÚÿ*}§Ý»ƒu§ÝÑwïÝ —ôðR´ÚÙ×u›îgû'ßMZ'?ÇG8ù¡÷$ïnAt€“ = =Sþô:¹‡Ø³h*guŽïÞÝ{,Ø× ö»æåt®1íß$hmlÎ 9¨ƒrgÉø|ùiݬ_añ·¬ç¢Þ;­6­qÔ¤èÇ}ñ`7‡Þ"+=÷¹U†›§Žú±µÌ»ÏÀ¶Ü‡ÍÚ©Q>ö@ÑOhˆP¼›3Õ nF?žOÆ#üö ΦãÉÙdìÝ#ÑyðÅù?µà²« endstream endobj 215 0 obj << /Length 2300 /Filter /FlateDecode >> stream xÚÅY[oÛ8~ϯð£3sÄ;9oÝÔíΠ“bl&0[‰…µ¥¬%¥íüú=¼èB™nšÔÀ¢@MIä9<·ï|dð$x¢“‰¤i¦&«ÝYbßî&npõþ ûy3˜8ÌüÇâì—wœOp‚t¢ñdq?µXOn¦›ô±Îöç3Jé”ýz>cŒOß+6mŠU—…ù¦ûì>ÛgÅ*;ŸΨžbv~»øýl¾è”sB¾s—fæá6åp›+¤&B1„)s;½Êêf_T¿½0] §3£ ÝÎ|s}‰—ן..æ××~và‰‘ ºßƒMBN«fµÊªê¾ÙþS!0¢ TÌ?Ìÿ˜_.–—Ëw?]¾)ÃD!ñ@[D¸FDòvJ‘$‘"½ Êm»(k7HÝÏÓ9Ót›¯ˆÉŒ2Š0¬Ÿaøåni¶ÍvYqNÔ´FN(‡ï h2ŠfÄ8¤!ª¤[’Vnþß.’kÄŸÆR6–7·Éd Ÿ$ˆ+2ùl§î& 1¬`´\ŸýËEÁ0ÒœRª Üd—<$ 'ÜÆui¼¼,Êu¶|ê5‹$Èbn4ªvý_ O¼Ôá° ã9C$AT€¡Â%äÎȃLv¤P4t`¨HX¬(ŽûØAb¯[+/˜ŒÝþŒÅ1# Îp"ÚY?;hŒCÁ-\ŠSCE‚¦1ë´N#JDS'Qª„÷`¨™ÁRŒOb.ÃPÕ¡æªv¾þ)»‘ Q€m‡d#ó5Œ!¤+ŽEz}0,9Ê QRØCW¶]²é£]PæR]3eÓºô™ã~:±(º/xî-N÷Æ6Ád´‰Ôi5{‘n/rêýì„«K¢‘&rÂ%…6#_Û‘“k ÎŒ(®é·r™pŽ4õZÉ5Ôb õÉL™8ÁJ"žŒ †l¶ (øèB+2›c¦Mæл¹û˜ºë9;ê­±yQåëpî˜"A_›¼ùC) (¦àcèÀZʱíªz߬À:HôÃbºØ@S²ßÔÀ”½u@¶ök6e³õŒ…$JA„EygUd.7i±Þš¥˜]V¯Ê¢ªSW‚îKçͪ-¹€b&a±=C/E&ÏÒK2ì2†^Ú"Üdn£Ö]ÒºË|ˆ2a±e‰#,H&HBÅÇœ1B Ê,DfþÅTY¥FT¢ðË3Àa³3ó®òåRzìßeiî½o¶­CaÁ×:«Âio.¯]¤LÖm ö0¸In?ÜD}ÁùJ?ð’c(yà‡¾í"fÊÔঠ›ç!9Ð\ÂIÑw¨q’Á+ks?™O÷¥ñÊ0šµ{ã†û[Æ .1Šh:Ò¨1Á‡XtÀŸûë–Aý€¢¥=‰ÀÓ&íë×ß§•bzÄN²¢l`§D‹éÞYZîÜã}¹wGò`P6õcSrD‰µÃ¾Ý¥_r›A_ØZïÖÚÛ#®»•3OŸóíÖz{yyõ`ïÄ2o—ÿØõÇ›?—æ—ïÿ\^ÿöïy̗ʰ†N Ïÿ2H‘…鬜þöúyPUþw6¬Ö~¢>•âxÕT~}E( ‡~úB„êÒÍ 6AŒÑB†”ÔÏ%[2ìÃñû6Jò»\¹躌Ÿ†¦YXxºäî¾VuVÇ.ÞÌa]žF¹0‡D*?ÆÕ`œ$'¸÷qµÒ˜y”ªC"Å‹®¼ì!äF1C£Ô34 ù÷ØǨ×ð¨ƒ+/s¯ÀB—G¨ %K¬ìÀÞœeøbüŸz5N*{Oöñ¸l ˆLØéø "*¥ îÃ1æ"Á#>ÐZ^Ò;3ÌÉ÷(ÿ3"°ôÚÆ”‚}™˜#¢&?Fy„­OboáÔË)ÏõâÊ™Ø5iOaç–¬˜ßŸ¢fsç%ù:3BlÕ@ÛÇf Ë¡¿á¨)}=áôZ_Ý`gn èaH´³õýNæ÷S\,àøŠ‹¥@šˆÿÅõ}üW! ^{/F4ðâÀc’ EyŒârboRáÇ%ÿlxäíÅ Æ\^Y:h#`Ðb FÌxâøí³Â¬S½,³í$„¬ú¸‘£Œ&wöÊ#Õã6]µˆž=/‹°ó×7ÅÔ‹hãSû<½ÛfÞÅNBˆ°.˺=FoÒzÄ?^,æ 7øùíò½ÿžz˜WíM{ÝÂïjÛœã¾N‡–¹´ô\¼õÞ¯ZÎÍøs3ˆóÚE!ó­2óÞŸ®íKw ùÕ= ¸¤yôå³J-m5+óÚ}iõe_ýœÚlÜL±Þˆñy†¡t´÷²Ît¢kT6 ï4&4Lœ•»¶¨Së/̺ó Åܶj ûûx]Õå>ó¯6~`añÁ}„8l›Ê=t3\vcf·=)_0ýí_¹qX‘¬ï«´ˆdzygìjs½©¼˜ƒ,7¶Oôðo™ƒ«=ƒ^þâgc­ÆoÀìˆ(ûi endstream endobj 221 0 obj << /Length 2558 /Filter /FlateDecode >> stream xÚ½Z[sã¶~ß_¡Gi§B‰æm³q2Î4nj+3mÝW¢mN)R©uÝ_Ÿsp! Ú•cOÇâÀ¹âœïMg üÑY–Ìç$z¶Þ¾KÌÓýÃÌ^\ÿôŽºqK¸ü~õîÏ?J9£ É’ŒÎV÷ã¥V›Ùíüãc¾ëŠýbÉ9Ÿ‹ïK!äüÇ…óC½îʦÆ7b¾/î‹}Q¯‹Å’IÁ³9•‹O«Ÿß]¬zá’±3µÄ‘Gj*P““ôtj¦ZÊ…U3okêþ§_‰ÒŒH!ÍPÁ$®uû)™màåϳ„HÍfOfèv¨†«jvóîo1‰” ’e" 7à:ßé*!T¤o#]I"3JoËí®ŠfTá| ÁŒq o !@ê4w˜LˆbÙl ®¢Ô%Ð-$ ï“…Î?¹™)D‡dR2œ¹ä¢­@3§¬»d4a½C'oŠ;kí]/;MƲiªI*¨_á_‰Lœ l¦ l‹d°³íö1M¨&j26—}Õ\œ=qWuÔ›4.£b ÒP `cXig¦%aI¿XWEíbDJ~Ž@ož¹‰ÊS –eƒ¼ÁÈ0³¸"©Ô£Ä¢1Í–<Ó°´vá¤>UP‹çTE=/¢{&%<í#e꫘¯ ›1átcmso;?âSÖîac?gØ"÷{avLJðØU¤hòTBQP³ ðQñª¯PkGhF„ WR>Å/VÿøõâXªH4„–¾TI¢U(õdØX£`ôw#ëÉ® V†È¦ Ä*‡MÞå$*Ï­aÅ©@ܤ{pÕ’$ê… w OM™Ç¥ôV#tØÒS3žc#,ðÐ=Æ÷…XN|Úoè@4ªaN¥ ‰lnHóÜé×›o*cEDt™øv¢æéL¦ v¤|¿¢3KQþMw‹Sö6»¿+Úñηïû:,¥!ÈLÕÏPœ$xÕ×2*ŠÊµ#Ê‘l´û"·ò¥rzI=ÿáâÚ>d³Ý7{{ñe!¡ïËæà¦;´b®?Ü\j JœZ•ÿ^¸ú#LÒA<´ö¾èÖàMç—Ñìa.Ú‘„Øêœù”É|Êd}ʘ벎y”BM¢IöM—*1núPÉæO¥íxvùö±9TNìc¾`èg¾Ýåkwi½‡Zv^É¼í¢ºiÈkÚ‡Jï~ùð÷»Õ_în.ÿyÓ¶%ìKHíÀC}’‹í/ë²+óª‡?Ç+k™“­5ëýÖ[oÑéËyYÉlÞ´åÿ\ÚCžÇ Fü­^’ÞÄá,ÉH’†ym¬àôÁ¤ìÜIl¼0Åsn˜ãÊå8¾õÙ}´8ª³p—âoçEÀFHçyu0·é‰Tc™cÇ楀ú1ùÎmšÚôuõTbB{éÆzs-˜ïö FáK¹±`tªP¿ô1Æ ‘ 9ªgÃd@‰4›øþºèûºý.*ÆA¬ÆI}óÛÇ77Ñæ2íÑ`é€Q{X¯‹¶½?T.ö¾W88´ßÛGbÓ>¤>K*`¥–Ï ":ƒiÜ!)Ôü·`š¸÷íúsÙE¤B öFR€55‘z‚èqtÆõµDïKSnFLŒ<ÉïÕÑúŸÅïzêrq¡ ônö‡xRgV@¦A¾澜YõüQfDd3ÚÙcËÄi™ö† >Ï0Ç©N­ÍÆÖ>EªBûN¢sLJ–Nl| :ÿþr5F®g`òôkû ìÓ½±L~%&Ï87K1™¾“›$;l1"ŽííC‚¸-òLvu£E­õEé*áÍê:î03QÌ|¢@ËÍÒ)‚hž b¹/6'\o§tÈIšº^Î’3å‰fúu®×@ù,Å@8ÿ¸'L#­[昰i¼îé <[#ãaɵý°è&ɘ?ÆÁ9“PÅýpÎ8@\Èη縕òk ÈL&ØÛH…ÍÁ9Tÿéiðÿ¤óSoþ5wȺ„N`:Sƒ; ¦ÇƒÆ ×4€ ÀÈ+>í ”—†g¤Ö¾ŒGqz:f–EUl‹º;§>ùœÁ4Ríô·jåÛè·%& M¦‚¾˜NXn¾²ú’á×=9ô)OÀ~#%}%ì?Ai¢”b|ãƒWFëÛÞ²÷Šv½/w&‡cIèι¿Å.Öó­yôÎÆzôilúI.§p×6›Æù©päË‹ñçxšáεdLà·€âQ^L¿%©+ÄRÛX¦ì,s…˜Ý«[Ëa ×½Fušƒ½y›܇ÝLkìïþظÃËÎ.¹5¸¸uw=Âa%PW?åý¯½¼Z]\÷ ó80Ö¨M”§t™,p€Ý¦ûÈGƒ(õ žMz4¢P ÁñÚµÕ$ÒVÕðÒPc0Κ$µ FDRÕiì m±möÏîüÝÚˆ¢ªË+€Ü›g›@yUÙ3É5 ð8³š`±séäì½Q6‡ðw `”î¿¢!úðœ "Sæ«×#öyƒh®_¶ŽaQQ¼Í‰H뙋Yf„uKkJþl-lªs†fJå=cO´±#ØLà o<{ôü…Î1qωj¼†Vèdü¿ ®by¨ƒþ`8ÍhÍø!êv×9„>ý.89‡u<Å©q‚EŽ¿gG¨V¿ö½×£}õá— 'o(hxk “«:¦·¸ªÓ+l÷EÑÇïóè endstream endobj 227 0 obj << /Length 1827 /Filter /FlateDecode >> stream xÚÕY[oÛ6~ϯÐÛä!âÄ›Hõ­iÝ]›`‰»—¶0dK±8RgËMþEŠeºqoË ¶¤ãsã9?á †?¤q (E)“Áüî,nï®þrýö ¹£žäÅäì·7œ8Fiœâ`rÛW5ɃOá«eöµ)Ö£ˆR²£ˆ1¾In«ySÖ•zÂÂuq[¬‹j^Œ"ÂMCœŒ¾LÞ'Ö8'äH/•ä¾›¢ï&ÆÉ ‘ aÊ´§×E³]W›Ê.ˆ'}q&• ho%_Þ\âéÍÇW¯Æ77FÚÉ HpÚI—·b’†¯Ç×ú „YC˜2ÌËj¡o]ý~î3‹c‰¨ŽÝñûñ‡ñådzy5™¾¹úxùÚç¦1Š ï¹àÕŽhÚ‰TÙ]áÓD”Ry¹Q2ADSŽd"‚S„¹ÑP7Œ a¦>hømÄ“0[•¹¾,VÅ]Q ìÆkš¢4uCýóåûã…uLbáä\h–PMÚ.¸¬½ªöüÐ7îËfYo½¾o ¯«i­2>î¹üaüa:¾¾¾ºö9+)âB:¾b¬|õ!°ôØÊæÐBþÕ¡»è¿©¨ŠyS«vÃB¯~i´‘Y¹Ð_ŠªÞ.–úyVåúfYu®´Ù‚Gólãõ ËëÖ éó*†8meÝ—«•V?‡n'"l²²2e}•ÊAU>Z´í‹f©ñ¡ë£þåEŽ´QF)ŠÁª^ÕÑd„pƒ=٦ŠüeáãqƃQ@ñ@|ú9<|€ç’÷­è]ÀÃj½VÁÍÙF\£˜0¨ZÖêbÄÉ¢h> stream xÚíZMsã6½ûWè*5Ââ“rK<šT’‰½±5'Ç¥¢)ØÖ–L95³»¿~ø’¥%“ÃÖL‰`wãu÷ëjÈÃ?2Òx$Cš«Qþt†ëoˇ‘»¸úñŒøuX8é­üavöwBŒFk2šÝ÷MÍ£›äü1{®L9ž0ÆþÝx¹HÞO¶E^-×…½Ã“ÒܛҹO¨àL'DŽog?ŸMg­sAéQÚ•/”&Câôa¦Š#¸ 3Û¤qøGk‰õRN…µus‹G ¸ùó#¡èèS½ôi ˆ‚«Õèúì·˜GB9Òš‡nLñÊRìD^AT‰Ðë0'I^EÃB…ÕiœkŒ¨¡óxÖ U IÂF~$0uko PX[($¹õO¦¤… öÉ ƒGµ„@êg–E5† uJçð|mw:oý¦¸ï—p†€íŸþ ìèþ2Ž(gÍ¢|]l*WÑÛb³|(ÌÂUq>¦*yÌ|µëýÑ,¡¤1Õ¡¸# )ª›Eoœ½e1¦2©bV)Cà¿gt¾2EtU·Ûžaå þš (‚Ñ ÕãF·¢‘5êM•ñ1>N Hm¬lª¸±Ý»‹ÂÆz6ç›åM̰€J&d‡åz Ñ …&â}-Fa†A’XFÂdœEÒië»f^ž¼^¹pY•¹]Tk÷war¸‚ -Œû"OH²v{̖Ųxð<ú—ç³éÌ™»žB{þöazq>EÑÈ}4ÈfaàbI˹„Ccò!qÙòCT²ÕÀ’@XÖÕÚ9íŠ4DË&@ÐzoЇêÑíp}ï6íd-‚<†`;’ ÷mßÄ0 °PŽ„N ¿ƒ€gµ)š¾ŽÁ°`.·ÕóÖ—øÇ±H“¬\fw«¦D^”ïÊcÕ¢ÇÅdý?K3ÉV+—•<«ß@8½]ÝmÇ„5¥Ée{{á†yi­Hȭ笶úT¿+ý†v´€‹0¶™—ég O ¹ÎûÂôÛ)mMQ,½ÓŽäB%J99 ž_…•µ°îH,°9|u¨øX€)"Óãéà€^¶ bn‡!•vÅ„Ü8 ©+SmËbó] +žB]§ V~e§Ôz â¢%˜ï¯/ÈüúÃùùôú:fVBâÓv8»ƒK6Û<7›Ý§ŸÂë²KLY®›ª õ(lH#JÈTÈÜ/ý¹Â°;~éom1Âþ'ñê¥àõnó*íŠô4^¥@2xÝ¥ùµR^ó³Sj~ØçNÅÏàºS‰û?ýkÿg+×Ïü»…+L:…RFB¥ù׈|v€È޾ªÊo÷nKoŸÊ篫|Ø¡¶4Ucÿ•Eþ?õG 4äE=dìÕ‰”>‡§íÑÿJßšâRýÍ”>9@ê3MQªè)¤¾5Źü¿Ô?™Ô÷=ð§ }&@BDç[KL‰¿§Îß'A A# ¥¿¸ €ï­)&ÄŸ'ó­:yÙ 5èŠ*…'*Ÿ",é>•¿·?GØ“ÏSö1aÏd­¾¦°…MÑõT¦õÄ8…®·¶¸Þ;êI rò$^àÞ^s÷Va+2:£pŽ”úÔZÛ*Oë»s;Û²&€cÄv³Ÿ=©@ɶ‡¹—¥³0ðaµq·?=š"|—XçÓêÄ_¾-K³ðjÅÇÔл%„4áXº²äXÕ]“ƒfp²Ú~--áØÂ=}?ýuz1‹ÊÞÿ©öÓÒÊUëDŒ£ÕÖ–œýlKÎþ͜Ӻ;ìç ;ÜW%4ž¤išÌ†·]Â)ŒÒNÝ[Kè<ÕÉ¿Ú+ßîC^§š¹ÄMÀðõ}3rc-!5܆sgf=Š [Bײ°/%hòÓ½sk³kÿúìÚË.»/D1ŒY: ØÅ¶|ùb ;·÷žKoÏÀæÍËs`œìkÇN`ì+“¥S"›&•©š£ZV4õo> stream xÚíÛŽÛ6ö=_aìËÚAÌåT>¤‰S´›Lvg`ƒt`(¶Òñ–'¶œtþ~Ï!© eÚ3Ùq·}XøA¦Dûb ?6ÈèÀA2ióõêînø?—?>aaß6Ž;;˜>ùÛ+¥Œ’Œfl0ýÔ5] > _Üä·U±…CùÝh,¥¾Y9Ü—ój¹)ñ‰n‹OŶ(çÅhÌ•ÙÙÑõôç'“iƒ\qþ@*qç™È„Lm%aBz2ó]Éj„ŸHŒeDIå¶J®Ö‡k:XÀß”(Ë_ÝÖõ60 ÿVƒ«'ÿLad\’,“1ÚHæ«Ô@9?VʼnÍô°Î7 v6\,Ë_ñsP§ÔgAÏ™BˈÑ«b]”#À_!ò¾qe Õ FÎA á`2¢16¼ojÐÉ”âøæXXй‚Ü;˲-(§Üˆz†Œ#Ï3OB@¯i=³†ÈÆ/TÑ€*ëî’„KQoJ ‚ ¼k–’#à¨Å(7"cŒMPCŒÕË<ÒTÈ-èÒ»ÖÓÀK$¡ˆT²&sWm÷ój¿-R )M¤µõÖgè|Sî*ï ó »É¹‚jTF2¦cÐ5SÌ¿”$!#ˆ€v5_]äë$ 6Kvœ†/HÃf¹8Á±6$YcÁ¿úˆ¸"Œê¢e‰à«T.ì¨÷¯Àx@™%–g}êGÜ8±PRF o ®Øn7Û—Ån¾]Þ:[O™(óá¢c£,EÐXIå±–úVùž“Õ¼좵Þ:CÛùøX.‡ÕÆó”—þúüê‚ù'5pÓ¤šÇË‚ƒ5tƒbè˜GDœ–Ä*Ñ#®ÄÍíæ“'¤º . Gc "(Ö? dÿB™\­’ä<yKR=¥g™êÑô•^̫Ͷ¦(¯cv´äËrÄXSûrrÈ.çÁµ1:»[žµÎæ¯7›UøÛè“$™ FÌ´ó"º¾SËyÙ¯‘ꎪ:—×âþˆîªbká),€€è5!xÔcv¦Ô£­"é 1ÙÆÝ:sD6(˜ Çh`¶ë%&޼*p½h„×ùP7‹«]-ò¢ìZ¼ôÄa8ÑÌçûí¶X#]?¯–@ȼ*¥¤CGNküþ)Zõ¢Mq>M¦'¯'o&Ó‹ço&I‡1€¹ÙüuYÝxè_FJóÕu†kÔ^sq–èH‹-Ÿy‘ÑØh3œÞžUf5ÔöX K*†k§ å¸úwó/X•_ÌQ>pŒ®þ~ þ}ªk€„p8gDØnVžÍ·@©ó=fóN´Œ­ê3mšØ,j¥‹/ Åñ* :£ªT]fª=Ääüűˆ«ŽeùÞ%«%lj_o$ìÿ;gE4û½ß§X‡ü­uãWÓËw/¦ï.“f¡áºË¨]þPåÄÚ¸‘ GáÜéfºÙî‚$0‰ñZë¡´Ü·ÕD+_oFív\¦€7ŠguxóšÇÿO“Öo)Ñmw—Ì6ÅÄrW“²*œU!޼¬Ã@âsñyŸ¯šü–¢€[Wаï^¿NÖ°Úõ ˆýgç ¬UôÒàeSî¾Ká–­ïc¾]½{ñbru• ‹¾ú¬ùG×4ø¶>°<¼õöïÏÒ!ZˆÖ^Þxfo§³Woß]¼LçF(ç}àÝq0 bb,v%„ „i:KI ]È{2e¡l¶i]$u¼6c)62ð¿ÿI4ý3O-S‰ÑDD¢›>ÿq6¹¼|{™Âb±uúªHPêqcÕ+eY,åe\,¹$}´üXøÅ®ükð“u^ù† W—ô‹Ë^xκ¾s²½ãöÓ`s‘c0Þ7žœ±À40Úš|   ¸Ÿ¥ÉGXT©4ùgÁšüÖ‡4ùç@_7ùú]•o«Iã':|õ»tø1þ^ÿ”al|PÏïéña;å FH B>®Çg„Â(Æú=~ª)…È¢e/|%ùÀÂZ=ª­s ­¤ìUx‚ö:1 81°A ^¸ég'Äfm éqÑ­Qzí<‡Þ¼3s3LAXªòGB/ŽØ7ˆêÓŒ@‚Eå[§ O9®€7¨|äxàG.Ä—Eæm¿ÿd=uº<£ÝÛ1IÅi²¾„nÑdßÇõõé\ßµÓ“Àš@qj8Àqš¯{Ó2Ôjý̪ Þ±¡ ¡{ÜÜ•AÉM•t Döß»H31èöùÝÁŽëà2Ζž)‹¡cTO Fõ§yMÅwëÊÿÍÛºeµ„”[ÆLÒpX¶­mmœ±ÉÖ3ˆ^~2-\ "A úmªˆå Œ1ŒæG»ÌNf?hijž­­?u‚¾>P¡¬ÉdoâS¤K fÀ ²ûT³lÈt²ÊO)Ä™¨4¥nˆà®/S # ŠA–fì¢p£Ôƒ“ý©6úІA þñ>ãþæõCTÕXfY/£ù‡(V¿;lîº2ÞX†¹¿¸|â¡FðÈÃ-¥ÿäï­‹Ü%`,ª±Bò2Æ·lp½såÚÞ/nr\ùŒçïäþâû9øÓïçp‹›{<Ôj[ä‹;¿ØïŠð–7Aøsj‡ŠÐJEÃ8,Ð[5áÓhtJ÷SC:M o›ÿÊM0¸Ÿåƒ±¯ü2÷—&’bƒ­Å²ò÷׎Ï;¿¸Éo½³ápoxysÃP8Æ _ñÜ%îð¸‹åéî¡dðæí²pGÙÆÏð9¡ƒ(îÙˆ µÉ¼Ø–›Ü“3:­{œ2œuŒÿmY‡ü–¯oWázÖvîÅç½;Oy¦¤Ý#ª¿$öîŽêãîE±­–(›9NÜ@5¤ÔV•I˜48¢íõvËú°³–Í¿ÍBe×E—ž·qN´ÿ?oKÌÛ$=:oˈ¶ÑQ÷¬Ü,Ž m²ÎáÄ›Lß{ÈéI–ʈ¢ìD;Ö—/ÓÝq..7îÁE=\‡“åÂßíøÎQGg3ŸK© ®£s6,PÕ}G¨L[¹vg•;¿í*ÔÚptdCŒÇ;ýƒ¸µðÖæÎQüÜßðs;ƒs;\H6:«ek2Làr<ãG‹IÝ8”yaäö ïj(UQq–‘Â⌇ªë·Û0í!6œpp‘³ Æ>ÃbĹû®å.1o£Œ€Iž3§šX´¬.æEá2Q‘àšCûB•8nçµ"Æý±aú ZcQ›sú¼~gyyEŧ%p=ûx÷¿õ1ESžaÔ‡ ¸6ß<ës,»Þ`wô3šv²ä?Ø›Ú}ÔÐúñßÔ Œ T ½ÇtÏ­Õcæ?[RÉÉf¬Ýx²y´1c >itȃ¿DbTýÄצ§Ð¢µc¬îû`ûô—.Ʊ/]~·Æs ÊÙVî̶¨K€Îp-4q΄•A¹é²·wÉ ‘‚t©ï­Ûšé⽇úròê§‹ÉK¿øá}27RêÒÆ)à,ÚUÆØ}Ç×Ü_ºI –þS€…_|ÚnÖÍ ()…#~–A[Û?âïw²Æv±wXN›ÌÅ—´[áá—˜&#RØÇ4Ý8 ³Ö"$Nʼn#&Ög¡Ä>J(Mã8êvÐÊ•¥þó |vø-Ütæbë|.alûE>:Hkÿ<á¶- endstream endobj 249 0 obj << /Length 2596 /Filter /FlateDecode >> stream xÚÅZmoÛÈþž_!ôËÑE´å¾“ùP ‰•ƒ¯wÎÕV I Ȱ•)•¢.Í¿ïÌîðe©•ãÀ.  ¸\îÌÎÎ<óÌÐ|’ŸäéÄJÉr•MVwÏR7ZžøW??ã4o §ƒ™¯æÏþòFë OYžæ|2¿.5_O>$¯¿,wMQŸM¥”‰zq6UJ'oÎ2•ªUSn+|¢’º¸-ê¢ZgS¡•ÌžŸ}šÿòl6ï„k!¨%ÎüŽšœg,›˜L1.•×ôæLdÉ7º-+¼Êäí«_f¯çþ÷Åùìr~ñæbvÅü¤ù—Â?iÜ›;¼I ÿì°/ÖôpëGŠÿì–U;Ö¾YlŠ»³)OŠ —hüàËË÷þ•rLWÉÇ”«3žÔ{|§AÁ†§\2®ý¶Uá-}»Ýl¶¸æ×²úìMìVÁgëשÊÖú2ÙÞú+Mý¯šÃrãÿ8Ó:Yn ˜žŽ¦÷f‡C3‚`x;4<ê«™²Â+|U4‡ºÚ¿ ©f8UeLæÞp3_^_òÅõ»×¯g××4;8Q+™Q4»×Éõáfß”ÍÁïGÞþíyLXþ†ÂfWWo¯ó÷¿Ïx$™L/ÁÇFB÷Û»"&C挃kÒì?ÅVÔÌŠn$u2•6cF«à¨Ïgo..gç`t#“WïcòlÊŒ0÷ÊË™É:yè'ⲫía³®~¢»›ÖÁñÆ»3:9Þ­4ŒÞŽ×¥¿ìêísq¼)+%o¡ðþw·*L;1J0ŒÜŸÒÉ‚ŸƒÏL¾º™w8j+á×frýìï±ðV¹a*Un)iÈ×.ÈXÓ˜­xÎ2“·–økÌVS™[ÐBÒ1p?ýÃGÁr¿w±ž¬Ê%úÛs ®š¢Â…p°¨ë-ý\ùWÖž N‘jM‘ +HžÏ®ÚIík0‡ÂÌ‚®’¥ ¬ÓU ¾MXÒ’Ã,÷?6:‡k¥'&5,×]g¢³ºbŠg¡ÕC¡\(–çÊ­e¤!§ò¸w,Ø & žD°µÌX FOäɪ)šcá‚sÆIÓÇ „ªÑ®÷MÇñ")&!*ñl„¥é #Ê.#òäSåZ 老â*ˆK-´;Ø…7ób‹û] ¥›4póÌoœÖø˜ê”DåAü0¡: Š;Ž `ÐC5ÀôEk M¦œi0&.Õ°jã‚vXB˜×mb]Ü–>›íc{19K»¹ÏÛPmI Í 7O±%%Yµ<½%ŒP€œÓÿÛ,¨Ÿó¢›è™sH=Úè ŒÒxôX!°YîDE™Œöå}érÙå²@š€í3ÇSH»ùg±ˆ ýÖfÍÐmyL©©³g`|g Ig•v&vU9 à·ð%žDlJkxrÃóiD¬ìé=“Äzôß–þµ‚r‡K«è·DØzå Ô‘™­#Ä_u·Œ/ÊVá)‡tDc1#+œ|‚¾žwDðz~uqù³G›5ÍÞú ²XT]ª ¨(¸‰ÛìI-à÷Pe“·*+ãU†«Wj‘Ž»Â`Ï]ý}¯6Ltjà P{Z‚È?h=ZØŒ«º…¬ïbßë8 }gŒ=xëhý`ë3g*,ŒF'ˆ1%Î-ñ¤æ~=:¨Èš™ì¹Q ¦BE ¤0ÞÚNe‹Î •E]øÑU],›sínëퟹôŽñàýÚWÜó%ëˆ7%[fV…!¼Óûv±£)ç:Å£‰ìÒš+=Ìv‹uQ/d¡|s8G€V]€ÜRÇéP$ZpW$¢#wP²-•+×j?Ô¹/I{Ò6i ³9\½¯FÜU©ô PßqˆÏœkâ3òX°)8ˆg5˜`Óƒ Ö‚8jAƒµ`qâ•6˜ðá ˜†…*oÙ˺\Áé&´Å7â‚_äòåo³GW†¥}ÖønÉ™j9ø8rª€bÅG䯳ßÀ‹Ë·óÅ›·ï.Ï£.Lb/7ˆ,çöT¦W)J§ ÑÅãÎQÍIUç§Ò}ˆÀˆl§ÁÒE°Í€Ò4þÇj[× TÔ2VÊËüãå¯ïfÎ.ðë"nn‡"Ýy€ ’~E‡Xý‰î)oî÷%œ~Èu^àJ]×|Áá6–„IáÀyè—cÔä+üm´º:®Öï”zÿçÚNZ¸rù$µ®…e1«•¯²<§x)ã€O"|y }_Þí6E¬¸³#ŸB°˜øxÛu¼²K!ÃæTÙ駪ì\*~·‹Nö¨®2mH]×åó¸îçªEàrHTGDÈXÖ— Í·]”cJÎd&N—<}X6ËQÞV *^5H8ÃûÚ¯Ž©‚Ý]‘TîWÝ»_x[å‹MQ,¹Ôvì„%Qtw²ƒ#ÂôÈí.¿¦2üxN$ö» },,0OÖ`F¹¾{@nCTÅŽæ*4æm;:ÊG-kêy {رD$®º^Ù£äå5åe<¥’IW"š€±Ñ”&gJK·”ÊÉ&3×8<îA¤HøSˆUßufC±'Mä’Y˜«HSr3®\»“Z†Ý°P,-“:J'R9o0àÌ<¦9ÃeK·”n¿ñp«èôù©­zÚÚ´Í[O-?d ü`%F-„ÆZw,–^øÎH®ƒ`“îÓ[êëe³ŒŸˆt2D ÆøD>ä[­/åãNĸLŒK™4{ĉÀKŸ›/'0¢Ý3ØšÃÉÛÐÖçEÐŒ·ÜY.D4ÜoÏÓ,oÖÒÑZü wß¼ùi6"LÁ€ÆMµÎºåÐu>#pg<ùú¥ô©Á?.I¸ãÖøÃ%,œ‹5– ºÇH]µ=4»Á~In9pŒqk óþ¾\½¡bu ÿ€œ¢?)ËxáÑÒmÊ¡ÖÎóü‡*8“šWpøµGKr‡önbçuØLë¾Æ êÛñVL*ã3&WÊGîŇ„1"™a¹LkY™¾Zo|J²ºk ìcŒ>u+ )Âæ¹ÎT4OÂæ¹$’š&ŽÊ{kÄÚ• ªPkOoÿØ–ë¿Ý $ŽHm ÀÒ—€úXq­CÂiú§¤†4öd¾ä"w”%ˆ¾“ƃ2â¸×ëãS;¢Lj-Qé»#Ì2Ù”7ó7¼«kcW§m#NIno¿×d$÷ïÖõÚ2Ó(òÿ´€cìµûZ"®âèÒL®êrG‘Œº}¸ Ý»ý\)‘\•$n¨k÷jûpSþëlÀÃÏçøå¬?ï7÷uç¦íC.ÊFÜr[mȲëòcÊeûo(=€bvY¶J×%@Ê®ùŸœŸ¤‡´¾®KÐôE4V°ª.GrfZ8ù/q˜¬Á endstream endobj 254 0 obj << /Length 1932 /Filter /FlateDecode >> stream xÚ½XK“ÓF¾ï¯ð-2…'š·†œµ$°! (­-c¶l$B~}º§G/ï,å-¨”fúñM÷×=â³~|æÒ™•’9•Í–»‹ÔÏÖf4xùûë°p1ZùëÕÅÏO´žñ”¹ÔñÙÕz,êj5{“<Ú䇶¨ç )e¢ÌJéäÉERªŒ9kf !™áœ6¼èdOÞ…leNk;2ß-Xã÷,÷UÓÎ,7yM£{ô@¿ßO­0éØ n2fïd½MuTºñ2Å„’Ý¢²š‹,iƒ¸‰iÜ03aá­Z%gÀ”ò˜Òw°„ܹæ7„N]ª:¡>UR6€yE!J»ý°.Úc]+Zp>}¥79=¶åuëÇ/Xñ@–óOÚFûŠ¡þüPï|çÒ‘ö—^6ê¶Ü‹³iÒø­°³.«ôæKÙnFkx²*še]BâÀ¦ý:¼¯èéígp¸Ú$W›2hXÉÿºÙ¦Ü•[ ÔîÃd2>b{µ)ÐYÎm¿ÒhU¾M¹ì’WJ 5I»É[•á™/—Å¡ ¯ q3 ®}tAìØä¸C´¯ 2xïÏß/‰‰¡#1“#1ÞíEÌÄ‚…±ãI£Çô N B9íCù´e"ŸøN¦(M›·å’Æÿõ~+ve•·]pètæ°€Žøºÿß㣠“ +¢¶/‚E^•p.Qû¥`θÎ~Î -BÖRL*CTb8³° Ô²ÌZ«˜†32yxü§Ün˼ÆC°º³f5 @+ qç0®æãÊýÆÕl×YÇ%\U«ˆb ÒíÑ« KÅTm…‘€é= Xéô÷½'ójJn_—ÕŠæb䎖fÙÈ=~n &)ðdü?e{ø$VNá›jÖ0|‰¢lìñƒÌêݘÀa%Moà²30æ %u·ð>åW(>¿0{}‰Ä÷bº ’ýdV¾‹+4ã7ÜZ¿¤àLZn:xOGTí ˜Õ⤔]¾øíq$°FÃÝ N…Iyד™håz˜BQiG_]žÚ»Â³wK§Ž°(ÖA–h"-uŠêI‡h5úÄkªÛ-霫œk(¦ÈËTÆ›Á¾ŸB#à•“¬ÀÞD]1'¦[ä5…NB”KÖž±aà‹J|›lºCsܶ¡®ô—‰H¡Cžüëùó[’[PXª}¨Sk¼^'¶ agàæë/üœnKçýûÝÊ’]´/çÐôl xˆäcD¿—­ø1úÜ”àSýŸQ?öP±2šZðßýWì%€ðñýç±)'Z*äZ±¾s‘ Eá·;>Žáºøô-sÄáª|{ÿ’Búð“û7HŽœ4t, N­ÃfÙ÷ô‡\f°>ó¢´–ÝAû›â­-ý÷›içð²øt,ëî 6–@Ùæùn‡ÀB®ïÓÒxfcÝ|^jw]\¯„>ùFðløˆ´¬ÃušF >ϽYd3NxÖ¯€ûpí¯gø«5>;9Ð)•»àåx›Á3>lŽ\µ§¸¦YhÉ~ÁûéÄàLÆ¥;N1|PòL :ˆ¡S‹)²*Û^·ïWàIL ︘7¾¯°Ë‘&yDäQ£,g܈;”ò¦ñÑz}oé -›Ð,@(è9&àuêû]g{8Õ}ÇZÁ!…Õ×Ç@}½šÄËi{ÜIhÊÝaûuú lø4i{‹(FÀ¿®ç¸ð÷¯¿|õôÅe *oì]wßÞò`˱lóëmqK3«†fîŸMÕÀb#ÍÐ-£ÛñÎ@@Ë€îÐ8Ù;ðkG°Ê„aìÛxÖÇjÑ–»ÐMoñc!e)ìųÓâ6ŠËÒ9ÁgÓl’ªËˆˆòÀøjE—lºÄP’;iLÚØ]QLƒKyÎèèTFéôô»ëêÄùOD endstream endobj 261 0 obj << /Length 2750 /Filter /FlateDecode >> stream xÚYÝoÛ8ï_aôåd VE‰²¤½§t“9tsÅ6{‹Åõ‰¶y•%Ÿ>6ÍóEI¶U`À"‡Cr8œß0jÀŸZeÁ*‰"?Óéª8¾ ˆÚîWÜøõã%|`ÜÌ8ß?½y÷!ŽW*ð³ S«§Ý|©§rõoïötZoÂÔ3ui¿¯7Qy·?ñ÷çæ´†‘W[ï‘ ½‡z״Ǽ·M s¢X+/Tëÿ<ýãÍýÓ(C†QXä¼’6i?T±i·©öU¤gÒFj”6‰½Ûõ&Þ²°0ðºVË CsyAJ^\û‘Þ†¸8è*Jü`«dm_ñRaÇõFy¿á2Úû°Î"¯5†½kH‚b8šwìE8öɦî ov®w¥c?ˆV•ù*ÝÿkFži;žW~tíˆ5þØà ü‰?房Ï|Y-s…Aâf°¬Úú!.ûÛD”åû6zbµ&á*ð#'FÁònõ\ÞMDâÎØ¾*^>™ë´I\ Rp3J§nøÐ 'jr3ŸÆ?¬S-*†Þ—f×£À/ø“·†¹? ¶š¡.Iá²ÄC]ø—¨Tê§«8CM“ ú1 øA?@A[<§Ì’'o¦ÙìCÛ³Ï7 SúþôÓ»w»nç7íþÝ¥Da ý$8“éÇnᘯdˆdHB?U qÏvҾ⧩E™¶cM‰›·GÛ÷¦dZßð·@KIÀy¨—×2\Ú®oíóÐË ü‰L¦}† 8Ž­éÈ®À›Tä«X¼©ÙÉ@{•8/Ý8ìEh›rŸ°sH=äõ^¢OäÙ^¾²^Ý!¯ªf4Súì!h&Å#b*ð×›í6ð>ÿzûËûO÷ĉ #£¸ÎÓäÔAê-ë®é„ˆgÓA"gCŠs|";"jûÇü)Ž{9s:÷Wprn½Þ|ïÙ»Q5‰×|“¦•]ûƒiyÝPèyÅCxc w0tf7T¨$Å OœÂ`TÙܨRåÇ*u®¼C‡\pø¸Bå¸lÍôºÚÀëÜ-+1E+•ÍòŠÖÎê/ï0ÈvC+ Û/Û5†rÔB-ƒ²<„~ˆC‘ã;îÙ Œ]Ù¹.hS³©§dêÐcS×{ÎŒ†,™¤N¼Û˜„7_¢ÀéÈV¡dc.íNr%,(ÓABË÷Æ›¦-,Xì+³¹%ë¦Þœ]¡„æù`¿1|¾˜¢8ØZ¦âN™r®–“9bçԚδ¬-ßѶI&ZJ>ô"b»†Ã•2yx®lÇÀ!žö‚W“³ìŽtm½½Ae`u¨Þž‰¼w†ÞclË4òܦ%‹W¡÷r°•a&vr`‘ÄÇú…>( ³¥i)”#òÄ~ôg7]6ÛNWÖ£ Ê ‹a똗¡žg‘\¯óÇ g‘•ÆzR:v1çÏ7‹††-t ü~LãÂnevý[8{¸ÍðìÌv4y-Kõ‡¼ç¬?ÞzùäH§k5vç[Ñ%Ӽˠ»¨ Kª= qî±3Õd=@“«àÎã#ù,ÇžÉ.?ÊFâD3Ž3ïA6+?UÆ Õ]ÌÿøøOÿhjÓbÈCêg4Ìbér’Pfúœ’GD†ŒYF¢Þ̲*º³ûÚeK6&lR‰<:Nƒ:èqX-åwB{0/Œ ± ®Ke¶U¨+‡hU°xAZc±€—Tbð(É1C‰©@˜Gs¶ Ð@˜Nw1"ÇVw¼P‡!ûZäcÛKó sw…ÜZCpî¸9±^%$rJHI@×3ç!ˆ5û6?Ê.‡f¨JnƒíÈ‚§‘™ŽšðQÄ…µHû¶äh¢¶blÐc…–¤”Î1 óE*ž±ÒY“9JªË@´Øè(óÞS’ ¬¬5Egè8":X¿²€ÐÈpR³ºx mdºã¿#5Ðá2¯¹19/tà>Kn‰moe…Wî &È㢳 +·fŸ·eeºŽ‡9׃Z†gônï¿£E²§,Û,ÜÈËÁLIÒJV%ÍÀ×¥ RR¶sm-‡ 7>a(øý†· kô=`h eÕZøå^t<»Y·°'—©cÒВ袥/‡ÆAÜÓ0Çóàck€C!uc$( Â"s­.$€l– © {ûù󧇟oß?|zxúC ÷Ç;^ïîþÃÃãÃÓÃ?¿\CÜxž¸t4¯ÐÉO§ !=/!X$:£ÀÎH¸Oø4šði”åó­¦xu±L™­´®Én…‘½ Y!½Ó­æ¶)óO§Ùará©Ê ´£ È>±¸66Š«r˜xMEQYº|zðÀ¾ò$ŒÞƒÔ 1–< µ)¯O»‚åX iåP¶äð~“Ôû2p Äc9#£ñÀ@‚x8&Ì‘E9š­ÊÍ @$Ô-@dzTæ®×ÄW˜UISØê1 á ­—P­«Äcˆd+¹ðN;Á:s‘S3Ê#xÂ=§¬Ì]âD@µ–± tHãôÊÉÀÀ¹>„Qw—°°Ôµ­ÈÕI©xÃñÕDàeç-‹²)§*5 ‰ Ëw-Ø›ûöÉ‘Ï."¨ç¶vx§]=æ()–”+¤ qbˆCmNtÉÑt]FŽ!ˆ}á’‡&€CË2…{ê ÕÇÏÃ[0ÀüÌ"|EaN=·F&3ˆ„T»ã¯¬Â±Èââ$L€'T#1ª ¿óºël›Ñ\–ŽUŸÁ8΄câÂ@ú¿Á¶ãÃ%WøöÑucÐß?ÎC½XÐ’/‹hîX®£™×”†’ßö´¼í½e ÝïÖÕ\@¸›Z^ívÞfö#×d}ÛlæBØ›Iyótu2 ^y…H±˜Å$¼H¾j93i1J¡rÈ+g‘H¯?%·åí‰Þ†ˆ5äÄ€ÎÀÀ ˜«0Büãï!°u•x>îÍò7‹‚×’v»çõ~È÷æG¦lñ®|~eÒC©ø-öv 5çO €°ÊùS9’ȈsÌÅPÃpvã`ŽwF²=MÚñ—-=ç†0½Í\Õ\þáÛ™! ‚…šïE5tR"RÁqÖ7óäkû`OL!!æ,c¥ß CË 9t|-yb4M<7´IOoabüØX4þ¿u<8{õ†‚¯bâ9°DÊ× øu,7 “’å@‡¯ >Å÷´í ˆ´%Îý$iÞ/¾Èpé¡¡:¨¡˜;¥\Ùã`¯€P]êõ±€8?„àj[<×ÓJ—L emé Ô¨£Ó¡= Rh®±Ê[‘!_¼³·GÄÍø`Ê éñ`ð)Ew#‰æžüÐEa{¬YÉÚi®$>d *©æ;à5+,cˆ»ØË—‹S™÷„ë(I/ÈaÞYÆs3 ‚àtÃáœicepxÆ!€c}ÓÚ‚R:Ðá€õè½0.Ï µÐ¸(y‚€çŒÙÙåµE‰‘â ìvQšq¶È¯rÀdÏ/ÅA4{Âé`«¦kàSŒ4(¨ä ¸˜,*ñ½Œ5޹ÅJ9’fRÚ¡',Æ!sÿåòüv endstream endobj 264 0 obj << /Length 2974 /Filter /FlateDecode >> stream xÚZmsÛ8þÞ_‘É—SfÖY½Zö~Ë6}ÛéÞu®™ÙÞ]ï#É6§¶ä¥Ms¿þ< -'ÊîMg"A‚p“‹˜þ%ëø¢Ì²ëu¾º¨¯b¡öÛ 4þþîU¢| b\L8¾{õãÛ¢¸Hâëu¼N.î6SQwõÅ¿¢›ãñj‘®¢¦­í÷«E–eÑÍOø¾îŽW4òhÛ-òèC»éúƒl×Òœ¬È“(M¯þ}÷Ë«7wA‡"MÿOe™óO´M’äzy±\å×I–Cá»]à 'ÑW"}hYÃ߯Š"2½5Ò0ü¹©XQw‰®é¯’HgVôM"& ƶ½kkÓ?žÏFïa×9;Øaß8/S‰uãì¶5CSÿ@„586 ms‘d×IÍïah1gºN£A¥R³Û`ï§äý,Ï÷C,^#Z!‹ãHô!*¢í[5žht–3r„î)=L»íè[FÕx£LW´:«oöqM}¶¥{ÛºéY£œDZ²¨Cç#éÒºæúj‘gEôaÃÔ,2tØ :u³8°Ð6@ÿ'ùš(Ë4v8tž¥2æn­—š‰Aydr¬Ð±Q«ËX7·-h‘¯#³ßw|$²Z â@*gE,ZŠÔ9ù€Ît  GZFÛ…,+¾ÌL·0Ÿ‚?–qÀé‡6"Câ²<ú_>°¦ïЛ…ç^èýˆUH39š´ŒÕ!Ê$º¥C<Ó¦ –®"Þ_²«〶­]Þìæs ‡vÎU¤f*~rЧ -‰3–æm×’oùÍ- /VtÈãTÐáõÄQzï®VYÔ|¸/¹Q5=,Ë·ëúÍ£qÎlyÏÜc·âï@"´%!•ÇÉIÔÞ: AžÀ ˜ø–îõA³’5›qÀ 'ï7ºž¿Eô³©xâ·Å“­ñMÉe cЪB”¹?Ùü„ĬH@Ô BœÑôßdN«ªt*ð`fC„‚š™@·gŽ’Ésç›pˆ×,YùC%˜•C¥ïäP©kñp{•S|& öyåÐô*ÃO ³Í8tœöV*Cpï½”Eus*€‹¿îšÁã‘ﺴñ¤»¬ºs“uç1èΔ“î’j%¢Äqæ:0ê½£yÙ##ú_²–ò¹Í _m™dhì× º>¸¹­ÁÍ̓é¿GŽÂ,Ó2ÑÜnTÊ!—j’N9³h''QH9™=©²e—æÁyË~«¦×dÖ$?³®êÆž‚Gä‘TùÏxºÚˆç€Ð®Ïàˆî9,Ñfx—9¥Ê òFnÌÍÊ’žÓ>€dY­é‹|”S¹ç)—NØà;JÔs ^LŠq‡·=h’h0™ãÐSa cw#í ºßo@™Ü7<¾›èûb6M‡ú—Êfé™YQÒ-Ú댿 Ðåìíøæ»9åAVÐ;ƒ.²i$q/³ˆ9˜:ëÖÌA{³ȱWíǺÁÀq/ "Óo>¿þ >ò}ÆônœK·ƒSg˵O,½£™\"„–ÊøÑ܉¬d¹¾.WôVN¯)Ç×-ËÈò:^&ò— ‘üBÓs¡Ÿßýúk‰KÐðOõŽ[âªæ{@.Ï=R›ER׫<} p!›—2-s{w« §©Á®F°zAoVI£˧‡öû»_?êÄOg”µ}®z{@ƒÎ4vû <¸æó8=¥-‚ãÁ´šßp¼à3nrîeRLœ‰y‘EQ¶ÖËKÅûIé³'°4ƒ‡ Ýû w>ýõÝó…5yývÆEÄLy’D¿|zÇšPÁå™:Î,A8wèf>òÅ"Ï[&œ±êË„$T¦)$¥ÜaCKˆå–7h×Jú²d<ÖÀ_>Q€}*†‘#5Îu½ûs7ÜxÊÃÎ"Ey1o©—¶õ`–es:ó²(¶0FA•nïÐ×§¤B+74w”<…žæ)ò¬b§&w¨UèN…ðb¼r†FyÔ­¹ùI¬Üú¹'ÈŽõàã„+° 9ëXó“ý‰S'†'úÃão7rå ÀÃkŒýQ¡+[XN› êå'vV.æ\öËî($.1* >òÕôÂ9Mx5Á×uäï75ø…¿ÍDÌñU3¸f¿QÖã~t`pcpêm:_¿y!¯rO ˆí}Ì/e|eÖôZ²jCk6ë•8‘$~+ëKÖ£üàs u–o>yÑŒd’ŒžE wýƒ…Fðï Š•úâ^ûzŽ&HS}4ݒ¨¦]®Õ̉+1—w%ÞÀåÜ¥ª×l©çòyjµ°Øi°PÜwztÀœHcILyºÜÓ5¼áþâg•@›Þ£Z+_¾tHŠÀ[۶ʪµÊÌ—9%Ä%‘„>N™rÏ”iRöb|®`T¹Æ%÷— …'|:,î(Ÿ•7ÍJ±™45²C¨/Ä>ߣeÓCoïÇ¡Q¡>yⶨÌ%s¯¯5óa0•œç<º{bÙ M¬àÙ/TKÒå¤Âœb‡78l>¯Ô/ÿøç%˜½M¨i0ÖšØOîÇVŠÅ©:DZ¨BD˜+¬ùaÇá‚â–ÎP£ÁÆòck¶Z"ÀþéSûŠžd{­]“Âî´à>)ëDeÉ*HRÈmw Ð=.<(êc‚à‰}PhúÌmf„Ï%1ò†ä΢==ÑFŠ_)ìR+x¯EÜ r¤òÈY¡¯]"ôŸ”„t‚?Uæà3ÙÛž†pé†: nSnîÉÕ0÷XwÀoö•ÔX[L&‡Ù6~ 9ÒKA¼Mn)ä‘C:su·šîÝÓ4?†£[ Ï{Š®¼¼FÅ$'Ð7IwÒä××zEØÙ‡®äE«H°óRå h“›p‰C`P翆Ðè£ÛrxþnAÐeæëˆ> stream xÚYK“ÛÆ¾ëWð°JÜàEðM’-gS–”8W©âfá4’öß»¿î\b¥˜ééééé÷4ƒO¿`“ù›$Šn²8Ýäõ Ÿ¡ÝÃF¿þü"P¼!ï^üõí~¿ ü›ÌÏ‚ÍÝqIê®ØüÇ{u>owaêÙ¦(¿nwQy¯~ï›ö¼¥•Dzy ön›cÛÕf(Û†öDû8ðÂhûß»¿¿øénâa†ÿ'³Àü·û›,Øoi|D±pÞlw‡ƒïýöÓ¯¯_mÓÈ»»}§ øÇÇÛ÷?ƒ£M°¿9¤ûÍ.HnönçG`·ãv‰W›m˜x2ÉqÕifšƒÔ+Ê~èÊûq°²0œ¬,üزÐò±¶ d4¸läkø(“Úå¸ ¼z» ¼—‹HÚ%‘êd=oëÚvyiªJw´_tD7t}f¾i› Lº Ûû¾wîZ÷¹,,ø>€O3¸QÙËè—2·MouÜä0ß¼+Nî&nÚð{Å’y[%Ô.ø £ØJÉB¯7 ¢¹°ƒ‘²ƒIä2€hÚ^æCëЕΊ¼6®wBJ1æ€ÐcU• è®%ß)ö¡d:²X»€H/ÌÒ ‰ƒ‰) Bº ZÑ!†9tÛ2ÅîÑ æ¢Ô _ö3øvøC+é… ˜ÚÑÊ^ ¿°d{ ì ¬ÇŸíXµQ[Ö”óñ‰nôf6ò©)s™h»5ýرàɧXðmïÉðÇ|(Ù#CóV„ßµ•¢³~h¥³¦%/Ðc'0¿&¹ï ÑΚB±“ï{È辟 +3œ…ïì©QycŸøÂ¨*ú—PDø”šú=&&Ïíy1ùš Œ½‹x.õk¿æØx2̓rrt¬È=nÖ.r‹;Š¡ÄºÓ/Ý€†n°b»2݃•¡mÚ‘ü”Ǭ‹±÷trÂÆ…m­ž¢}zbäñž±df*˜(FǶªTl<ÕER¼Ø5sºr1v5ŠÀ½ÍEVHÑ,ƒµ †ÉÂxé#Œ`TY L.Æ™76;P¨¨½©u¤Lnሽ.f°…R!µ¸»„R5î¬Ù0è{ÁÙñûžbÅݕۓñ+‡1H8@LcžHb·–”"Mg.y1Û÷"ÂþûÕû»Û»Ï¦4XT˜¼Óä<¯ýI'])^Ë‚ €3 Œ÷÷>Ûí8›9}‘»Œ 5*2b]· ’f'3KôÙ9?‰ötf p2ÔÕð «#ÅpÐO\Ð'¿„5†³á§lø *Q…öÔ-§„8¿Àß׬j€ôŒ•Dþ—^0ª)?ÑdJi´£³Œe÷$P ço÷„ÖátÍ»m à+YÄÐk¥ “ßHÜ2!onòŠ“CÄÂ×ÁäÓ„ÁNw%^Ymñªé:W-àȼ²¦ƒò°(¡AeÊûj‰‡¬¹®0…4´¼n' ¹êס§ò%Þ[ì4mìÞ,œ "Þ û:–:ƒG·YàâX‹c‘Ì)¹@!„׆3ܧ«³–ÌMg=k}¡ïÝ+%šËx"‡ûÞk*VV{Ù¿Ð&ah%ø,ÿP +¬;ù3” 9¹ty|”å©aZz‚°Jõw»V6r2 cJ¦µÛ'±wç,k!iAºP®Ú§KìåDp¹c²ÑãÈ-‡JýR²°`s²š 9£Ö-z § :²{EGäR,GTJSáW—ÍÌI”ªT#”Ä=I•K‚}:g,Õs¼N¥´Ã@K:A(®p™„…F¾Â\”^;]”jdrœ-Wk€ËWU6I†F®¤ (ñÀñ¢xUÖå Um¢µ±Sv©)‰:ZNÀ7‚HÌTZw¢ƒ‰G±2;GcA>e-E±’tùÚØÖžE¾{OÑ•T›ÆÄE?™ë .ÎC­FV4Àë*3YL´—¯ªàžH׎ÚB”JL´»¢º½{ùЯV-R¹¹ÄAM…‚%¬`Èu î‡ñ¤#W¥eúvÁÞV .‡ù:m5’M·c?càû»ă §xs¼>–^æõ§v¬”·ó8<èèDPíØ«Q•7î)@ElŽQö>  Óã+êX#)©oCÜI¦ç'Aó¤Ø7ù0šÊ= .ztP“Y¾9¤¤íLg]ƒP­T ­ÌLñ?“/BDä̓}^Óa¶¬³eEE+\0pÙüÃÙü1ZY›Š)à+E©YiqÅM°þ\]ƒ5©k°YêÀ¸®ùÖs)"›_¤!šM6É^‘Wcaeb[’Þ‰êo:Ò¢"pòìLÓŸÉpE¸X8,Z'˜2þ×pªR•™Šé:z8¿uEH–ÊS2ÝK!/C²ô•¥ØC>&ñtöå·(Ó›43²WʉšËûa ž;÷èfÈ ïH0óIvWª?}t$tJD2ùr*•“çü.$‡}°íà˜4öâœÝØ‹êj{¹ŒOð7 ðTíuÌ„¾…¼Ýšª5…@&*{¥²#A6…銧§&|»v)½zݶBÈ ÙX8H“ä*˽±0‘Jna Z³ÍáXfpl– WÎÀ%*?k—[ÎÒª”Bˆ¸M > ÷pÝk«š¼FÎ8óñTøšab”*3ŠóãìrßìE¼yjA`6Å»m —Dm4 È~™íó25Ó_N¶„‹Óô9ÿP6ϼ6%ì°ñÅTÿ±€èëPúS¼T<*›4˜â ’=âXR@¡7ÏØ) í"™ë"Ù3ZæxÖ²ON¹þzèlm¤J¢#O"T™öEu)1°Áa*À½ç1~ê„õvÕåv*¸¥½"SJq2`™S1®ØÇÁvOΫŒä“ˆÖö›±6öãËv±yRÄij^üx)'Â@b-¨ŒÈîýÒ:¾é“VÐô]¢Ô%í/·tv0e5½°±‘-ƒ©™aÅ7¬vu8%J²ŒÝí# ëI’k~²¬^¾¨†,êŽÛ>zX²À I‡zIÜû4[>3Éö”ZL®«ú r‰cô©íôDy-,ÖZÄ–àº5j–=JÏ €U…tùg² žÛù˜¸n W¶,0sA> stream xÚYÛrÜÆ}×Wlé%`wÁy“Eʦ-'®ˆq*å\Ìr'Âk Vÿ>}`‚NŠUÄLϽ§ûôéYµ áOmÊp“Çñ®LŠÍþô&$iÿ¸áÂß~x£¤ß:n½žßß¿ùîCšnT¸+ÃRmîþT÷õæ_Á»óùjnkóíjÇqðîÏü}߯ åÙ´(H‚»öÐõ§j0] câ4QA”\ýûþ§7·÷ãÒ(ú?7‹=ÿÇn•JvyQl²"Ù©8‘-ï®¶Y·ö•–iñ[ÃQ÷fh¤ø+¡z”Úç0 «¶æî]ËÂqؾÃÎ_ñŸîí5³40n¬ZRÌ xx%£§µjcÓîn?ôÝÉ-P \êÓNAoUìZPñN¥|º›Žîc9iZqÀ}*àmçÊÍ ¥áØ‘  HÃ÷Ü믦»X®ÁQr< \˜HPOG³Ç™,²ÇîÒÔ²Š9¸©u/S?±>¨95\IpMGe÷Š·ÿÀÖ“8h@!·$|I cmƒàGhìúg–Z½g³Â:Œßõ…NðÀ ’< þyUÄAwá§ŠwG£.V/æ±ÕIJxkW*Ze׎R±x*pÖÁ›…fÒXì]oM[52úòZmrµ{“I¬MøhX$ Š{ö'c±ÏŽvºUù®L ø¦»Le¼ßïÅ/>‚bqlÊßá(g…²ó (:߸æjeå{Ãbû§9¤w×ó÷Ôõz¾5Ëæåõ‘k2ƒÑÒÒk‹Ýs˜Ïš·Àöw_ý¼£¡e2R~IÑX8±UÔæs¨’=Á’å´µY×_ü®h‘(ü :¨ õX,à%(0ìmTÂèîQtsØûÉ€©„7‡ßFWVŠ8-;ÛÌø ´ñ,’ÝdhQ€æŒ&‚r9(·-:G/mŸû’52[, ÖWÀså9Y,JLu¬dÔA³¯³JV<¬VŒT ѯÙ.m£­Ýá™K½FE᜚Ï8Ž<*‚f0z8ëFü~1½vv&_ìTXŠÉ缡÷bòŸ†j Ùs±y @0|œ9€plm ‘]sl*ÐuÁ&ï]éBv•{v…B¶+òhRL)ž•û°ÏG™Œdĉé´i–ÌO{#§ýœI÷_å®Pwd  ÅË8xÑ0·Ý`öÚú`”Lƒ^Øo†âñkne+ïj÷J°»:ŸûÌïóý¢˜7ÂåÁÄ2¤¶îß´HýŸj?ºáy'_õy®`K¬bfÈk›ŠÝ¦ì„±qÍÏýAÎ}×î›KMÈ©6N']ã‘´ù â0Í„©ìdkk‚XÖ”™*6 j­ö{ðl˜Ž…Ù4óÌÍgïÎËÛöλ"èîé ¿'IÀ˜S¾4klý ­ T4®­ ý‘pì“eƒR!~¥|*„!¤­ 9ÊòH.×P êë©åK2íÂÔÁ½^N\Òð˜É›r`”³«üaÕ›¢4äÁ—ƒ4–ÆûÀŠ»î‚…¤ cêk †¡H*HÑZ˜X¦\Á5F‡¦OL|,ÏB$ÅR{ïS‡ | OO÷tAß;篩텳ÿIÇd|#`Ljdºê©ñǹGð¨ªuL³j¢*¨çØ´D!‡ÿb'¼h²‹’hŽƒwë8˜FŽÊGŸ„Ê­c# A4H>C2!üó-z^š¯LFÑ A¨[&4„U-‚ž”Ã)5´®®Ùœ!‡û`o!\‰D'ð+t‹âÙ…GS‰•Ä*BŒšQõT…û˜ÍÓ\è鈛Še§a1£ ¡1‘—A,œ{û7$ö Q·]À° ¾Pœ21wÏ‚»Ãؽ—^ƺø ”ÝO  ÿ"ý<#YI¶kñ³¬¢U¯9r@1ó-"ïº %ó‚tpVQ ¥¡“U=HœÌ#Ò¥»èßG!©[ál/ßKNIúŽJúÏYÿPíä˦[NädÛ'ÆåZîÖ\fl¹4ZŸ¸©Övß›>|éBN¹B¨Q8‹4áj^…êÔ¦]P?Û´°%ò¢Û ƒÒ]gs úé@p†B«œ‰n×aa#šæ' ¾7$Æçë’ëÆ®Å7÷4“‡o•²Žb&8P8s˜æÙ÷{fË8AÇHáζÈB“Á= úªµçª÷˜OäƒiIêì¬4‰ÖŸ˜¯1CŸÆ|¡S=+£d¸ZQgj³=´L(ÆàC9ß–;Äò²ü·æ•÷§Äúƒ¼í/N!¿<ðŽ¦žî' |Uý~àxäÚt@¥haðt.´’U-rY7˜*5ôsŠRŽQÌ~1q´Â½ðÅòJKOb­—c¾’€c“øÄ€¿¾þìæ¯ñ U߻٧–c÷MeNp'Î@wE‘ÒjaKR‹Æž9.™­Qì,]Pì,s&c¹ÆÙ ½€åöT üR;aM&a¾•÷àÞÍ$?P@é÷KÕ˜ÃókIH˜¢ »¶®zyüò % M¾!8VdÅaÊ)|a‡.¥ŸÉŒ–!ò8ì¿¢Ý3B‡ºB“gyÔ,ez_¦ÉÝE„ôr/¿VþôÁ' endstream endobj 165 0 obj << /Type /ObjStm /N 100 /First 873 /Length 1292 /Filter /FlateDecode >> stream xÚÕXMo7½ëWðØ^¸äpfHF€¦-Ø)ÐÆðÁu”4h ² ¤ÿ¾o¨$µwr½ý‚g—o‡Ã÷†Ÿµ¸à¢’KEv1ª“à(F9b¼ ê¨$TW—ef—e މªŽ9®bƧÞrqª‚²ºà§—ÙÊèr±’\!”Y\Q{fW+¾+ж >,Ác)U!: 0 Glo¡…X+»(¯+\ˆõ§Â¡4 ZÑhFµðËŠZ\œYJØ `(°ý þÐïØ0F¶*_ïÝ…^Õ`’Ëéo©˜óDEµPŬ}…FŒ_o®{8Vñ•b—¸ú,}˜½}FOA£"JZªVÊ®F#ŒiÄÒ…aõ•µ‹K’<–š. µÇ$| Õ4Q¨Æy Õ*wq8åûÄé(ÒžiÂ=‡¥Üsìs?ÂhÆ!OcǬÞ.ˆz¸¨Å—Tƒû:å>/æ¾Ìྌ®J÷T»¸„|–(]¶Ý¾Hîã„}ˆzs“ðD#¡¥Iêk4´KîÂD±r×ÜÇa•I3ü%;ÐQÜ{‘NwMR%ÑðÍf³…«‹vl±Œšlõ«áÙv÷z½;8 —Öâ5BSޓР3ÎS>‡vlÏ@ßþ²o^¾·ù ¾…çnøñì»ÃßW¿î÷ž Û›7~»{;|mTÜÑFgìä`TªWÕÇiŒÜ‰úà¡æO‰ 9k:s¬éørŒ´3Öèè⸧ó¸æÅq—ÿ,î<¹ê¢—ÆÿâªëŸ| endstream endobj 278 0 obj << /Length 2638 /Filter /FlateDecode >> stream xÚY[sÛº~ϯðä¥ôŒ­’â½ç)qœSŸIâ™Æm§Óô! µDª¼Äv§?¾{ÒprFÀb±»Øý°ŠÎBøEgex–ÇñªLгÍñMHÔnwÆ¿üú&’y—0ñÒ™ùþîÍ?¦éY®Ê°ŒÎî¶.«»úìŸÁ»Óéür]ª©õÓùeÇÁ»?ñ÷ª=ÃȳnvHH‚›fÛvÇjÐmkâ4‰‚uzþ¯»ßÞ\ßYÒõúw ‹3"mE«ì,+’U',ð3ÊÔŽˆ”¦A{bi°]«^ïšjPÜíÛ#µ² •ÉÕá «¶üöª7³Õ9õ2S¾ºÁݾŸ#©Óõ†Õùe…ÁÝy‘-ïPŸG¦9ì5t`}\% ƒª®ívºC}Áù/£x¥|¤A…;ÀÙ%ÎeÂA÷·Hjº1BeF¨<)_§S@O7 ^Ÿ[²u­¿…Q¢j&þí¼ˆÕõ°î½Ùs£š^5í]8t†‡&¹GˆgÇ9¢D#‰ ½{ö/îÔpÝldhÛµGv-Ví3“[¸ã& 12xŸ•!]å…ˆð¾V0L‡ÚL鎵²Îð„詺a>¦<3É‚#¼}6à\“ž]Ô¸„G?‹é8ŽVËŠT¬Ç“R ÷Û¯n?¿¿ùróåWfÿáöꯟ¯¿Ü}¥…³u/ð'$ ëߨÙàÀAØ{Q‰dÝ–ǺH~ÔÞ[‚‡±É&7s¥!³NTÅ`¹fÊØÔf»¶Ä.|Ê1 ¢ÒˆBØìŽ=Ó$ê….¦TüÎ:þT[œ€ÊÉpÂqùA¢„^4P‘(‰–€;2À™™ˆâ9$Ô–äÿÜäÿtmaÀ#ŒÒó|ÿìôœ^\ùìÅ%w0w^\È׬|€Ñì*ÃõÒôý…'ÍBY„š" $ñ &¢uä‹€ž¿7¾·,9‡øßéõ±˜2©LÉ®‚þ¸Ç ¾Co„â°ã1?)/Ì%®9¬²]‘4eŠ˜¢6D P²‚Þñ‘9%ÁßSQfås™¸t¿9Túnõz°Æ¨2?!R¦b¯Q†Þ6&D9>3DÜ"¹ó'+ˆ‰Z‘\G¤ØëH=QÄ: 1ÆÃ áeÆp~ÁPpF_1.$œš@š9y7Íœ§9t$ ×Üãè§„æ‘Ðz8ÈÔ ž ¹€Î©"PŽÊª“Y =€Ãâ<0ä÷¥ç»Ž™ˆLâæLb$„¤FZ ½´‰D×%y&_O¬Å¦ '˜öÁäÅ21ü¥ÜÀ4s-£ò½0ÎzRXð†WýŸQ€ˆ `0.Ãö°@,ô "¹e‚–j9𢗓`e¦—QË l[¼²‘ˆ@)!3â}òOxi‹:rsk±e«*ØÑ2üÐÐÛå±¹@_ãZÒÕIB¯Å<±úÁ6h¤2Ò=å;Õ­8}žÌ”3áÖô¬>Žõ¿Ç~ðâkç›™2A–óz+~–ÛrÎ¢ÈæÎ–p›I¼‡ï+%9œì¸ðK^Ep¸¬)VFƒ%ç;س(å1“‰YÞXwƒI:'ÀÆ"bÎ-(þæŒdÒXn/žx¾@8X –¤‰SEÅ¡Ee (XYû3h¯ížß2E/%’ €j¹ô˜Žá{:sßtíM¤0P Þ8òýJÍ ¦ÏËŠ@˜‹/Dý ¹1ÛêÑ£æÂñB!±£mœ"sR.÷L ÚóMB=0´›!QZÎIéजq/^p/‰ûUC ¡ioñJ•¡…­¾g¨5=&Ò0æ°LÁΦ0e±i{k©«·ð-[f}út}uwsûå+3ºý(éü÷ãp<ôôv¥Ž‰qÊå/ nÚÃÁ\}î7=U©wܧÀ™˜*zâ}±-DϦ|”·dú ®ûCñÌb÷ÌÁîT‡¦ÝlßÎ<[º©5@æï§OZ #<—µYºàeÂ^=_õÔsÆ¢˜¼_²Œ«î¹EØÞXd„=Aô0UËbïµéñ¨ˆ”;6u¤aø¢,ïò4ÑÌ#ûøðEò‡Àtlt#…l’ºhL 傜˜´-Ö†:nK±+!pÕŽL4˜‰ÿ3ËWq™t?§ZI¼ê E'!?5> stream xÚYYs¹~÷¯`ùe‡U¦2÷‘7%Vl%^{KV•+•ÍÄI”‡3 0­Ÿ¾0‡4ònña€F£Ñè ÀhÂ/ZUáªH’«*-WÛ㛨v¿âÆÝ‡7‘ðm€q3áüÛý›¿ü#ËVQxU…U´ºßMEÝ׫ÿ×§Óz—nkóc½I’$¸þ+ÿÞÖ0òdÚ=Òà¶Ýuö¨zÓµ0'ÉÒ(ˆóõïÿùææ~Ð!‹ã?©,rþ‘¶ÙUe«¼L¯¢$e‹«õ&ÏÃà•ûðáîæÃõºL‚ûÛ/ŸYïo·÷EáÏïo~»YG|?ß3íNûr÷¯¯¨ø*Ê®ò2[m¢â*¬21 0†E°íŽëMœ`ºidÓIXÝŽÇûƒfÂû¬üç£Æ -.Ð3Og™ÅôŽ µ¶æqå|\Ã,-Ód–iNŸ”U½æÕÖ"­­õ‰Ö¯éÅô´ð~”\EYÄ©;r-*ÆJáZyÆZÁ÷‚ÄÎ~wï _$ w>N;ÎAWî>{CÛ¤áeØõU{=Q×[ópóå¨ks>úE£­j]/íAá´$ ~ÿ«ýÞê=Øã-ÓÌŽ¿ì hl%b­Ù¼€lµ;7½„qì,zöÙÄãit2Švüm;‘qvº–Is4ý(gª;«Þ€® x ŠV¨ `MW1L„èÒÜžèð‹°Á¢ÖñègéùÇ/Õ{AšIæÑÔg¿ò—EsW’Ý‚êF)èþíÁ±`x’˜ÆñkáÆY YL»mÎ5ˆ{<ªZîn§§i ’y^|2[Ý:YG¢U‹L²<‰9š'¦¡é‘4èÆ¹² ýÚœôÙPÄáɨ_f‹32j…MÜ:ë£Ó ¥¥, J.g’Ëe “&&Ç.¥É¸v:5(çîÕ°¬B9ïàC$­Ä³Yå×à…,“î±ðé=sZý¿³±Ú';³t"Æé­Ôm &LC7`-l¶ê¡Ñ²dÇô‚ó€»å…H0£Ý\ò à‹}½[HŠà æe”½qšË| ¼Ÿ•«‚v€|ŽùíSúƒj™Öµ2÷ Çje^lˆ9ŒÖi8Æy22¾^.‘•ç–_ˆ6ïI²£¢*ÄI\I¿Fmµ$/9¾[/ʹ ½$6L·Š"ó;­Þûa‘·d2Lz8LLûŒw¶ïª¢íö¤ˆÛµ›¤L .Žöf0¤Sx—Ù¸’·4*Ðe*¡_¦/M,|އ)Mq­ÙÚY€°ÊUVÁÌø‹qšG|ÀÜ/ƒíˆkœä°:É¡©,:© 'kX.ñ í¥˜î…ÒWõÜb—£KfÙ}9t ëDkz£sŽofxC2½@swýùë§̼À'ù$Ú¬j?°Ò¤äR ßm×:•‰ŠqRááŒä玲¹…þÂï‘]Q›ßÃ(Ý’$¬ÏxwÌÁgÍYØnù‰;鮹ßÚ¸¥X¢5KLØXˆ$ŸÎØg¬=VŽ›,&¸"I=CB ¬Â<¸Ó˜`tÐ#ÿmË!‰pË5]é+OÁ¾–ÎÀé¾6i5ÔXé99N·[¤H„Áùê«DØ‚]ËÍ9V¡ÔM+8ºl€ˆ á5˜˜¹G_@Ç×——/1¶g^JŵF\wÔB±LüÅÛ–Cÿ™Ípl††ïÍ‹—ˆ¤2ƒêÚȃKw<ÊÅ'Ç£ØìMK È>³~/ ×pJô4}M/äò¾D@S”Á¿1=ÐT8m[ì ÖÁYŠiý4‘>®MU X¥ dMKAá@&“‰–K›hp“š®ã¤L@6^¤fbóZÈÀû}âη5”He­7‚ä%Ê1nÛ(säJK8p,—eÃèŒÅ:†-S/ÃH5\ªÑdØa}“jâMìÝ´ûƸwü9&…©’zSyÔ­õa}jëŸ ŸÈsƒÀE¸ÚQ¨éhë¤ÈÄ]@­GÛàQ’Sy ‘­â™â{ ¨aŠ‚ò=ATÈôÀ)Nv'˜©µâ3 xT(°­_ÅØ °qÏØó`î jTí8çp¸7÷ ­Á¢,‹¿Š¹Ùó¡ÑÔUå)DXŒu)¦©Ês/âþeÈœ¬æä4Í«p6‰Ø´ð™•p$ù²&Ñ2T@>Ür”AÐ1ªë:´aoˆ×Œ•Z:¿/0´œçÞâ^£’øÞÃ%”ϼL¶1Û,ú«³Oo >É—K°»„EÂ,täB»˜5â&H˜üœ%Úz‡#…ž å÷6‘6µ£Qù„f÷T'N/ÔO<(ú-í‡ï<ªÝËÝxcÔ¶§;$Q“Ÿ˜Ê˜›»_o?ÿ1€+tœO*4tø¾…—9‘OËnJuç‡f¬Ï±ø$Ôøn3Â$ñæâEødýc«OÒVŽ5"þXc%å›kžÃVgãdÀ2q2\xŸ¨`¯Bíz¨ê0¤ú^O=wºå’€Ž¿d4t™ÎÙ*ÅÔ*H«€Ê %>^Ù¥Šð œ^g–ž‹¦æ·Á͆§c“Ÿ€LýNîÉT\ôRéÜwøD(Háƒp¨U^ì]Ï–{ÃSÀl1ß¹³-–døËP2¥`¡†yÄ7¸´ ø)µÕ\ñé2ÓpãÑtCÁÎø‰dÑZŸ–Œ™ä¡Ühq’,byÂpþã¼9eŒ;€pRXÛ{CêŒÎRv!®–^´ªXP"·IAøZmZ×+¾Ä@‹†âÝ!B±”“s$ˆBÄÝ|¹F>ö)4ÎRaîròÐ;ÕÏTZºIþÀç¨!Oœ|äCâ̓U!ú'Žû£9‘yÌòTTbÂ]>ð.‘kxßR­¤v3äLÃpHýãN¹™… Öt¹S˜ã½ÂÙ†{QLB­ÇbddhPÌâ èRpˆ¢Š9ö,)8Šeó¨U+«ž0tLgç:ä!O¬ùv°¬Õ®×öY¥¨äH£yzIþÚY=½Ù –$^#D!öKþ åN ãþDƒ6_µiæÐ0c‡øˆ|™ ß„¯^*P5ëDïÞxÙcÌávÔø ä—Þjy¢¬ÇmneÔog¶‹l²K¯Ó3ÃŒo׉Նû väý,ø]ÊO8„ÉSýŸ¬tY$¾A3e’õINË9 ¬3=×fþ=³jÎÿáXNèQÂà+hÈß!ahԧȸŠL³>$À–„ä Ô/¼à-¶òâ±ÅO†\ðÄ䱘<š‘@‘a<‘¡ü`„>ÇÔ@@4>ª#…ñNœœÉ¡/îÐ4vS}bN_½XQ.Ä&Q5FÃH™GRüóq*x›¸&»ÃþíLï%ÑôÙ:QE¥GTQ5ETaH·ŒÉ¼Å%JRÕßl"Q^l韽©jîSÆ¥€U¤,×#+Ý$O2žcø¦—cušÊ[MÉÿ©‘ öå©»|µV8uÈEdªÞ°5þ‚åò·Ëä$ØOþÓH' G°Ïg;Œ<pü÷XŠÿ]yyåÿ#þ?u:?æ endstream endobj 287 0 obj << /Length 2257 /Filter /FlateDecode >> stream xÚX[oã¶~ß_aäåÈ@숒eI}KÓì6›XgÏ¢èö–è˜X]|t‰7ýõá %ÚÖ¢E€ˆ‡Ã™o.´˜ùð'f©?‹Ãp™®’YV¾ó µy™ÑàÓ‡w‚ùÀ¸p8~~wó>ŠfÂ_¦~*fÏ;WÔs>ûû=æ‹ ñT•ëïóE†ÞíOô½«sXyÓÕ VÞCµ«›Rvº®`O­„Äó?ŸÿûîþyÐ! ‚©,rþ£¶ËÕz¶NVK®HaX/Ökß{ÿùùó§{RõÓýÿ6¿=mHÑßÞùùׇ >>ÜÝ?mîQÙY –b5[ˆ5MIèó^Í«hí½Ÿ'¡×(3‹½Í\xõ®›±wDSÈÆe«û*gc ­”ÆZ´óÐo Ýîi¥RÇk%1H~խʉçùUÓ‚„–ë­tVOŸÏô €“E¸‘ 婳¾TŠìX©0 ¼:SU«p"¼]S—Dît©xT0ì*M½MŸ¡˜=-€ò48U)G]$yK"r«K]ȆV4+Òt£»õI{£@ÌwÆÁ¡Q-_„¯h:Ì‚·=/¡Íc´9NrýÕ¡jhfFªê¤.ø >Kæ9ÒÒ„.h®·…*™\³œ¬®2ÕTírÊôòˆ‹|ÓÕl$ËhšXF°¶ôSø' §7*ìþ…#€"cíFÆù1F}×~º¹9Ë—ª_ÖÍËMVÞ µënÎõ R± A¦«çcÕr_ju¯çBVd¹…ˆÓeŒ"ÜÀ»—Ö‚Ð…0 ðKà žç á1¦ [âxÑ´™7Júäºí }õДŦ1XëKüÏ8n0 »=ìè>>¼ µ)P´œQ3ÄãJal§ˆoÙá(AÝpM§³ÞD ’'Ô0™"=‰"˜Da„ê–vŽ“¯-ë†XdeÓ,²SÍ Óšájêòp(´2‘¾æ,±öt‡¸@ì®{¢îMæ#%™σú`se7üîꢨqÇ‘|âòƒz&#T<'D`®;›vÖžÒÀÞœÊ4Öýg_ =ÅúH0Æœ€á; &ÖhSÙ«ÐÒ€§˜*T,öô¯~äW5o³»$}òFî:`V–Qc"k’ÁR§`álÞYÁØÀ_Âãš@8F“±a2ʼD¹!çD&L¤ž¹FïÞˆ"Ià lÍ–KˆÓ¨=áÈL0ÅuI¨uèœïo4ÍdEƒ6æ|Âq¯ÇFÀ÷v}×7j‹çAÌQ‰FF‰ÛŠÄöÀØíb¯‡ÞÈ$˜pÐ8&UPõ?,Ýø(£q ÍŽB »V° @É2uè$Tð3ú”7N¡m$š\Ê ¥CºÅH~£EÙwûºÑC‡9‚M¾â%ÃájÀvvb©±±<ŠXŒ›Á^xG ß’ÊŸ¹+Ö‰~Vn’?ÝSçûðôá¼÷å~kÅ£l[®Ÿ˜w|ïNê‹NÓ%æ§Þž\hI^«ÛþÂòFwêŠvcÔØ]FüãÃÃÙ ¦¥’¦óõS7áúÞM‘ÓÚDä„¿¾`NS[Ì Ð_ªÆ^Â’hlè4OÂ}(²[¢dü¸iôËžšfèýhÉDcÝ|cNªC NmÍâ’¯ XKk@)u5b˜v2ÓÔ-`¹Œr´Ø‹o— (ù-ÁWAõÆ1ˆƒ’˜'·D¶Õ&c.ýM³0²‘Ê“'RT=’û+Ò“V¾ËòP°Ói»ß1%ø þÁÞ*ŠB£0Ð/à‡ÄG{H¸ƒ–A²Æº+ÞÎPDÁíï®lNö±y ÷‚wr"ÑË€Ré”úºã@e|šhjÐ[ÅñkÒIøc0‹ &צ²T·ÚÀ¢Íü¡gQ§ñâ:Þùînñóï‹Í-š$YZ' Ú]£Àjƒ‰‘R—emùnÒ]£áa¶]löTŒ€ï¶Ðßœmá ìÓ¸zbڜŔ5íý‚t5ÔGŸjd(V#š47Ç\3 iJò"hQ‡U®#jF{â1/!õÝ"xó¡ÑU¦²˜R÷PH¬ABÎÅï¶o;øZÄ‚¿ÉªïPbt›Õ׬½,4èWiÉÉ» ¾šqf©\YÍØB ßlD9-¯®fM¯5¹õ @èb£ Ü:€–%ÞŒ²ÒqçáΩUæz³~ޏ ù¹F㯠H¤Ò¶†^è„,‰õ¢A‡üŒ¶ã¾¦²‚¢a RÌmZ4<H–±ñ*@ô„p*,Û²zzï[ãí„"2Hb“‘€Q…~Ñ&â‘‚8ªˆãF‘3à¡sE½ãýÏY;-§Uhþ‹ &G5Hž¿YkªN£`h# ]±“y&[kónY †¤ùa fNMËKvpÊJáphìp2>=aÒš.¡TÇý ³6ܶ0¯Ö˜y1zH•–½¦^éÒwm¿mÕÿ{F‡éÂ’1À6qƒß Vá+ð$äwÉ ÅŒ4I®iS§Õ GXkWàØËœèUM_RƒŸÂü¤r§¾w“>°½ü:"xh9ô¦Òdæá{m«W T%`UBÓ±ÄäÃóƒÒO£•%@¬›ÓfõÉѽD‰[î‰M\[àûÉd-¢QWøèç²3màŠÖ«È´8§–Smq4ü–‡'ILn;+븦+Zê¬í š;á[:ñf‚믰õW y1š@gÇß±#ö÷Ôpø%²?nû—¾å=dÂM˜^Éi%ó³Ó¹ú›@›Ð}Ì:ÎËa妜¥ýÍïogàVÅ endstream endobj 291 0 obj << /Length 1326 /Filter /FlateDecode >> stream xÚWëoÛ6ÿž¿ÂØ—Ê@¬Š"­G÷)Mš.ÅV›»/ë€*s•Eƒ¢’ø¿ßzø‘-ñÈ»ãïÞ4›EðÇfy4K9s‘ÍÊíEävÍÃŒ¿¼`žoŒ‹ çûÕÅÛÛårÆ¢0r6[­§ªVÕì¯àj·›/â,M¥žç Îypõ޾×z7‡“½jpCwÍZ›ma•n@†/ âlþ÷êÓŇՀaǯ‹œ'hS@+B.’Ø£M22.<Ú››Ÿo¾þ†Óeð‹žs<a5}»Vújiõ«*eÓÎYàOÖó ´AB{Ô¡;CGjaAÙmeƒ¶E½nfyÈbïÄÕ<ã»>÷×gÑp}î¯÷Ûª¡Í‚H¼œL÷ÁÂÒö׺#ÖMÔãƒÁ‰†>ϮƸ¿‰¡„¦ÉãDÕSG2-YA„ ËÈó~ÿŽ¡=ë5~ó&<×ÛVŽ£´¿cg4Œû-¥{«Â: *tCœ&h« '  ®…뫞¬eÑúä;rèP^è8‘òÉõHá\Àï®0E]Ëš(ÿÀ¥oΞ*‘ÚhUzeˆ¿k7pÕ¬Bãf.îÖã+ Ê ¤‡Î ÅÓé3ɉ²‘ˆÁû‚ÿ¤ØŽOŒ1â`ýÄ—ÕxeH¢ë³È=yß%ʈ?Cüaÿ[ç_Êè endstream endobj 308 0 obj << /Length 987 /Filter /FlateDecode >> stream xÚí˜KoÛFÇïúïVqĸ¤vü#…•[ô“³¡‰FFJî-Àžá-®>#N9Mwó1Õé}¶ž¹U:X% Ò°»EoÆ¢ˆûC>‘þ{ÏiA05qJI €¡d$àÂ~ZÑ>ü&Ä^¯Ÿ*ô! fªâ´ŠB˜šƒTâz«­¶Š#qí7ÛåäÝf<Q,–ù K·Å殘­Û ÑaL_ˆBbÜ}y†sß;ˆsˆ(÷ •S¸ l¹c…4S{îgÙüdò†!¦Õ³%cíK2œõÞAœuXwe¤r ë#µ;¢Ížõ嘚tVì²¢ï'ˆ*þ²6ýºHƒé¢ôHDŸô0•è7Ζ¿”ˆj¿¯œÇé-Î>¾rº¸øüÅ çc-Ó"ËÜ×g¶Q˜tþ°Îr«¤rV.7¹³ü¸œgù.kK‰HZ2C´Ô,“µ–AÑòéÄüúIà M¬ÄíÉ$Š,ÈådG"[`œ ÆL jÿP>¾ú‹ì[ôlµÙVõ×i¹ëÞœå ßœë2 d÷âlÈ‚Gù©œÂ¿¸ýÈÂ…3⢾ïéßg³…kæ4ýŠ _y­¬–ßJÛðÑ}‡B4(D?w…D¤Á„©W—Fà *Úæ¸4ÂTNF3ð¡4\cg‚#>Åô!”×ǧÙ2wŠ(mïø{[5ðÌ Æ ¤Nþ÷ÇŒ˜ÒGuÚÀ\Øt®op²€{ l š×Ÿ•å:¡HI{P\%W£_ÛÕb0DfÏ-iáw¡Üm!‹Ž‚Ä_œ.œó™¡Exª.ëõ“ÀA«ÒÍ Ýº´o"Â4zÞY4vëÑÎ ”ú.yÙ«ÇjÝ¥=j´À¬^þs/¾—„¦H >\aƒ¨Âj› éRX˜Fš# ƒ‘ 3ñªW`W[×ã@dÙ˜¤ ×ýß}5áî•k…«å®t·7·#,К~ü;±y&â_ß;ˆ“÷6Ýï¨*òA}ä#ä1‡Ó­ogÓ^ôå}ÓЮ³¯0)þo, 7Q¡†Ë+p•Wmo,a-yýBéï endstream endobj 349 0 obj << /Length 1770 /Filter /FlateDecode >> stream xÚí›ÁrÛ6†ï~ íƒ ¢ÇNãN{ìøÖép‰v4µ) E§ñÛ"H°‚K,)“G–ÉÝå~»þÄ«LþÃ+‘­8¥Häåjór“ ßvO+õá¯ßoðxÜZ¸6ŽüõáæÃ=c+œ!‘ ¼zx4M=lWßÞß•ôöµÝô»}{·¦”ÞÖíV}ø­îkõévÛ|½[ÎrvK³»þ¼ùø0»e„DÆw:Ò Ë9"˜åc€E™#Ló)@‘r6(?ŒÊO*@Ö‡{ŠW%E1“é Q&”­úØâªîºúô]Ó¨JãxN)¨ÍµcÒ'tmžÐÍd °J a˱M˜‰å„·ÍFöwuܽžÿÔŽ¥Ñ²xß½4ët½ÉÍj›u‘T ¢4c‰@i{vPÊ…~¶$ùÜ\_¯ŽiHnU}>Ø©f¦Á•·G Ü¥W‡-§ˆåÂ…{ì»×MÿÚ5¾.Í'g„:^{:QmFj&fj„ÕrìP-(ÊÊ2@•ø°2y¥gÁ:^v:Pmjæj„Ôrìed ´“‹æí®}òîdYy‘+fhöó“>ûjðìkB€o†ÍXbÐ[žô9A¸àúa1å…_f2X|!ð!ÜcNÒqk0n3ñ˜ƒ¸Xbp[žÜ#.owý¸á5&òjñozˆØxYéÄ´˜˜™; ÍF,1Ä,Ï1‚ÉDìØ×]ÿ±ÝúåˆýÀùB5^O:*mFe&-€Êˆ%•åÙA…åʵ4Q5íEß”Ž×›ŽR€QšI L‹F,1(-ÏJyB‰ùÀ ùz¨ÛmU·o’ãã®m¶Õ§·óéºñzÒQi0*3i®3b‰Aey¶Qå¥ D]TûMßô§{ïBc†øûÙF¸M—ÌÍ0r[dÞ÷1c‰àf{v¸qòÌܤ•]µý¹KoÀ˜¥ôÐà0QÀiÌXb Àòì@!ͱ]ó&BõØí_ªýη¶¡1.~@={Óµ$ï À½EÂà65B‰¡d9^P¢8G‚[íTOrhŸ¡óB‚—Õ­¶Ü“a‘ª™˜Îj&l'À½âIP'˜¤7A±ÄLÜQLœˆ?7íSÿ¹úäƒ.0* r~Ð!°‰ 6 €°(°…l”øA f°ŽúÁ»½°‰Â 6 |°„ÀF‰Øàaë¨N`Õ"ØËõ¢d-sâU šn@Õ`; ÇQŠE7¤f˜é:’†ݾ~ú9'Š4ñ€ÈÁvêç(…ƒ"R7LÄ]‰Ch¾ž‡2’TIÄÌ=$‰°(î¹{œbà”BÌÜm=Dûú"\ÕþqÚž?úvb$?§]D†ù0ì% ¦ÓCÂË…ÿ¾i`#zP‚‡™ £zÌÂW·³1·V¢>B÷o@a; õo”8BÁ #fúŽ:âPwǦ#Ã;žeFYÁ/|ªû0QA¡{=  ° éô®ÍâÔŠxH91wä#qàý’BÞO±ë˜ªG$‰ú Í= Ÿ°¸GI'÷lbæîh'M×í}/•äÃNèÕ¼Tò•[¢¾Bü}…íx¨1ÔC”¶BÕCHW1׃#®8t»¶‰ÅiÇF\ÀÞÊØƒ‰: Ýè†í$°œ‹’`(°!ùÅ ÖÑ`tM­UU_êçW?Øì¬^"„z5Q®¡{5 ×°„ViQR …4$Ó˜‘:Zi_{Ë5ÉØŒÞP $ê> stream xÚ¶P\˨»×0¸3Hpwww‡ÁàÜ î‚ \Bpw w—„Ç‘{rîýÿª÷jªöìoi¯îµº6 …ª‹˜Ä, qtcageãH(‰³³ØØ8YÙØ8Phh4mÜìÁ‹Qh´Á.®6GþH¸€ÍÜ^d’fn/vJG€¼»=€ÀÎÍÏÎÃÏÆà`cãû!Ä… iæacPbÈCÁ®(4'o+k·—4ÿyЃì||<̺ÄÀ.6 3G€’™›5Øá%#ÈÌ ـݼÿ+½ µ››?èééÉjæàÊ q±f`xÚ¸YÔÁ®`°à‚Êfà¿*cE¡hZÛ¸þ%×€Xºyš¹€/{ØÑõÅÃÝÑìxIÐS¨8ÿ2VüË€ð÷ÞØYÙÿ ÷·÷lÿt6 NfŽÞ6ŽVK{0@EZ‘ÕÍË`æhñ‡¡™½+äÅßÌÃÌÆÞÌüÅàÏ•›¤ÅÔf/þ]ž+ÈÅÆÉÍ•ÕÕÆþ„yÙe)G ˆƒØÑÍåõIÚ¸€A/Ûî üëdí!žŽ¾ƒ¥£…åEX¸;µmœÝÁr’›¼ˆP~ˬÀn.666nvØöYÿ¯éíþSù§ø¥_'ˆÀò¥°¿%øåÅ×ÕÌ psqûûþ[ñß„Âΰ°¹ÌÁV6Ž(¿£¿ˆÁ–ñËá»Øx Ø^zÀöÇïŸ7£—ö²€8Ú{ÿ6ÿó|в *LUüN\âðeáæ°pp±ØÙ^Òó¼¼øÿwU3›¿—ñ/_9GK€ï¯Õ¾lÓVìñwÐÿ= €ÿŽ¥ yéZ0€þw“²q±^ìÿÏ­þ§Ëÿ_‡ÿåÿÖäÿ» iw{û?Õôêÿ?j3{ï¿ ^šÖÝíe” /càø¿¦:࿆Vboñ¿:97³—1s´²ÿgm\¥m¼Àª6n ë¿zå/¹Ö3foãV…¸Úüq©XØÙØþG÷2X »—‹Ãõ¥!ÿT_ææ¿SJ9‚  7ÀÌÅÅÌååˆ_ˆ àËþ2‰`¯?[du„¸½¸^ŠóXB\Pþ8On.PìÑ_Ä Šÿ&Pâ7ñ€’¿‰”ú‡xØ@™ßÄÊþ&NPî7½dPüM/”~ÓKåßô’Aåâ}‰©þ›^bjü¦7 æoz©Hë7½DÑû‡ø^ò™ý¦èâzɂؿÄ$œÐâ_øR%ø_ø²«áK^›áK8ûáK.‡ßø2žÀ%b©Àå_øÊõ_ø²gnÿ—"Ü#ÇËÎøü‰ÿÕ w——›ñÏÁ}éšÿðŸ×0ì¡,ÎA@¡¶õ¡íwµb$ž,;cBÓ4;: ,¾‹. 5ÙÁë.7b©_{°V¾KÑ_‹.‘ÿô=lm@Œøœ¬Ööè÷d’¨>¹Ó†²0?0^|(ö©Ÿ ™”ESô‡ßOg?í ;ØVèNyš|gw^ ÕBœ;Ï>¯Oý–GÂçvÔ~Ôp+ >}˜b‰ÕŠ1 *›¡)0Ï™%¤Dpc!CbÄ>󜹾™ÆÎ&—OdBñ?Šå,ñÕßàˆ»ŸõYý¨ÉáÚEDM¤OH{=2Ië+¾—&O0ï[^³.4ŸË?´Ú—4« MDùV•Ð%´‚E(+P±‡º+Ï”åb¯ WÐÒ‘Bò £)—±L®¦úZn’Cjpÿ“ŠL#IÚ‚©£ûu×щV'ó^ZlBã­‰+uF_3°[²dE07×òa•ø‘÷ç"4ÀܤŽŠ¤­)ù@3ÒFEís«)ŸWéÌÝHÝSH¶¢ûÉ!ÖG¿ðl43è]ûÏâ­œtdp;°›a¦='ï ÖK^Ÿ½åœŸt oyÅw¿j\¡Ýr’ÆÎ­Y] ,±Ç~ÒßrÐЏþÒâA‚qe3^i׊7쥡.‚¼ž…åÂòí)(Fe¹tòmì¶»Äcõ¸ ü€ÞÆ›Q´âprÇ:7óÝA³ÜÐxþÊ/Û:’–$D²xQz #IT9õ°Âðž3ºiCÐ.½—Ò.Žõê„9ê wtÃb>èY/ÈŸ‚r³g­Ò“n YÁ “wêî=€ ®* ²æÖú*A|þ8,/U²£Ï\£«ª?÷)‰[öU[…ÊY:æ¸lŸ~|m‰tþl£œã¨0±Ì„NyçcïHð^£ë äÉUë /ý(ãí9ÚšH-74w¢ì¾~ܰÉRì ¼YÍóëîû¶þ££*ÝÏ'$âöQâùy*¥×Ëqy‡YˆIðW‡*­Í(W…EÈé§3XÚ<ŠwZ~müÖxYqáßS›òÂ{ç|bœ¡áÎãâÆn )’„ò%wLVåÖzµ?tfjådCóÄ8ÞFíÓªMÿ0ã…wa+o/GýGÉyj®AS;'þæ\µà¾!{èU´ý*’£š6Mß`и‹ý©äb·PDÎArÀ¹÷¡§ƒV¶ìREi€'€Éý„gBÌá îxŠ×z…|Å’{eßв¿­ƒ†‰(?´pÐhUÔ{ùç©+`1MžûÄ\“]zDçôcù¥¼a=Bn/cüûÂ’äv#·3X`zñÜ$éUÌ£juJá›_%œïû²Ýy±0]ÓTì¿bƒñÉèÞëm<âDFF~¶;‘ê(t)25¼]Pžôp%ß“9œÆÍ`ˆ™¦¶”*ع`¹MõÕþŒ÷®;™ý€:iÜ‘ˆ_ Bu÷07åAW9ýúF•,ÈwNž„QzÉŸ±?zl]†ÚªÏ=AåÀ¼6im’åwsIÎN‹ñ3†ø]·Ý•Žå'•ê)NódÀ÷Xú²›eÑœÿ0œ[ÞðÓÒhÿuÅÃ}›Çø0Åz§ýM°Á%†lúL¬)µún‰7[˜©Cù¾zu3í˜àŽoη@BÆSËú°`÷JG¿¹B…«§Î¸~=}T€ùÜ€Þ—¡1 Ò•Ä;rŠ1WÆwåïovhÀ àwвò˜€:7`ÛþPãÙHã°wtSøfü­'Qwº Úþ#•ƒpOƒjši âObuüp9KEÝØƒÏƒ]MhJëpé©m,Ñ£íçe¥’pªöÆÚ,Ü=m{-XÄH¡‰­Óž¸N?ÒJ³»t/Q¼¸€Ð°Æâ­×üµ™›Ï¢ß¯É× üóá,IÆ‚FœVµ ô x½½f±†æF\\ì2”Õ²¹~§^‡6Bèa|ÞGnØ…>²z±$q˜N6¥ÿJh¿Fô&¯&AÆ÷ñ¦ %¹èO<:ðh%þ¸›±ß,Y$Þk¿™ƒ’Äîâ”kg´˜_÷Œ4·¥Á™ctß0ÆIQw¸ˆ`jìÇôüV’TS«ý§QÔµvÁmÚêO+Iá ª9ƒ µ®¹™,?ý#N¿¨e X£nõØçƒC½jG³Q4©Å6ƒ.”—x»Ô-û­Ž®L|«\˜tûÝê£;±¬mn ÏU-ç!a3ùÊkɰùÑ_€®*©…vU \ßé'z½ùü¯ ë1ñZ×΀á´ %™ˆ,¹¡Æ*Î'^²©[{”÷VËqp§ø¢…ï;—TBÙxµÈùu|F»æªJÊY’Ÿt%¹´ð£ïù&>Nƒª†Y¾ Þ ³«G›sxõZGÅ.Áh)c¥ê­ŽIf…¼| q‚—‰/pù4Îqб°  ?Ô2ÏÒYû^§°xÊœ#nfW>c°KÇuQ0ízNpâ§Pæ›#ëײA]7w›d'«"’ ¹‹ ó­ör‰2¹Ë÷µDT¶t¥ÅZª½xÅ·ƒ^Æ·ìÖŽ¬T·ÜZžN‡R¦R¤&Þ_tÍÑ [Ûê²>9´’¯Þ€|R›/Éaó.‰’!S%PuÎ5Óœ“Ý = =HU¦˜1z&iUüL Ó5@'hiÞ 'r£UóÅhgª#žÜ¤m¶ýѬYG3 ‰ùÑ!7ãô^Ã"§öÙ7fÈþ¾Ö /p×(B ¯o¨,XpŸz·êü«SXéõ‰ÄnZ:ô‰‘° âuJRE…ô%ÔjÈýcqËè® v?!qUçBc*N*µšE†Êc/ŽÚR–ì™ãÞyÒ…èªiàζrg³aœxnr»±Ó0|‹£ .%듲ëçŒ"B[èf–Œ¯BôoÓåΪøZÎH­| ÂT6þA½¿Úyt™|JÄz«FÉ;Z5ç§<«¶uÇ¢£¶²­Šà’P'h"G^£$ßMâ Ø‹¾&ÿ¦¼ÞD¹ «–ª×ŒÕ%½œCÿ%Êð3>Ü•b1 ñL]8Ù53¨b—šm>,ÝšjŒ’E4N™e) s‘øõæ­š}ÉMeQ[–ý½"CˆXøA² o)ÊAöùí ÇõµYñ7ïa „œw±,Q©oØ?žE4ïzvzñ)|oʤ«£äÌ`¸Ô^Š?ÓQ„Bs®¦I¡..·ß‡~âX7m0.ðŸ-šh+xMìɳsëœË\£wÒâ’Ü6ÈŒºs]áw¿0FDà˳×C¥™—dg›žÕ9üN,yÅÐÛÛ}£j,½†èvŒ=ß™âîÀ[^H‚d¿KÞÁCPÊ—¯+ÒXÖ≒*ˆö ÷Sø4w÷ðæð¯“‘¤ÉfZ‚>+¹š°ížý>w÷ö~b³´ª¯† sveïE¶ £'Z;Ñžæ)Êa­ úVÙNðNÔ jd³ ŒîÙ \Ãy^©§ühŠ¢Ó@Aô™3½˜^IÛñ³²­×ßSšJÏç;–ŽCï(„›W†”m²ÃŽã Ÿ™]²a*hš@–R€íÒIƒXâ¬Ì‚ã©‘ÙôÎ4q32Ù½©†[Î¥3Në5œÈª'âHè)=É}ƒ½—ÖýL ]¥V©µ–Ô/Ñö3@¾E혱¼(/|\ §H]yÓHEöãôn„¢øýÛ8– ¶Êô9¡PJùë›v„ó5½H‰¯Ða¤Ö"‰'mÞ’;¹!Ꙉ(SJëé×'ï~Bá©ÙJ ÑÁp—ÖÿÀåw sÂ7ù®ÝKi’`$‘L¦}Ôלâ*ßd宓í°œv¯h˜•U·óõžƒ¶|ˆy÷ÇImj}éDÖ%÷cß'#78ØR4ö •Wµ3ûï¢SWîm}»üÈoÕ0J›‘ n°Go œ»·.ÀÐIÒ‹O£u?T&u«áEÉ¢ø}Êî0%ËdÔ=áM)’ÒŒ'¤Í¡3˜q÷ÄÞ•Þ=HÇÒz¢ÃË \f•–¦ÿn~RHœ­®Z•¡»Œ{NÑͧÄ{=IM€Kv [ìü%ˆÃf´^Xä]u0¸Œ wÏRxÒv»Í7=UêÁG¸燄1êGüãRý>±ÈÏcÉ⛢úBE{Ó<{mn]ÕðCVÒüÃÚ‚¨N¿8?Ř¢;)$,ä]¾ý…ˆ6¾•þ‘ø§p?Ï­6!0¾œi%Ë!(¾=Ù“Ž´ñꃱ@œI^½HóͬŽ(/&=ŒÃZ^ËÅJÄþ\Ï#ø{³Ôáq¢ÿˆá¼ïIisZF~a›ÈJa/oÝÌO™ZÈö; ¡oÕ¿vÝÊ@†ŸÍ¾±OÚž6ê„:·³¥ r÷D*ÄÎo3ùx•²Ñl.+Y)ëÄoŽ JykÜ›Ló–Ç¥ùĶAû¯7‡s–Ñ \ªÈß6Ç©z™ #|u$?µxO=…¡{µ7oâwãéÝÕ5Sš4¤n$ùНÑÛ–­ëñ˜[•VÑ ò„[íBgÔ*ÀAsTr{uQˆó1*Lwš‘jɬ±ÒŸp=a ú"nlÁ,àŸ ülIz&~¸¨Ûbo†£iq_^û¬(òà DÚóo<¼Y‹qÛkÆ ‚ðH26A:|Ÿ-O½yyx:ŸE0MÒµ5ɬ¨î{@n­÷éž$ÒÄãÇIút9ÎHýþ«kÛåñN n»˜ AØw²ÖÜž‚¹pBèÁªB’_ønbõޝ™Vì¾dJD‹5~/ƒ²äq c¤~@“é6ZŠˆâïõcgÛ: }°R¶Q3–C JóèÙ~´´£´ 8Œá`ȵR«Æ˜:ÿf{Ü…w<0ÈUò-H„l$µC;íÿü »Ĭ5“oÀ y"8’ 1O4!ºðœúÆYç¶0ú9xæûö%&»ãC_«;‘ñP½¬KrÏ'¸G ‘˜]¯F­9URVk'Eb9åúå; êètÎñô)Ü"h«^VP ~˜6‹3æ–îÀ÷ª¡o‘Qª)˜o¯§ a õ'8‡$…ò‰p 1Ê/~ ?àÝl¢kK-³žú›û6.…-‘MAewÞO­âåÝRà˜6œ‚Æ'¦¸cpxÉ:#ü*b>c çô\>4—vç“p\À;Û…ŒŒO¡ÅMúyFsw_ÄD6ãáó,|,Me€UÚú9ò%"ªTÆT–&%¯’b0Æ }^¬z?2-îRzSð; 1zeô‰’-›S¼èîä.ÙXQdæÒ1Ê0n‚¢ Â)y¸&³~§”:´…«Ö¨Ï6–)÷yó‰W¡Þ›½ Ïiª{³2ò¢‘ÑëÂ>ë†X¤/t 76\(ôËF½¬¡— JôZ êãšw @ [W”¡l¿OZ'êÀ¨S…¬+®Oò×Ù…ŒU‘7®8Z½#Ó”X+4T´hÄqn³mg£¥æÇ/¾ª¼P‰0‹×4Æwo«÷«%¬üŠ»Ä÷¨¦.›ÕçÝ/€TÖMβce‚á zqk¦QeÛ韪˜Ïûu~èŸE¸Nk‰îÑ H}ìx-,wpàe MŸK*îu¨$­UÁxÌõW;M0×êø•Æšbß‹½Î’…ë*¢´°Ä‡Î\ƒ›Tò3º2RqÖ.j½í_ Qâ1u—k}˜½Ê»fÛ¯ï@kU„D]i’+óvÐu_Z¦¼ÙDR4¥ ë-´›c[4Ã|ÜÌ$‚õ««A5võ©PŽ:”ì10°ù-êpé“Z6í@ ‡[ŽÊ»MS†•÷¿ÓKKWéòVW9n2â£i圄µ´ Xɱ‚9y÷N¬k^3Ì— ¨˜Å…ŒÓ¡<eæ0ÀIÝrÊ!0ºÚüi³Üæ8¯T0,H4irû)Øöã•lÖ^ |ý^Ï÷° üŽ™æ½5Rªþ¬¢¡lƂ잆˜]‘__ÞÍ'(h…êîYX\´„ç¥M ÞTËÇcR”,H«¤}9?²¸ 3¼™¢Ïô,¶ò[w­YœÖI.t qSâ—w'Ó@G:ŸíGo¿5w”ûR}µÐ[¹Ö‡¡€¥y‘ʠˬô®ˆÊìô!¥ƒ•·F“ÝW~Á¾·þÛP¤¨UÔf!š(ÝR ‰¬%2AúÅ.uúµGèìi·3Ff zˆƒ†é¨¬²ÜÛO,÷¡w µ‹åçdŽÂgS—ïšÍœ3úàz… k¿½úª&…›†_Ò‡Œ]h/ þ·88xÎÜ"ŒûÖ$£<¤t™À$Äì¦çµeÆ=$›7„ñ¡Ÿ`£<§²ÃZ”XÝ&¡ªâFeÇþ°,hµ™A¯øø?( Oƒ³• Þ PÜ<ŠË`ž“oi;¤A!ÑyÛ®? 9¥ö€RGŽ xê“ò°C“}³M§îæäÊ æ¿6 zÏQ&žB^Lð>"â–52‡Ì‚»&×?ÈeëZsGuÚnG#‡Íí(ÿbÒåîºV }bˆ²Ù0¶ _B1E°ù•.Fî=æóÊW:wZµ‡ËĦªð8ñËÖèüÔ±yè'¸},Žñ‚fk’ãɈ³TËQQ‹.¢Ì/â m¬ˆˆˆ>b½4Ú_q¦ï¶?¯Ïgfr/X·EíÑe¼‹ƒ^¬fX“–;¹"ÝKÓÎÝÀéÈÜöY²½½Å†¨(ÿ¬;b3Ÿ²OT̈¶wâF¥þ^„"+"—…#öÄèË2@-8Ý×rèØ¤ªÇA«3a®‰æj!ê3úг…ó‹Ðª…c²×‚Ê|ª’„|–0¾‘‚ùÕRƒç!˜i£"øoÆÒ¤1‘+ù*°ÎW9jR ãœ,C'`–$3ê0bn úÝÕu΄nݯüî;¿úÝ c:hë»Ëtõ|,‡±ø~°jê™ðPØÜ¾O´$=%ÛúSã¥>¸â}x.c½ïeh8g¦;a¢nª´}0fõ‘RΧ¿"é\‡È0ž¦Uûm‚s€ Ú§ :!ùI÷wcW¤=t@!“AÅVf¿›¤yU)·Rä,io QŸÚçt¦­k_OWÓé¢Üté„xvå2ƒUÚ7i£4ñ5®-ówœ¨‚BÁ¶R£¾GåwsšÓs‚ô •N2¸Å³&,ß—°ojìš[ý®Ì†*$ÀÖlæRÄØ›Cy±…0]ñZ×I®?Éñ«–btÖK©, :Ã'›W÷ZÆÇ’Ž3w¡•¬¶>I»lGR´g’ÂÄ6d.rkI ‚µT„Û´ÕxžF—àýÜx ¬ÛS’íöû \F^•D*"õqêÇ!Š3°•ÆPVBˆ°âÎÏÀ‚?ú±a—í±ÙÕ·´CMÃCuÃù½Ã7ÖŸC>-®`ÿp‚ãÔ=ìí"8%6¡Ù÷JµÒ±\¯2­°èWÈ5  ƒ[12’!‘Ü7 Kà[‰Ì®––Ù0¨|šQÐý„ydD½¼ïÛš§îä5g¿7»ÕŸ¸Í­~¼}¡oû+=ÆŸcÐÜÕÈQ²õCz9‰Ê>ròG‘¶CBÑYçüŽñÝ6ÀÚOL÷¢ž“)Ó$2Œ ½1D-ne¼NHÍWR¯.ö–ºé)‡xS†É+Gdùk9­N“éÕkn+æÉÅ{ïÊñ±_È¢xn÷ÇU)OÊ#1p»o%h¯Öñª®¼âP¯oKýÌðâ.¦øž¢M?˜òÓÝ\Ü>‹>@™ße}Œò¢³×9h7àôœË¢¤êÓ!/Jð~ñu³¢nê·ñç„4Û{r²/W•^N…L}¡i8æøÁö›‘øœl”l³+²W ¨Ã‡åŸOþ[·û­Wl¤Ái‹É7vJiŽšyo2âéÒb‡âjÓ« £árôÝ$® ­¬ù\Æßq a™ß³ÃÿÔ+Wrzmv)ìŸËªü^PRÒØýRòõ-yÈOn´…eÀ ;£±Q~uÆïæòn%IÚƒeéëÄ‹©M†7;Âîj§ùk¸˜ÇnÔÝ) ¢Ó0å³ õÇŒ±¶I’Àºj\LÉÏRµ>¬È¤Æ}4äÙªjlsA0Šª¥ygS5Â?•ök-{À ²9xXøÅ^i­DQ›¢§³5ëpꦦ9,uÒH­OAÓ‰“¯Võô]Ü‹V•&6¹ÂZ¨¼åP›4“Œ¨E<~ §,iýZ€óiê&ç¦A¦Þ‚HÔ±©p–‚·²5Z²µd³ièteîk\IíùÇã¥A„””´î‘]y¨ûg­Ò©3FaÁÕO–êÚ¡}ÉýGqøÕÌR)œ³eÇ™^:°?2k Nñc7¾ –»'£Á—(;¤ }hEÄÞP‹~h£LT*gT©ë”|'5Þ•Ë#rZß]g©_šüdÀ¤JÐ$7ïlÀbÁW@D#‚ƒÁâ~·ØFµØ…?(†úͪ£y­{^~QnMÑÐBUÿ>‚œ¯v‹Éžeè =úD(8'æÖܘŠÕ×Ð7 Ñ[€vIU'^ÃÚ·d¼“m¼LÖŒt&\ñ <@ü4ñ™1ƒC¦vA1ä)`SH8øñ´Ù¬œ¢×7~ëõæ5]4IÆtZu^ÌúeäR–ŒHŸ–lÇŒUäºEº!&š…•™±™ßó¼Úq)’… =’±õ¢ØÜì1—ä@$».PR€™ rMº>,AÝa‡óÇðâPWæ¢AVluq.ÂvGJ˜¯¦À€ÂwrGèÜ¡Uœ7ý'LN‹_ÃQ5¸¹{S~a¶”óѺk7•fî ÙšÔºÊ3´ª º{­Ç ›’T_?$3ÛZcw¼È¤>"%\ð¼dÅ•_ÅbYj: ÇÄ¿m óÈËNè¯A.Ö{\‹1_A<_Ÿ-ì¨Ø~à˜ÆÿÊpXgH.ªßT}êû€we„aë$é“™Eóàf)z¶¿V’¾q¡ÐYeÅLgÎLT6Ë«3•ªu©èmé‹VׇKt”eÅR¾"—¥gqà»Q ›ÏPK|ô¢…Yý‹€Å6ÞY …™×4jgö—ÁÉÖ{ × R¨­T|$sŒÇé‚š×øi<7 J¬f¢3Êt¸°è²!Nz.ï¥gTMc²­ù34W?¾Ä¢!¿xY¥–Óîzê¥1¶xÔ¨„ÞþEQái$ÂueþÉ‹cÂÒ}›§¸øF±¹=Á~/º+é <îÃ3û»ÒïBüÑZeDB;+½×syOG™—èÄYÇ$áÞÐX.£3Ç6°ß%¦l~ADëÐúQ·qRø¶§-§ˆ±'Ê-.×(Üâ,R{\ªƒbS‰Kcoy‡Š|>3Y/Ú]üøuWë‰á<ókÑöúžî=žlÍâTÀ¤ÚzžÍ)9ü;6S5&ªÂK~n®À?|gG»¥€+.ËΊ•"õµyL«Å(9ª P”G'´o::WŽÁgG¦¤šÉ©çþ-‡€¡Núyåìƒ1¨# Î-{|Ó&ÊÎe¶!¥Ê§øÑÒ›âùXX8lî£"ú†§¼²Í#‰Æ¥hMïå¼ÚsýnãýˆÚ ›*í± .Ð@̬E<Íϸ[ëâ+ƒ…Ì2ÂñAtylvø@¡¥`{æ®EÚè _¬qrë7§Ô! J?0¸yáØƒ¦@˰Ž]äÝÙ&íbËøÇoKu™×õSÁ1ï ­¾Ö¶/‹ÍiSIÀHÆ¢7ÑÊ óˆë`™ îÌÓR!.ƒyõ­ÞÆô~©×Ô£²ý—Ÿu2dŠw xõa¢W£}1O(s˜CÚ+.“…ÛÕ®§–2‘DCØF.„\² :Îg_ß’sÑßÞ ©Ç ]}~“·ÆR·×†cÄóØ;*e^(2ÀmÐp. ¶ÇDƒ> Öƒ70Û3÷MªÝén¨îjå.?ÌY#zeW×ùÑÉå^8 +'Ma"rÕ4˜(ºOÙ!¸k1á9s(º*xx-‡ /êÓüz"‚Y+€šÔU¸brqÝM™ÛâýisÏ´HMízj¾Sæ 3¥"[ôÇ„ŽÐº×$öéåñYÛtPAáù8Uëõš“\ˆ‡Y•QHú°ŠŸ¡¼kÅî Aª¥pü&.õÃ1+“›æïÖN„ÈsG¾ÇHèÞØ msµÂîLßxd~ªñ Þ2öQOÊþ°BF%Lº0¬µÝÙ‚ñ(Ò9NíüåÖ£*yZ…d=sÛðwêe=Ô7µ¡Ì¼±£žìÊ/yþ¾‘ø ›Ó¼%=ÍIv€ê{à2¨gE _5\ÿè1Ioûë®ÞÓ.'£nRÕ‰«ƒJj³Xî<Ép|×<ºU@¹á‚äSX¸¾AñÈÃÛÚ+Œ£pÛ}yOJØ}ïôÏå‰68žKL•Zp(›š7ú5ÂÓ\:2c°m!ëë‰ìBRˆ¸{8‰C­+ "«¸È^ãֈj›É·ìwi*Ëúø:JNÂQÉlcØRŸÚœzM˜UÍ<¨ÿ7d±«ÙZj¦¨‹þbçç>¼.èÐUé—ä´Cœé!³ÄkÝ@fWfQÑ~É'(ß/­H/žk ø„ÌÿˆùúÍõB"FÁBΰcm x¹ •íê$X´T{&|}ÑXñ«ÃnÚP›¡ hÇc8DzDuÆ“ñŒÒjãÑT|lô—jdÔz"ªó’­=›ÐsÕ Þ‡òV†<¥·á“èG.»×‹Zϱ ó«‡_$0Vø‰Ê[ÂM€ YÔ¿Ûåf#J2¼~|;=ÑŽ7.™Á¨¥‡èç1Ñ §‰æ®?Gjé‚vŠ9õ&Š(ð–Ç #NǪºöå>ç­rã}\¡!FE4ÿìB#:3ÕÑ5˜çÄEÎéQ›(÷|:6MoÉSë²Ëuu\0“ÄA ê¤@* …KõìßžÂÿuÉßÖuÖôÓèM”"–Y¦*EïMÛH¯íYh?ã¦ëÜʕÎ0a.3ªicÚIlÖ6[0QÊ Ý–Þª4Ý7e,^N};n¥ìʧý²‚Z¿C>Öï¡j<]¼µVeÜaƒã±ø‚ÅîAb«‹àk…*úˆÇå>c©üˆjU—4 žCaJh ¡¢™¯ëã[ÚË'Ôm¬×‹T›]‚DP¿¢:'ÅB¯×¥»àè³C‚‹GÌ…báSè®hÒ ùq×?cQÒ6;H´K> ëP$0 û³êÞ\AÍ a5èì5BÒ4äG¥¢íϹgà¯;S9`c}©:¿Áàâ1xædÉ_#A l® ÁBú§r×{á›àýuÑv Y2Œ€Ö|.@ÆÜ„Üà‚DÏyÅïãÓ,ÊøVy龫Ù41ñ„µ«Ô.ŠlV«˜¾;{ç-|æC$ÐÞ›?†ä‰âs³I.–ÖñT#¶Ô»I·_%ÒóÆÊ5cÌÙ\ŪnÖ_°]¶»³Ö…½~%ò×»ôÊJÕóñ)†F¯7§Ïtʃlß’{%BA3Ò/yú’\ë¬ý5i0Èp4RUž¹Ì»Ô³·‰úðˆíSv£€ÙíÁŸ8^ ¬xÉi€âìZ^üGétÀ(™lë΂ëeóE¢"ND7t'6fͧ…Øø²h{…µÀì¤‡ÍØgq­ïu¾‰’Yu‚*aÝ tƒÎ©x6b7Xç%Å "Ç鎦‹0pö‘|a÷¾+¡?fâp¡îK€4׊„”±ÅµV‡tˆè[gøÅ,W›†ä-¾‰Ïöâž;ÒC™%EdF#rR‡§×û€Ë³±a¬»š:ìQkP…w_'<:_¨6›.ÊI²ò’8÷íA"âyÑ,ˆFáÜȺ­½I Òìprû<Ö»?ÖrþWÔÎW:©\,%é-óÉ‹­Ä0†g´]SókD5ŸAS Ï@XsÙh5uÜ€§¬Ò*ñ3o´x7Ò´¢â1d6Dˆ?Õ’§Å×Ïb¡²Å)Æ€óA‰·ž1çÃÈç΃“i£kGàxÜjØmš°à%Ì5á6Eßíé'd;Ug³íOQfp KšzMÐJÔú+Ùì ¿îØ",8< Ê"ííe3_1Å$Lûa†ÌˆØyùa”¼íB¸µÐ¼®yiu74]Õ¯L²´ê1zyŠB®å¦ϦÃÔJÂ}ŽãÄ.¬Ç4éÑ$ïîP¾~“Lº“;k¿†¼Œ nèâŒ6‘ŽÈ¸Ãú«ôhâë– 1¿Z–œ5këѸÑy+£OÝQ9µŒˆsÂÜQ³BT8U°i Zž%sKÒ‚N$â«Ïjü6=~HIH— i•²Áé±ü^ôŒ¬ endstream endobj 366 0 obj << /Length1 2168 /Length2 15318 /Length3 0 /Length 16606 /Filter /FlateDecode >> stream xÚõtœ‹Ú ÇIcÛjܸ±mLlÛh¬ÆIcÛ¶m6v«qòeŸ}Îé>ïÿ¯õ}kÖš™ëöuãyȉå•èm b¶6NôÌ LÜa!uf+ ,9¹²¹“ð?rXrU ƒ£¹­ ÷?,„€N2§C[€¤³€™ÀÌÁÍÌÉÍÄ`abâú¡­7@ÄÀÅÜ ôµ:Â’ ÛÚ¹;˜›š9}äùÏ_•5€™‹‹“î_îAk ƒ¹‘ @ÆÀÉ hý‘ÑÈÀ  dkdtrÿŸT¼fNNvÜŒŒ®®® ÖŽ ¶¦üÔtWs'3€"Ðèà4üE k` ü75Xr€²™¹ãß %['W àC`en´qüpq¶1:>²”$¤rv@›¿¥ÿ6 ü»9fæÿ†û·÷_Ìmþål`ddkmg`ãnnc 01·äĤœÜœè6ÆX9Ú~ø¸˜[~ü«t€˜ Ààƒá¿ù99˜Û9928š[ýÅ‘ñ¯0mµ1¶µ¶Ú89ÂþUŸˆ¹Ðè£ïîŒÿ®¥­«ç‰¹±É_4ŒíUlÌí"ÿ¶ùÁþ‘™ìLLLœ\ =èfdÆøWew;࿔̉?8x{ÚÙÚL>h½ÍM€?°žŽ.@€“ƒ3ÐÛóŸŠÿE°ÌÌcs#'€!ÐÔÜöOô1Ðäoü1s7€ÓÇú1˜þúü÷ŸÎdžÛÚX¹ÿ1ÿ׈eÕå”iÿMù¿J!![7€'=;+€ž…ÀÌÌÊàdgxÿoyó×ÁôÇWÂÆÄÀõw¹}úOÉ.ÿÞª5àcÉÚ~l.@õgѵ™Ø™Œ>¾˜ÿ?¯û¿\þÿmù_Qþ_ýÿV$æleõ/=Õßÿ?zks+÷[|l®³ÓÇÈØ~Ü‚Íÿ5Uþ}ºB¶VÆÿW'ádðq ‚6¦Vÿm£¹£˜¹ÐXÞÜÉÈìïuù[®òסY™ÛåmÍÿz´è™™˜þî㺌,?Ž;ù/ðãxþ7¥¨‘­ñ_WÆÂÎ0pp0p‡eúX%vv€'óÇ9ÝþµÅF[§À9o€‰­ì_å`0 þ%úq…ÿ ÏF‘?ˆ À(ú_ÄÉ`ûƒ˜Œâ €ñëÄ `”øƒØŒ’€QúúÈ.ó}d—ý/úü‘OþúÈ ø}dPúƒ>2(ÿAüTþ‹¸>2üA ÿ ~FÿEì:#[«±üGò×tÿ?8ÿ?J2ùÿB梱þ]þ˜³ÿ¥·uvø‡ÿ‡‰é?à ³Àæÿ€<,ÿ?еúü`bý2Ôý‡û‡«ÍÇjýCÿAÄö¿íÃÙöÔ¥ÚýQ³ûxiØXMœþH™ÿ-ýûÚÿ+þ¯ÝÇÛþ£mÌÄþA›ùƒ˜ãŸâþB@à?ºÎüãOÄ£“™ðü(ÈÉÕöÿ?zãòøAÏõcúðvûüïþ§üW Ãß±ÿçꌜ>È:ýë¹øq’ÿÁÿzÑn@#Ø•E[#ž ‹Ú ö‡jAáÓ+9ðzµ÷Rõ·oí’$϶wþŒ(Ÿ‹öàÚ/îV7PúsJ%RÛ¿hž<Ç0s›ʉž†õÒ iþî÷jÖÔ;‘d-¬÷ik§æKôã‚Çz¹2‹c7Ž&6øêø …§ÐQ’$Ö’gqaŒdHD¡ îb’=[ q× oéØÔöö±ž¿p)ÒîLHŒ‘¹Ðȱ•RV'6jvgÑì+³^¬£Bçá+¦GDÅ|†C À ¥Ó™}.g»èÁßò;ñղ΋ÔÒ|Îf%Ñ ³Ã"“+9­=òóºEÞØMÍDÝÝó°{ôÅ“*4? YË}~ï~-pÅ ôØWà[n#B\Üž`ø>ƒaäÖZŠ™ç‚\ŠK•€Ê«ÉαœÆ.õs>­tŽÖãE¼#‡ ”ºÛ×A£0«ëgÑéÝH à< AT£”«DþÉ=&5/ŒFjÉ")C¯8ÅŸAGŸ©´‘ŠƒZ'Ñr!úWf»Ò^Èì.ш§IÖn¸ê"|œš×Þ%k±:´'À`lUh­ÔÑO¸PÖ ô4›»Ý[l…èd+ßUE4é«’z*SçÕV¥’ìªàÏs›s|”ï .åNê˜1âʉýñ} Ò)8Ùò!#×f» éøZiÇJUŰŒXX«Çp†>[À™êAžAYµa ÚÀÄn¤í74ý–íB˜ïâ¾Ì)ÒJ%›È2æž67ÂXLµx~–aÙÓgw¨”޹áÎÃÞ«Ë~ÚªèœðÙz3ÊF]’ÑÿT¼†FlÂ¥Ç/ÿ«ÊF,¿äw?äòA Zbc ô> [B;Ág ˜ ­$öä#Ž% QãŒ`î\K4›Í-¸ßÎC‘Qíñ‘þS›±žäAC‚µYB)Ðäš²½ÙïPË>½©†!sQ˜É_%÷žà´ƒ¢tÿ'àÌ'WzZ¶:²þÙ–ü>ÒJà)5°vѰ*'½zÉŽïCp†“y¡y7šÆ1—%f¡I±µ1ýün²g%¹v»1Žà…™-âÒ~+rfü7Ys¶Q·s'ÙÅ™¸Ý «’<—’´ÚÖ°“Dø’8ÏØ£½–8hÑ‹Öþ\$P²ð}‘Ù­ŽKÀ‘‡«§ ’/ßF¥‹wú8’<ˆpÁ&Ì,M¸—£àRò©‰Ô ím3±ETQ‚’ÍcþÀ®i”¯ MˆÁmóKbŒGÉ óŒQû±kI€TÀ¤#û›;Ò#(¢÷ï0sqUWƒ&P¬m2ëÚ^dM<]é…C&Ù_Šöi¿‰ÒpŽ8K˵OòúNøœ¿è­K~zàe¿*€„S†÷p,ª?óv–ÖO’Yö+í$áü!Õ9~~Øv½²þÙ]áy}›ï•í¢OMØË ‚Ïš³r(E–ˆƒžwô)µ@Çê[›–4»îØ—)‚Õ¶5§ø–PЫŒÐè7nT]ÆrHîÿâ.¢-S¢ÄõuùR!ª}!ÓÁäV¼H÷E›=4‘twÅC+XcªžãSjO©@¿ÞǦ%µBWý™î3E§ 1Ù[òz"œ®£ªÿ²ûT—oW?vÌM9[³‚”'õ ßH°šH»1›-.ðתfºÝJ"®y=é‹|¼ô»aŒWùoR;HŽ.©(Di"yõ±MCÄÂ,Í£Ù{ïwÿ3jr,ée)9¤õJÿ-•ì|½Jl}=ð½ÃÁ7+òÚ^±¬Å=RÙÒ “¿•r«öëÙü×LýwêÇ®gçØngZt«zã»=¶†ãf#iÇÐÌeI(-nÈr—IÜ—àƒHµ0Ù‡ šV„jYHó‹si“±yÆ"¸<ñï¶È“ãzÄÙk;B¿œtî<´;°Ò!Ë7¾+2¦:°åŸ`Ê<'a.€¤/‰¹ú_Ù)£u®}ë5»å'í†A£—– ª†åc ‚F&¥(éÁñ`§Œ0PJ#ÖîYŽ ”Aq)ÓVsblºI‡uùÁbf³)³éÓ›!ü6üÖÄ:]eä”c«D%SÆðZëŸz=¡?=ûw(ot6ݲTªâÄUÊ:nÎF?_#ùv’ ®šE^ÿ$Ã_¢Û¾áÏ:ޱ=–J^%ùš9U…8” h.c™B.V™à¤”¬¡j¼h#JŸ¹®0b–—Xݾg°ÊV˜µ#·È*–¯‡e>oó0d©¬QóÛ¡µ–j j2¡#YcdõÉë¯âyþÄ™ËÈÙSÁ7fK¨Hî~°e“„/)ÔˆÿÅæôCé¸×¬]QŒ«:KyÞ3–*—"å’l38Ö—{ìÖ¬ ÷þý.FæÝ¢ûº8 ~=ÌéPE_¬Ârï_°´æ Ì ­­ygïïŠg-þ€ùRË=˜cUþ4àhpðùh¥S¼uV5ܤíV¥=g­ó¤`\”W¿å<š^àüN‡‡þæJÜ[‰ŒÐÀ þ~Û~©ÑÒ™òÂ5ùµ*ÙÝDìWJІ]_= !zKB¿·ÍF=–ð¿»@šœÞ(d;[2ê ÷Nb¡èa¶ªNsã¬êå£!] I¨”­“±a¬në)ÎûxÖ† ›¸îx¹e<•çaß÷,LjÃÛ†=P²iÙ7qÌÈA£&ëeÜläÞ‘u2×7üiP¯Á1ýÇ R-VæS±»9hÍÕ̸Ã[ yýµ+΋)rAVÁFE®Œ÷òÏâaÖ,Ëa3ý(í,gcþÍ+ž{óA<½Îó0 X[1½™T#Ë;Ùôùˆ"ýÜ'—%Œj–´ÄŸ©ñ{d¤g3žo0/e‡;•Úb.w*§jp]~Vç°änZ¦õóÈgÁ>¨Âpók$ññº–VµîH­käøoDÔÓä6j brŒ è2È©î¾#èó‡>7šög%«Dæ¹Áþd…YÂcÊé4n¥:Ï¥‡IÔ·DæY  NlšéIª ó:Öûaþªs q«rÏ þ~•wíÔ¦ æo-°×äô`’*ƒÙZ&ÕÊêœóŒ ¸ÁF¡˜þ0*ßèîÍ8/>Ëä²MýÂÿäqÄŽ;^·mñfíàr—.MŠÀŸ cèçvݶ«wßV8&Ý×ÜŸç^RšX};ÅŽ4£ø…ÑÓäDAøÊ»Ìx´fxé·Ïò®CÝ1q8[ÛkÖLì][¤‰|žmÓ™_—Ì­.%] â9‡ãO5O³å‰‘‹ư™´_ã‡uJÞ³og’¡p3Ž!á {áÛ‹XŸŠ7ê|<Ò¥=íµAgÍȨ#¸=d•$¥×Ýñ-tôŠ'hÄ'¤žUžö™–ÒÄx’g‚Œ €’”Çô¡â÷áÚ¡è+ØpéÙÑ}' „ì¤îUg?Äã3— 0E^®-!b†ÜYtb^3u8ôcã¨ãôÿú;ó„øí¦AööµÇ"wGŽ ¸}¥Ópý}?¿% Ô)GìÚýú nÿîŠâÂóÆUA‹V3\2>×¾–¶eû ÜÅ®µ ݦ…Œ¨‰¼5\±¢8A• DE½bÕçÞ´Ù`¬â¼÷L)äpn<þ|!âÒ,Y?IŒð‹CÊ%A†ß–Ýž¼òýÉûdŒ†¹»äFŠõþ!Û6íÄ4»×i9\èèŸÃ‰Öd‘œõ”3¥17ÂQœÓ@óeu)Šœ%¼îƒhß™JHà¸á@c±” /+Êz9*U\ïäHD—ž} ¦/¯OøÄbúx‰²‘f´H‚ݘÐAPv_áRï4==¢ún7ˆ‚°áÏ> Q6j~ªï™Ð3 75Fðió5Ü=’R›/;QÉö¹ý1*›’û›N0 <7ÿtfÅßørX±m´›Ò IËh%”=ãƒî|O ×) ™¡†¦fÔæ3v†)àÛ«JgìªMÆSX¬ØMŽ.ó¹GäÔ·yZ:ËQÃ3L¤ž” î!PÄÓ DÛ‚§‰Ì¦Ùx4‹rbBJ>‰Ò.aÞ`Žð÷šž0 (ó¢1"âË苨(âIW!¯Ö¯‘roHN?NòåÖÔC?KF‰FË0ÊŠ"WpCÞq¡DÔß^C<;qp•]VÝbžË¥t¿3 ¸`Ñ(éø­Nðó4íí¿Tëc†a£ GTŸÓ!rà¬z]«àÕj± •x>4ïxÞêÕá‡,·Uf»V7Õ]ÊšhùnplE½1“Ó1uyA,²ÉåÝÂü g"T´ÕŒMšŒë¾:oœ×B×CNóå†+6 iÛ(·×Øt;ÇFÎÛ×Çê‚yK‡+‰ ÑèëÛù«4—а*Cº^­4·Òÿíadà/M)[øÒXMÝ”OD¬cÜú‚œÂ1>ê´z)Фâ{‚ªýN:á"ÆõÄŸ™üvhü7!zÜîaU¤Tã”9hÌœÖʆWg5’ßÌà˜Â€\㪨S˜M|ãˆ]–ë<¼yÚšW›d©Ñ]Å~ˆEô¯:{˜ËfÏN–½¾º›tè)½“¬ð?3˜êÿÆâ?„}>J$|6V?m@¿‹nQõ©É8 >ª¡¶éeYY)” q¼B™ÛùÇ‹ñÖÅâ²Î§¾h‚¿­ïÈ’cn(@éºNb¯Fôy¦SˆVDrçZòÂŽñ®Òð…Škš$¼ a³|VÓ«L¤JÌ-Ý 1ç=Ö Í¸9Ö§•:ë3KXÅ<úߦ]‡¶¯5'ŽI«a«/šEûå¥ :o=:X¹¼ÄfÔã€>¯t­¯¥Vk!¬?ýGµ6C=PE¯EmItGÆ3¡Ú7]¶Q)gUóËÝG-¸¢½ŸAÄ´gÑMê‹Ü¿øqªkeÃ#G€B£ªQr´I ?‹ßI2^À‘ùD×ïxg#ìúAÈHÕÁ 6irÿÎÆéìAˆ‹³õF¯SÈÙàŽPŠÄLh’7S‚ÆœZƒÉƒƧ¥6ªzØwØ.ðѹw®R³æ©á‚<›ŽYr8)Þµ1·”gwYÒ+#¬ÏÓ6dIZz…½­o®!a*Z=2Ƈg' ©o&õaÐÓ ®Üëë¤cˆ:G2­<é4Mqw/;º2½³îÏâÆ-wÒøEĵä„Rv[qti»6v=˜„Ò>j"´^Ž£Æj╵îÌІeèÐêlRⵤýçœ3‡¬ ô˜ÈÈql$6“‚I’7+¨xP‰ÛD< > 1"R  ck¶š…Ó›ï~ÒåJoäMˆ rÒæÐY5uåg¤» ]ðï •@DzØmj‘`aÞ`[, V¥Ô®N-ߨ˜ Ð*n+ô—–lä¡ÎÄIë.ÃRQBàä§W ª†LÁ$w¡n$µ¬nï¾¹K|#òx™Úpë_‘/—ÓÄÜ•ÕÀr~4E‡|ŠÜrJÖÁ_8D€ Ðàw¹¸$ák)/„nç Êô}¬Âfº2î€6 Xo÷Ç6±©MDÄ{@ÅgÄ$W=ÏÖXÍ—ºšÕ[jôè.‘Gà3Xh0Ä‹÷xC´:´ðˆ·‚š7vS “Uï郧Rn¥n²]™eŒè¦ïo~áJaXØ7‘y7:à?ëÄBËÌKƒ’†;Ú7âTf;K¶AòùÎ,¡Óx- Bç%ñ<öÂ%±d!±Ç™~ó“Ð'u<ø5§¸CCaúæPFE¼n5ú/õhŽ)¢Rìm)ñ)¬rƱ4®DêŽÖdï „qÄ»<¶p˜w ­ _¥¥ðÙŒ{ kÕTH£ìÃZ⾂ëˆR·oÛ—kcy+TõßJ)p¾˜ü:޶oL¨'råÅ)isy…~¾³Çµž'•úmbZZ€@ü "Ó¨ž>Áæ7¨Äñ§ãÕÑÜÎu·ÖqH"-ñ©î^ì°Í¯ãª™ÇQ-»œ–9s ^TgÒ•ì„RsÂ÷_iÖÚ æˆU5Αa-Ã/Û§‡Æ«ßJ&«%ÎѾ¡»Â™q—¡TF»IAˆ#¯É_ä.ÚtžˆŽ´ð3ÿ$sbkc¾d­§$ÜDÝ÷yšîKéüqžž%_$]”pYÍ«WQžh[¯IåÁz)ìÑÚš†>?äDÕfÃw‡ÁÈ€±U'xͯþŒ¢HW ÃŒ&’#)•MÐ_ܘ'pZ ÃFŽl=^sY‰Û³FJ}ÕÚ¾´Ë"9ËWˆáõ+"ö;o5s¹:ö´Êç1M‚P­I! Ç-w¢ÅBíöësUØ",+ý]|ˆ€´:’Ÿ²%½ ¼¸3´ûƒÚÏ/‡»¯ZU¶ÙèFÔýì| ää“ÂÐÂ¡ÕÆòðÁ¾­âmjr.ÚÒSô_áÝF—øÔ|öYs\åiúü:Û:BÍ"F„~ƒ³lϮɂmÑw4«Úêo£n„+“u:1l¶¼=¯Ò67ìÜ $übªê}~ ï¯_H²ð‚bãÓ‰j7B—éá/$ç%Ò?gD¢Ó@3¤©Fi3b| ŸfÄný¦ñÓ^c~êµHKš£`ǨÑjªp­ rö%YOÔcŠÌŵ¦s‡¡““IüV6žMhwÓ”›²~O‰}.gJƒãQ|†LR7\]¡@†áDõ ÆlF±ÖŠ©¬ŸÀ?^CÆÁ¾fÝø‰ÒPÈ|oMç ( ÔiGîô^„8âìpoyR;Óç¦ùáAʾý-uþ ìÂ4!wØh¢ù8Í ô–U?ŽkóŽv­:Zôö·ˆÙ°ƒÿr}Ì)[ˆ½Ý½Ñe[Æ–a.)„Ýpqþ; ‰™Ç EM\sÆ9aº¾ä*–µ™íD&á=£¿~ 0óŒØ¬éz™V‚: H¯]OÒÎ!–J¿5î›.Ì·þœC¨8³2Ùýaš[WÎ.¿ÅõÑx&&”¨s¹Ÿ!¶–lPœ‚ËUpsŒx"1 Ç5ê†#œN¨“•±QÊÃWáU«>/';)¤tÈÎéš-¾³±7ò´vëš?oRo›üŸ×LcüÌOžçŸNíÒ-˜ËÊL$U¬ª×@Wí´è„šDé`_HºpXç2,É®}½?A“vp/Á‰Ë/|êÍùµ)wÐ,í õ½6:L³ò™¡W5Óœø-`a”@IÅöS:] yE“Äè^ÔDÃ@ê[ ¨ôã±@ ÞL\zUdájE B=Ââý ¨’ƒ»Œ1¶A#/”uÁ¡h÷âþÙX Gº‰"B+aŸî˜×w½OÑ –yÕÍ©͵/3ü:Å“U«†IA6·!úþ8½êç~ß+ ‡cʸïGGCÉS` ¦Z¸ÄÏPaÜ¥×ýÆáÒ…ëÌà@<,èLú©OÙë*ž:q̯áúoß7E5Ô‹žbìž1FqêΞÒÜ9ªžÃ³—ˆÌT¿_Ò:¼–ÁsdÂÌ ;PpͬÕ.5Í:œ¤áøªn¡í`\h4 ÖFô±TŠc5o©[×줺»®æ>s0Bº/@ë4÷IÕœÞï¾·›Œµ·4±BÛƒd׋ůÐy#»™‹ý1îý•~²°/?ˆ5-KN·öV%Ç * É¿ÛCDòáá¤Â9[<¤™jbèÒÆ}/œcò­TTÚ–‚.À·¥Oƒ”‡TÓýþ|íã5ŒëÍÞx7ÚrCc–?¼^÷Ñj.hþ8hJá^ÌeTw;ù}}Žü ûrä1~9ÍŠ+Î:|SwÚî™[ÒS€úbR:úe#Ô§¹A¿XÉy™Íïrˆ‘s¯ä&/åäÉÚÖu*É/¨)øºÝ«Aa—÷ÀFÜÁyU6þÛ]á™Íìg8ƒ`¯Fö[‘^m’W`¦Õëe\k:Èø³…w×Cθ¹})8èöA,$GÊÚ¬ŸC`Äx°÷lj|ç`@×…ÂT ¹,Žå48Û)¿€WáÇ X›õʲÅÙ‹ÑÑ+Dåƒ.ëD]ê%¶=–D±j Oñ¼¤>EËå‹rÛÁÏ•xÊóMÛÞÌ5B3;¼V1õTDÝe:ÚRîË‘ÃÓBI…Ûñ«[o_iŠ=ùÂ:ÂäìIðâ>ñˆXïWYwÙðï_Ç"€ æ ýôM¿E?,£ºU$¦ é±Cy,‰W‹/:Ð[×[Hiš†™[–¦(9MÛÜ »/éJŠ¥µ¤€ë݈m4’fJKW) ÞV;fé«Úñ³Èåúl×ã=`ù,yŸ–vÔõƒ Ô0Ïÿ}èþ²ÿ6ùÔÝ@± ©£œ¿I‡‘¬ãçg[èl‹ÑÃ}÷“»'ÒKFþ°Â%ô$Ê¢•åÑIë±E/ØÍOÈ>ºþ+§Fõýó=†Î½r×Åo=hãKëݬß³­ŽŽ²>Óev­_b›Lêñ…ýÝíàÞvÛ[tz`5¬ ¡Ô‡R–c ·{,”ªcœgÇ4y„冀 zJ§s­ÝùtÏ€õ¨§v3Cò¶bq,–m¸ ãIcŠ«ï®—-§ŽÙ¤Ò¤]}Ñܽñ )ÂñkDâþ[øÄn¸€Þ˜寧teHg5Ö v¤ë;@<ÉíÐh•*§“Ñ;¥N•`»Yˆs‰Ü§ÅÎÛïjXý é›‚d+’ïÞ“¯Œ7øw†…šßlôãìµ d™¢hihÅðâ;uÊFòsûÂìFf»ñ¡™ád¡ÕØ0vd-w‡žÐå8ù]«ÉF¹ásfovÚš§{˜³ìÌ10=>-+Ý/%ÌH†/ÍN”ã!3G;Ýèi,+&§d©ÌÚ %Íj‹f˜_&Ò˜y]¡¿ÚÖ—†Â•"‘/'x´âzlšDX-ZŒbc\Ð{â‚’ ØB¬³½U?Ÿ :f$Å4ÝcÏï?’ñ"6ó4¨ú{OžBÛzøí#ë2žŒøpáßI™ÃÀ1"Rãtõž±&h²D*MI^Ü‹´ÖкL«‹";-Ã_[ßï"´¸ßn±M›<ï½ÙÚäø6ÎeJ°~ê°JÖâR©’ïÂ;j‰8}'Åþ¹·„—i;#-gZuÜünÝÞ”¯ ÐAÍ~®†¥½-¼!®có[$¹Q†p”‹q:!-Rï³×µOú´ø›1Ãéàû…öÖ““‚U#ž+àÂÓ.ŸÎuA—ÜEêpýB]ª¤ÀdtÖÚãžö‰Ga/Š}êPu²Çß'ýéP¹¤öó¶°¥d×µ=$À{7 oÓR\½å4du&wÝuD]E E°õAdÃÕ âøS¦Ž|Úœ`-¹gPm5ø ˆÓ5Ô¨&ÍׯR/É)HŠåfÈ#(‰–Št2âG¿YªÔd8M²õCmÛQš'‹µ{|Þš±=-ë~þ÷ÂÊ)Gª¶–kR—zMÈ*´ƒÖÓ ¨÷Ѳ[ÉÐü {·×u™™Öãc¨®Ÿ9ëÈIn²f?“.‰›¬m‡™^ÖC3¨2­URZkîŸE²ïÐ ´hµn’ÂP•MûÈòÉ—MÏ7¬€axÕPéµe(¾|°fèª ÑBj…N^>‰ï-¼îÖ¹‹¤TÒÕrßöš·¨r§÷îÐ,ÉÝdluŽa%’üÝ]Ñö’ꇆSú$OÉlìn…Á!X’ŒÞþ¦æƒ@°:>O.Ûc.ž©ÞΧ_*篌v»°ë ªÃ°ÑUªºçóc5ÖM'󔉨î5ÿ.ýJ‹5ûzEçyÏÅF;÷IÞ;”»Ãæ îx4ÍFZò.GXIóå‘·GÈÀsëZqׂãRýpj‚ÿÇÀõµ÷Wô­|<7¾‡¿Ôq¢¥ÈW{žw­#NËg^cÄob65¯(æH)Ò[‹Ü\¼è¤½Uv)#o"9íY8ÕmØ«FZ7ªÖMÏ@÷çOñ0£f)n5ú)¹õHUlT&’+—BàÂö¨«ßBun äË…âQ…”n™<J˜éÝegœ?ÆÙúDÐ1OO¯e<¬4‚¬ø•H1ú6öáj4]I›‚5õf·±©¥[ùLÛ¤°äM4‹…Cæ5K£ç¼f\ HEÙ?c(t/á5ø Ë9÷öÙÞC@ÃóàKc_&XçÓUØ×ºÙø›?딣¸W‹_“9îef”†Š­ÍQ‚±fÚ” Œ‡ùsú1îøqwµPïW„sÎ'÷{—ê@y1,êþþΠ`‚ôd‘ønÁ‰¦cƒÊ[<ÜÄ[' ´0³R3)(V•ói<%¹¤}ý‡ÍWYs hSËs{ÛÐŒµ 1°_OÄ8HÈÈ_Jø"ÉÉrû+¡þÄi¿ka¹Ô_ <;äY¼‡>£ØÖ²_QUK(÷·gñ,.Ô ¤¼Î0êÝ™ lhVèw>™SECaRVà*šZr4uÂ"áÜÖŠ–Tû©PiDy^Qøî#gbÓŽ%†UÊ•¸ÇJ(“cm﬈ZƒÊ8+G$HDæÉBô–B/]µ_SIpÂ`?×H™\ކ£Ù’™Ÿrì{<^7Ý~ ,±o á„]IÅÒàžì¹öRpN ÎŽv–òø–_ºÿaº'«{Ln)ˆKÍCªlë‹'Ó—«­s¤«|¾{Ûýü9Z(_Ö”éè—_Ÿ+÷mg‡e8âØøÃ?Á2 `|ºZÑ_¸Ë™Aà°¢´T¹ƒk߇ýâ{ÄYzQ×nÉeÂÖä²#¾?xÃ߆Ã1«PC‘ŒyçZ½˜Íò@7l˜ûÝÀ­Äû¢r¬*¨1G)ç€ê#¨èº–…ŠúÊžaå§SQ“žÎ[K9oâ,§‡ %ù–™ß#ÝîÑ<Äu<Ì-ЦëÄa>õ†€áQhåõzóµýÈ‘Jù‰c“”oça[Úœ¸ùÐá—»ÚG<7XiO.^3YÙq1ûƒ/]¾Å×%%és_ωçwr·2ëµmi¾[Ä# ,,ü ‰ú9Um¯ø‰™£ËU,ÍkÕ¤4•ÍŸˆ9¿^óèÚ"ú½3¨Ù í?Óñ‡?+ë¥$¯éx'‚£-¢2'ºsXÍò§K )~+ýÔct’ìy‰í{4z3žN¡ÁcÙ«û~éý‚HâÇVÅwƒ™œ–‡6FáÁ¾ ŠbýŸ²w‹>Œ>Ì_ko¸âÕ0¹–¾¬k…@ÍFµ¸³T4# ޣ⟠qJÉn‹ëAñ&±.²lÐC·}ªboîúu=*‰;"Èo¨­RC‹SjÒ”‚$ G ÖøihŽ{¿@Ïêåó'Tâ·y/ó® R£ÖNˆsÌŒýYð˜[ó¦°°/héNoVB¯³€Ñs˜ðü³Ñ2è¤Ð;­K­‘»¦uâÖ_‘ M&EÄ£óÎ-²+ê"*ÓýWÕô–Æœªiwic™•ß’N{ôý5²ÍŠež–‡Á)-‡e§ ÓB±òqñG³Ö¢¥oÞ¢"(íÅ®úG›nLMCØô^ïX’dÉzîƒg"<è?uúIôùø—x¨æïÅAÚ\cÕqèæ»0r¤)z û¾‡‡Ëîz4¢BØ‘˜"¼/­ýð} 6üÌ÷&ˆ\“êQ™h“Þ^A)ÿ}«ÒÃo¬ÜLC ;'Ùt?/K»21]‰5îAœ[ûÙ<€AsL1n% ZÈÂO×»7·ý—Q¬e2¸‚&©n¬ Aì:Žtºœ;K=Ù6ÂéÖ:îp Ò¡Ó̈Ç%¬/À§p† !Å7Éë—b©~ãj>K&Ù‹¤oÉçN©zpÛ)—õuÛi´ìúåÇãÑ"Ìq~‹—™Tïö”¥ÌþG«Â‚!§"†[j]hª?”µô¿ˆ×\™a$]¬IÙôò8q¤·[--!Tl®1ýZj ~”)Wœç\ÞÐ:'å๎ÜÞ«­4 sJfÜ…¯ØöœÍ<\ Gt/Äگ׎X㜛¦™Oឌê°Mä¢Tÿš äfÐ B¼RɘŒÝŽ–4nòe⺙YC*A²ì‡ô[0Ü‘°ˆ 6íøÙ™Jl205רôØsŸîð*´ —tˆ\×XA›ÚÉ•ÙՉȶf­{‰¢‹½7ªãOU‰–7>¹S,ë&³ÈïŽw€c‹ˆ®~±- ­3;v“¼Ö×ì€B²Þ˜½s:à@KðR¼^ò®’‡ e-ÝÃPŠ¿í¾¾^m"ƨª9þ‚Ú Sl®Û¬þÕ¡›„M%]>ÝÍKë+WA3`“¡¹ä`íœÜ&Ù6ZÅiòmøÜÚ@>«÷¬Mà2d÷•)„v±lûœr¨µcÔeÝ£y£Z€¢Øñ@е°œ¼lAëî5öÁÅG§"\ÞàZI¿€A™MÊÇÂ:ËB†ú¢Ôï2ÝšPõȶÞ=O„´å›¸8‚€Ä×–¡ª@õÝ`õÁa³~p™W*ŠD$U(Ž„ýS§º»‘lò*-}]“ã~>î‚xo'õ¦½ì.¬=hîK¨ÅÐæã‚‰8@%.*ÄÛ=D‰»»Äõ"È{7 O3½V¹†ô¹Ä0A\@—mTbœJ–¿¯Ï½“‚ÂT¼TõW£w6j AÈÝßõé+€`.4“3}S¹_¾S’¼ è• FPqzØÅ:}(E†ÍMÁßÞM;¿(Ç`*æï3²'xÚ(325F­bS:»œ‘ICÍœÜä°j‡YJøó bWß}é Œ%6óâ1|Ã-ì wÝ*nû~Ÿ¥§;ƵrþÊÖϱFÐ8daÇ—S|Mwó>dt8tÖiDY¥Í÷Ì©Ñ45<Ë8ïÆwô”ün¥êË"¢ú!ëO°Ï˜öüS”‰Ü¦³\¬®Û=g¨o¤LZß™ºï.$ z¢'þ–”8>ÝlQa‰–s×v }&»#ãÖ¢dšÛÈhíbö¦V¿f?1c|üëg#çä33Êôȹªº¹+wÌSJ¢¾(ëvšcCžàÉŽAžv>œz‡\>izÔoQ‚2éšØçJͨcýa0eôo Ú÷×IþÌV? ¿¹ÇlVð_Ͷèâ<–ó€ÑÔ¨ð#ÏÇÞmæê 4ØùØQþÍt´o»Ç_‚e'щ½M^¯X4ÀKçÉ$b¸@ZÞérqYZgÅž¾ÍÎIl¿âPmœ¡¹z ¼aÍg®å™h¦çjÇOécÐì¹\X±øRw¯-诼lÁÆÝncÓh]ºçwÀVA,øÔú¨åÃè[ a0k%]¾;j™\ |=@õC²K©è¯néôï­÷wHVޒçQ·ÔS±cLïiw†²¤Ù¢oüÄnÅ'8‹á¡¢‘iº6$Ï&ôjó4¢¼aAâSgL÷W•bžxJ&i}ÆœiÁí`>;j¥päZ$ÿâ-ØÖdê¾*Ó€- y%.9LÃèùhYï\èôCËŸ¶»•š[1PL;À6†£0¿#î!ƒðyzlº—m°þvZ2îÑèCÈi_^~Ó^Πü‰2­=´a¬þ ªÜµæ‹AÀúeJ1]±'µËŒûÙ ¹0+½ÒtÈÌRætá}c«³ÈU·1êÕâÚíÏLWàeZ¾[Jïú y:Ò¦Š1|i‘¸Ë´›ÃÀ´ÆÐ~!ðzrCÜðp¦ƒN=ÔqâÈ÷`ú¡†½ó[dzÅáìWÐNÿÞ|›LÖ£ÅD ð6.Vü6~=¹•ëyÕbž‰P–о-r2R° ‹‚€Àø¶4Ï: *]†–*nP¦:Û £+Õ’¿4ůÜWï©ûëÂ…NƸd4ðrgée”=¾/T!53®Cͪ㠌ù™m”œ‘I%*9úøÛÖ¶Y kSŸ¡_Ò~ñy 3õÓ‘ƒqï«C10uà¯ÀFMˆÕŒ3­H²tßdªøGþŠG RôÑ4 ÉMˆä¶°?“4(£ýÂ:FÐðn4\Ör²¾¥`þxí”8)¹Ây»úV÷Z½-ÝFKÚœùýÔyD,PžöRqX ‡^®‡mï÷Ñ(}BÁ6DWä^U]Ìv®&C[Øp-Yxg¥¼Ÿ}Ï’c¿ìeŒFšDuÜœaX¡èóI9Á=³ŽÄ9#7)†‡ƒi|ùœhô¢Ž3‰ºÓªæ¢>:‡€ ×ÉÏô(ýý]òM–<Œ^M«zÖÞKle6X‰o|FyÂn_ÞœÝaÐ̳ì±r,¹¹õ{/.ênL\[äW;ÌIs3½.æâëæ¶T«ÒC`Ú¼_bǼÌ'´Eú»ªýʺ[ïÀÜ®À;YµåÇI´ endstream endobj 368 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„ Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­ ¸¦Žìoƒ Êç ÁÀ…  Gb .îH$dšhé Ðpäo°îo€ ðÏåÁÂà…ûã}üå BQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°P à c.ç=Šœ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ÃuF¢<‘>Kö$Ìþ¼ ˜;ZÄ ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØÃ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0 éâýoø¯‹¨˜ikê« üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤= xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬а Èÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚à 8¨ãoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.à KõÏ:ÔPì|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(% äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú ]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€ Lécgúr Åž,ôÓ×Ü2ŸÝá žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë 8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†à Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ —Ö}¤ ¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ +¾)pF¿œ'‰%QcÌ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ ?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…f ìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï– $U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý: êw6‰D?~©ôرƒ¥ ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê ¾­â/þWûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ ®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­ áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸðO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰ fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxk Ð4¾Ýºù›ÖÃ㯢3Ìå7© Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒ žíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT 9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­ 2N ¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg ´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{` š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ §˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F ~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ ©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*› ¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š ~È 7W g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJ šâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää ¦Å =¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº —Gõ°·Í¼/ »Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 370 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚtT”ïö.‚€ C "0”„twHˆ„0  13C HKJ*¢€t§t#©tç )¥Òñãœóÿ{׺wÍZß|{ïgïwïw?ÏÇÁ¢«Ï+g ·‚(Ãa(^> @AKKM ñ‚$P”#䯛„Â@Bá0‰ÿP@@@(ŒO„Âà´à0€º«#@@ ðPB@TâÿÂEÔ ÅP‡Ã H¸³'jk‡Âó¯W˜ ..úàw:@Î ‚€‚A0€eqœ9ôá`(åù\’v(”³?¿»»;È ÉGØJs?¸CQv€Ç$á±ü  r‚ü™Œ„``EþñëÃmPî €q8BÁ“á ³† ˜ÃújšgìXóààïÝøþ]îoö¯BPØïd wrÁ<¡0[€ ÔÐQÖäCy @0ë_@#ŽÉ¹ Ž + àwç €²œ„ðïxH0êŒBò!¡Ž¿FäÿUsËJ0k¸“†B’üêOŠ€€1×îÉÿg³0¸;Ìë¯a…YÛüÂÚÕ™ßuq…¨)þ…`\$ÿñÙBP ˜¨˜0â€x€íø•7ðt†ü ürc&ðñr†;l0C@| 6̉䠮¯ÿø§E" °†‚Q+ˆ-FòŸê7ÄæY>ê0b¸'þúýûÍC/k8ÌÑó?ðßûå×ÕSÓ4Påù3ñ¿còòp€¯ 8€WPŠŠD1/>ÿ,£ ‚þmøŸ\5˜ “ñ§]Ì=ý«e·¿ àú«nÀ?‹iÃ1´…¸þÃr3 ŒyüsýwÊÿ⿪ü¿Xþß )»::þsýŽÿaÔÑó/ÃZWFZpŒ`ÿ }ù£Z-ˆ5ÔÕé¿£j(F r0[ ›y„ù€ÂüP¤2Ôb­ Eíþpæßð—Ö¡0ˆ. ýõqÁdÿà ì€ù€ 1Äü!1jCý^ã/‚ÑÓ?ûP‚áÖ¿„'(òB @ž$˜Õc,€—F¡ÖßÔðóÁà(L 3³ÀŽ ùµf1¿3f7pë_~’Ô»"˜ÃSsð¿ìß ‡@< `’é 8øQ}EPãI™ƒ;ïÚ$þ^Ò‰± ïPö3"T—ÒˆÅrœ~zÚŒFòt§€ò3ûmy—“Œ…Éï^èJæ*Oá#^få [f«˜‰ë#ì±x¯cFÖ Š:¬¬' òL]Xºw#n¶ËXÛvésPx߫蘊wç¤ÎSUnÔnn-ËKÓ¤e7ÚYyŒª·ê5XùAw/sÅ):p5Ò,,Q;…UC²ù”$νôæRO_ïeçݶu·€µ}ö—(J¥G½ŒŠÂ„¥FsïÈ/2?¸m§PyY©Ü’ݶî*\äN8©Ð>´Cn›³Üwę́¥ë$ÚÉÑT‰{‘’Õ';[ö=Öl¢(¶@í!0Ô"ãåçQJ?`uú2§/X^HC  ÝÕ¢…#fý"½ú¿.oþ ÆywU\ •–Ô@¼¼4äeÚŸvAµSe|µ[)\ç°ý™„ÛÀäÈÊ'F3wbžqd¤N¨F}õÖ ‰5,ð‹(É#¥N­Ul¤û`vk,mÂÑŒúH¶0Z¼€Ý»Š_0+>«Ê¬üNŠ÷Ñù–@P¯ÖÙ'ooü­RWHÒͲhŠ˜EÈ'B³ yߘÐkÈÈ’œë¶²jçéýºr±©’§¯Ðñ‘ÆÕ³žù¡¥8Láo–äŠ6e7:ö¨Š=)îÖh“ÉÈrh™Ô§'§Ó0, ˜ó7’Í”øaõqúªÝ¶Q.å:¦›2*ÎíH°—º®%³Aï yÚoïEþVd+xÜÇEåG Ѝ¸žØI£veÞ ò„ŽlyEªšØiû±s蒥Ƴ¹8D'änLv>ø9¨»«QPFF}îåB×òÚIÐ =­ó°®`‡ÞbÑ[‚ÇÏ×UÔ|“ˆÔ(?LJ”²P=T¾êÆÜtM À)õÓ0£y ‘y7{­°Küjéën¶¾¢ÀyzC•‰På™ÃfEÓg NC ·)úøÖvFÏ•‡Q‹Í¾Ý…ï±[¥¹å è¨=M°—¦Ýë Ô›N­ýè9ÚvyÖ®"ÞV´Î`Ì–ý#Ä,Z&¹§¤8E‹±èà…á}Ó冷QOž› -çóV¢E\ۊǯê½È®X÷’{®•¾8ͪû7›ÞMƒ©¥S·gíõžtÍÇ¡d ›ä(å±5†Ôðûë&twmáxÍ ²°ÎXß'+ðJÉ£C ëdîÔßÜYç;±Æ¹m@Fò¸Í!7 w÷ÊyõÄ)Fy~£‰‚½ ïd!ø½$gdÜ–NZäÁXPéWÜØžB•ªºLÆ·œSãy»:¹ŽDvjøü‚ûq†Õcœ/I/}”D›÷`wÖ±c±ç’™$ôà;=¬X7ãŒâ·Ï\]›8“È%A±t|ã á—>;Ñ5m Qûçéã??-z’Òã+}äRê*¼^pzmxÖ̳œÓÒÆ!âìxEÄVÝmÊ2ÓŠR§ÒÖ5hÜòãZªØÏ`Éæ—]Óêï0×îæåC8àBïXK“¿œw§­„äSP=ÑÍ£’6ÊBÍR–çOƒLV’Y°EnkD ê¨ØëízÀù>ºã¹rLIsðT–KXêë±ù i|O¾XI•z€&lC¸òÚ·¡gêXìœOÊ‚ìÌgÆ'[CíêC¦s& w›Š?a¯µI“ܧ üÖï WßEMå:û§þ&‹›ð4½‘ª9R#;Æ~ÃWºI8aFéæï öüJ×*Öíסsån§–cijË?UKûC¾Jn®ë¸;Ç.§½âÊÑ­û ×Þñwã‰ga·Ë•Yº„w.¬$¨†{enj‰û+„–É£gnMÈ– ·7Æ6\*=*¸A˜Íkç•yâ_×cƒKÓŸG|öÂú#pú*GpiKÚ/pûIB6˾&õž‡±…­gÆ7q1Ÿœ ¾•‘Ì—Ç~¸z\Á”| ;âœ$.™Äµ2TÄÓX›¶él¦+Tkû6K ʉËÀظI…#üPŠ7m\âÛô<«x.|~I "Šyèù` Ûϼ8…ã éè¶+G9Þ,KN)ç1’‚…&DŒf }þÂ~p1†ýî.Ń缒1ˆöñÅBíÎ =e¾lÛ÷lm±»–oÏŽ®^N¼xnõÝž <:.‘àëˆz”/¡– ô§ÛòV Rž±âµôö)îŒY0•çüøåÓýº„Z‘*•»Ë¯”íªy%ý̈»ëÀÂïMüšý3ƒ§lW+*)F Þë…c=†V™f=¨[0ö¨µuo)c|qe,X5.¸ÏÏžL+ÏKAú˜WÏ–öxw¶Ãm—8 Ä5ôÁþ s7.Ñq,àZûÕ¸È 4¬@OUl»úã„!c²©ô'aIð±ìÇÛ‚â8POe’D*3%­A;Á¶Öù·g¾œiMÞºGI5''xÒŒxô#Ïý£àÄŽÈ}Ç-ó^ç?dQ#ëâ%x,x:îÄdJ,{¡4¤ ®ÆV#Jˆû9-uÍg$h7·ËÛ,l°Y«÷—±ˆ’<Ún$gñ@óøWd|¢æå–ùW-\³P–:; b:8Wú­~ñœycOßLÞm›‘­šAúƒ™Éߢ­=>*“Ë'![0@OSº@yê¢ñêŒL¿g“J^u˜B¿tŽç|P_=BõM6Æ¡è:FO{%sýQ†…1Ôäýé±Ý‹1ÙU‰3׃¯ÔC]†¢%øñyTãR~SàµË©‹|¸Ø¨jÒÓEwßœxÐAú"©™ÝFå¡ÁN˜ÖXÜJUÂÈ,)1•s¦9 ÷ñâö¬K( c™dBí‘ʺMo[»U÷ &6,?ÛPqákhpÙnãuÆWo¦6ø®’ï2¯m0‹z°‹¸0ˆE’t—(8ÚM‰fîÃK7ì¦5ós­ˆY㨠|{Ãᵑ¬„P+®ÃÚÚ´ýÃÆ‚N¥uø š&Õ—·vÑ U²¶ííi–2ãÓÇ7¯×ßqd{sˆ/¤^å”W—ã ä¾²OÜ,jgaLX~)œ2e$`yLì‹;oÅX/*ŦnZñT,°òöŠ£¡_˜"F[íªŽ|8W&4D¤IòžÕaê3€SÚz¯±¡.4Ínr2Çc‚x'òÌoÙ¿Ür<ô:qµÉë+ã.h$»à8*†ÄT7©Øœ|+ÑR<_ ²00¸o±Ä®Ï?*-ÎzÄvSmҽȃ¥1^àtS²tw"ßV?ôHíõÎÍ_Ï”à˜s _ &?£YðÒS¨µL¯ô Öë9Ú‡Í;µR™P)39Ÿ JH&Ž¥íÕùãÄl7_y_Ó=tµÈK -RÌ‘,•u~k¼ìp‹S×ó¡hÿêƒRWk5ÃáÉÜçê!)÷F»¬ÂmìÐç_p—Ê©ä†m’‰TýµHãX]˜—¼o¢Q(`áÅíl?éèIì~“ H/°ÇL©Y°Ôñ— á0ö¼Í“OÌöC«<ÃÕv•ªÐëx”R©ïðä"AF´RSÉé#Š€Zâò`íªýœ8ÔH”¹HíŸíÀ=~¡tQûÕï§bãëš!9““üÜBëå]­çþâÖäí ï EÌ5É'm`õêd|Ã[&Gè”×﬽òôn4lãÅÊ|¤Þ ¸ ¡DGŠšÒ•ï ”æS}¥å}öÎ kI¢Æ­W ß­ê¦ì~$È"!õðòNWÆ…1ë[5½¯Ûã Q^Sj¥›_kdóŸÑXò¯Ê¡5ÔÕ²_ôÊÀ}à¸dÉ Dý4ÚÉM/jÖ²vì”®”bÞìbl¿ðÇsy`/ËÁ©hWTüóà~W_~°0o"Ëè¥Kèã³®qxÀ‰ì3©C—h5¯_k_ÕðÓëü+¡îÉæÁèÅsjöWЂ×È|~^FkdÓžnBËÜx\Û|mö çä½gßoåWíLH®f(Qáô!XÛÞÝÍ2ørÖqjZØùAß§réŸMÕß~91"žžXZ)"»³'즶’(Ir.ò¡P9 òî „’©†.‰6M?%•àG"[!ÏVÉ•¡²Ò’“HNæow oR_@‘7|xÅj(AÙ”yZbEã ùÏ._:tϯc/œöëñr+/ªm÷òœä»í6’ﬕ)Ä[rSþhwXWKôÙr鞘Ù*’¡wÍrµa˜ÒÆ›ý(ÏÑ©„U‘S£YÊŸ‰Rág0«ƒÆPÁƒ¯e~ê¿€J¾GŸtb×7²êªóÄ ËžXÅž1áäy÷ô¦æ&pMOÔŒµ6¨txãÉ„×tô·Í¶\ýŽ¯È¥ý$’ÂóÚi48”N‰ ój»a7gUR‹§Õ‡Þ˜¢7ûqÇOÞÞïƒ<ËŽü×Ú,ÓíÄfÞÂ(Þ÷’rôc¸`ï”\£¡þ›6|iÂ8­6`šÛ>Õr%XœU0$r|ù º]JÕe¡Íq–;òMÉú6%ïŽëåÚ“ ¯äÊe¯´$ 5ïø'à“R~%ägùxiÇØÅTæ¨4ðbñÞ´?ÏaGùƒÓ\á‰Dâ€GÊpV’¸È‰@Ð÷ðݧ—ÖÞx°ÂÚÍ¥ç´ï^O"¨øH$—éžg@©K3²aO}DùãØLÆÄëï=„»|OAÌÇû/5ÑÃ*wv×?JT…o›Dç~2Y"¥–žòÕ N{Ps7˜ì>šÌ¹ÚÓñJPÖ·7Ó‰t-BÃ`3‡/NA­¥Èývâ§9Õ=Œ?{þùÀKPºe|sL…À¼3ÙÄrwz(Š”ú\ ïÀ>¿'äË–ïƒá®ü’O+JÜ Ò6 ÷„.û¥'vä°*ëԪ͓Koݸ=¢éürevy—ÛÕÒßðÉ>.$|N2ˆËr!"¾b×~J¶²ªG‚ŸÌñJútÈcD]0È@³zþ°´ <7¹+†SŸÿ¾OúXã¼-³Û´Ó©ùëÃbuzåé¡[ªŸM•å]ÆIá&$O.NÑGQem㸻b>ÍLé7JV¯%kò¯‹qÕÚËTÑ.¨p|óÈ×¹J4¹ótfIÖìý-‰i|®ùúЛô…Ì úJØ?Ó'ƒ€’`Uœì˜+Š5¸Ü¥2(ö¡ï#O’±q»e—Í¥¼9iê7ÑÈ‘äøœ…®&CÞNÓÀÃ}ŸQÈ;c•j.g"¶V»£Îjöô¼-eÿUN¹µoùk@ê] o<È›‘ÁæÀ¹Yã¼ì-x’ɾ‘zBh0[¤»¤XA€Ö7®ND_§½©£üBv5> ý|¹“‚{1ËH÷Ö$Ý)¦³”·QþøKœ– ßÍkõZ2Øâuõõëí6ƒ0ÜŠÒ½§¨#Â?SÌÆh-ëÎÂ`±KŸY¼‚öÂÖÑTQòæ@…݃–zþŒ>/·šÁTÉe¬´ù J6JùÇæu¹U¥êëR_Ò])Ò®b;ùC×»µ[ÜGšb†²Ëã…ÜŠ”Ó«3ý]nGo9 T<«xrzç.Ø=o0º?ŒëÖ‹ -q¦nߦ€.>Ÿ¤w4hÊUñ¢ÇAÅF¬ê¹ž;¹Ç†Ââòá KŸY§jòYóf5o¯±®"öAÈ÷ú¹™VΟ²%°–öÀ/FU%W$\7F¾s/W{œÝsܨ˜¿/ýi<¡BFk›øÝëú†ùÉÚ)q»bà£H¼øæº,Ÿt)ûGFÕc…P¢ûŽRˆË¨lN6J&ÐÓ¤;4@áë\ÈJìsŸ;ŽV¢(û&jµkIz“YÙÑ©*<\Qsx §ë«œ+¬þ$FãV~ ™²feDÜ=ì¸a½„ î§Œ<úÒ9ÍÅÐëÆŽÙDæÆÆV¶{«?îœѧ29ðuæñ÷¤ñµ€j©j½'̓]¹QuûéäjLõ(:=|îÍ(rjE£ øEéT){Qrøè~QTøCÝ·Vá ŠšÝ?î Ï91˜&Èîè¬ß9wŸ£v/Yliz¿WÄØ‡&‰«ªn½µÂCxå†î€º‰‰ˆz¥si5H´¸Â.ïè-|è£üü.&Z|ÀÌÌȺ?õ<µàêVõp>¯$p›ÌË–çÑ&N~ßøÐee«âð/»­Ö‡­5_Ϙ›(®Ñß6Št¼%Óœþôµï »WUzûÛM¿qê:w¬¥4q¾¯òFõfÝ_p"9—ƒÒ±ïRV‡h¿5–/霃–´žI¹‰9UMu1ë°}ÌêËJOTó^ˆ“#LO¹i KiPÓÐÜeÄÖxëñá‘ äÄŠ'ùÂ3:Óž§føõØj¡Ë­›^šL!Å'÷×kwˆØ½‚6ÛßdÞ-‘óe&ß­DjÛÁ´iäU¯³Ž¨Rù¼­ð$R}.®CÙÏâ¦*V™±&Î#»¾à´'á²Ï»<¹zÄÀðé4—-`­Q¯5™OÊ‘ú$ªm};“YíV„côöíCö©–*+rd]F%©5).Ü€jwØ{¡Ê3ÒÑ+ß´§ï°úPì®MëÒùdòÖÿ¬ììí4Ôq)xyóâÓ~o ïlÇûÏ}»{í‹)Ó”Û‘?-¦ñ>jîê?Nbû”õZ2 &(3Œ¬ç‚Ÿðz€+G²)Q•²Df󺈓Ù§PM?û=âépYñ£vËGW~ãÎòDblñoÉe«(QâgÐÁ"CVVÉ– ìK0]¤¬k+¶íMò”|*_i)Úf4þl¹á¢jP³F6ä–Zñ² Od9«bB]ŸÈb[õfxާü2ž3JëtI3&c†ükIq.‹é=Úo·ôÇÓÈÁ‘t3z\–7«~0ø‡-£¶s¬ü§Þ˜ŠiBí†üõÝfêñp.»¿ÉLM½À·Äaß+i}4<ô½HY¿u/LŽaŒùud`3U׎%ùpÿý!*Ÿ‚Ì­g5_ù[Œf»9äx„+rßÊ™®îp+èɦ*êN:Ý2…î÷OÝ¿014ÿ¹:Aì endstream endobj 374 0 obj << /Length1 2737 /Length2 23687 /Length3 0 /Length 25221 /Filter /FlateDecode >> stream xÚŒ¶P]Y´-Š'¸9¸»»» ® pp· !Hpww Npwww  Nx'Ý};éûÕ{Eì1m9ט{CIª¢Æ(jfg”²93²2±ðÄß²²XXØ™XXØ))Õ­œm€ÿ˜)5ŽNVv ¾?ÄÆÎ`›„±38NÑs±°²X¹øX¹ùXXl,,¼ÿhçÈ0vµ2(2äì@@'DJq;{G+ Kgð1ÿó 1¥°òòr3ü•µ:Z™ƒŠÆÎ–@[ð‰¦Æ65;S+ ³ÇJÐX:;Ûó13»¹¹1Û:1Ù9ZÑ2ܬœ-oN@GW àWÃ%c[àß1!RÔ-­œþ¶«Ù™;»;`ƒ•)äÎp™àÃj² e{ èï`…¿ÿÌÀÊÄúo¹²²ý•lljjgko ò°YÌ­l€e)&gwg€1ÈìW ±“8ßØÕØÊÆØðsc€”¨*ÀÜà?í9™:ZÙ;;19YÙüj‘ùWð”%Afâv¶¶@³â/~VŽ@SðØ=˜ÿ¾YkÈë`n23ÿÕ„™‹=³ÈÊÁ(+ñOØ„øÛftp²°°pó²€ »©%ó¯òêöÀ¿œ¬¿Ìà|¼ìíìæà&€>Væ@ðD/'cW ÀÙÑèãõ§ã¿‘•`feê 0ZXW›æcðå;Z¹tYÀÚc°üúù÷I,/3;Çïð¿î—Y]VN^M‚þïŽÿõ‰‰Ù¹¼9XŒlœ,Ö_"ã?øü·ŒŠ±Õ?4þÈ•™Ûxÿf Óÿ0výG4ÿ,-࿵”ìÀªh~‹\…“Åü‹õÿYê¥üÿ)üW•ÿ›Èÿ7!)›¿Ü4ùÿ?nc[+À¢uq/€¢x @ÿ;T ø÷Ò*ͬ\lÿ·WÖÙ¼¢ ›Çhå$eå4S±r6µü[-Û5~m™¨bçdõëµ`_ÍÿòWËÔüêpKò/¼9ÿ=RdjgökÅØ8¹ÆŽŽÆˆàK#N€+xÍ€î‰À̲s§ÀíùÌíÝ('€Yô—éoÄ`û¸Ìâ¿€Yâ7â0Kþ‹¸YÌR¿+€Yú7b0ËüFìfÙ߈À,÷¹ÈÿF`. ¿˜‹âoæ¢ô¹(ÿ‹xÀ\T~#0ÕßÌåíoæ¢ö¹¨ÿF`.¿˜‹æoæ¢õ¹¼ûÀ\´ÿE¼`.:¿8Ïø_ÄæbìVš•“õïp1“ßLÞÄÑØÔþ4™;ÿ¶³ÿkÿ{½þu€O7ýq‚‹™ÚÙ€¥õ,¶¶¿YüÒ³Ù¿ܨ™±ã`ÀßEÁÀÿÊÊ® ´53v²ü-_9.àuþ·2˜3X‡6ƶTÀü7ç˜ÿ9­~ŸËþ ºþ&ÂúËð»>ç¯p;—?yƒ,þ€`–¿ r€ï×ÒÃÞú#l³ú‚;}ÿßžõ<\›? xòt~3ÿ®Ì N×ù?¸W»ßdÀÉvÿqƒ›±ÿí³¥Aÿë?ÖÿJ€ÌÚ,*;³?Ê'áðûn~! Ó_/•ÃöËhç 43±ùÏ1ì¿ÿKl\ÿxþÏûõ¿Á¬¬à:\+xÖN¿NrÚZýW­œ¿b€®\'¸ˆø»øo³àÁ:Ùü)«à7úÿà¿þIݦˆKóv¦üAïk‚ZïªE߸1î ÎPîi%Ó2z-9¶¹< ¾J ­JØp¼Mê~½º#IóCd™äÙ븹îÕǯqª-ÞO†1o§öZ'qú'òEkûˆÕEö½Ÿ¼5ý­¡›!;ä(³\xPUr1ïÜz¥ÝkûJWFCæ÷T÷«¸ä‘žJ§#5"ôü‹f)sL2æðÈàœ‰àé0.ÜÑfÜÌ`dM¼ÈÅÐ#úœD²xél²}¾Ÿó\+WgsêħÀ×Á#‚þ1:Eå%v˜(‡»àU\°Ú¿èÞ,P@’…Â´Êøšé-­Êêm8¨±ç‹ëèR;ënv ˆúM?ænÜ—’F,CG2eìªÃpLç/ìÖ@¢Ãvs±µÖÍ.ó÷I„˼ӵ/€YmËãM]^ukCÃýŒ·!I_wº|´Š„û„ -ÜXé$-uÃVWøÒˆ’`KÇ :µ€²X¯–]xž`ƒ¼.ÅX·óYXtx`{ G Ï8³½/?ûTÔ_(µo΢/ظaè¾r)½˜t$]\äã[²K¥‡Ðä¤Iv}ÊY¢Vå¯ÖÏ–2_lVà0I”x(Äns.^PpÈJ÷ì-T…éx¼¿çÍc:Ó¬Ðh‰æÌS%Ý= g;¬÷ îå½1;ܾ)+3À>²Ó¼¿¨p ú¼¥Î”ó©ý퇬N'åiÑp¨ÂÛ¹òSu1WRÛÆ(4-uÁ‡±ÎÂ'7†RY Jê‚%Å>ù#ÞKú‹=øÕDp>ýhüÀVÓ¦|Gœþzí3eúþ 4¹aÛP£æåO±7jêw¹äž›= Óc;¤#S;^6zE½M~Έh›*Ò…©×‚4a?ÍÚÖ5ÜDë– ¿¤Íö7NGaÄÈ_µ±³` ŸÈòK¨Ó× è±^æã2ßo{fˆdy±ž´Qqô¾¾¾º:MxßHøš;ñÉp4V7¡ýšÇ]E€ƒuŽèZÐyâNb …Ÿ+¥¹ÉÇQÞ…õˆý1UCÖ*§Nƹ¢fjÆçÆxþ§¯)1¥Þ†Ãù½¯_÷9”9\IuÓ oe¿æVŸ×V=a÷°l•])ÊÝ+fi³”F¹zqmàÅÏëÝõ ³†RÉØño¡ã3Ô§µå™Våñ¾ Ñv1àJË{‡ŠëˆIg¶!y¬Ð †ÉS‡ô°)³Ìh&UrɪPPØ<=”71ÆánêvâÏdžÂïàñåG¨Ø(-âMªCιÿzÑù[ œ&œ‚¶©ÈèÒ6• ¦Ã6˜©îw0…x†ºãï4CÑq®¿«fW¡¨«¼üp ̾G3ÄÚÿ\&tô³Œ{hŠsÁ¹ŒŠ0¢·ñ"€¿ªÞÎGŠ˜ãr±Èl¨»NyâkŒaVgaõë”±Ó•îDbTE)Ò˜Øá÷Z+Eð¯PeÇ9ÔÔä_Ìi AEÁ¨TfRÎÜ´bhåá)›'<é ¶ÈÔÜ!“Ú|—ºSÏ1yLŽi×ôÿlCccQÙ•±l2]¹FÚtX:—87¢·õ|o̡ʊ[=ê (ãÝvÐ,h*-Ä:XŸæ:™}N¡zÆtÁ¿ªÈ;Èç›'TÈôÄ×ÿŒ~QêˆV[èª$Ñ®(ÍÍK!«`õ“*NtÑâÍȆËò£B””rý•€<ÂÞ±ÊX¾ògQQ¼a×8¿õi›\ªƒú;í½…:ê¥q­åɽ@ªÎ\yÀO|ìTf+«¥i“L‚nqDž^OQ™‚¹,vHD¦+Ýl÷æí5gVQ—ŠÒ d{Ñ &]Ž<µE6·xzS€sIþ™Ï’Pb´f ©,…”Øw·ŒŸžÛ^/ßÍC{[Ñ`S²rlõ0ƒ0Ëpµ9Qºþvëâè ±(²M#æÔ«Ñ* Óµ ýÙÎÙõÿƒŸçPÝ%¢]KÕF¶;ô K²Súü >†«”ûÄÙìaÒÀâ§mLd½»¦Çúeô© 2}rO_¼¤"{׫.” ¢˜”›Å¾b&G1ÞOØ &mñ qÖ‡^çR3òÛbˆIk¥³áòÕÙ3üyßfãlü¥hà#”®Ã !ù7· Ì~–w?žBÆV¼~Ú k è/ÌIØéà Â,…vê,䨗ŽB—4 Ö<ʵÜlê¥ÄV—*°SiëÝžBô£(n#›bgo½Uá]à=щtâýIm´SAŒr⸬uϧ_p2è4óc ¾‘DÎ<9Ý€Hk-˜ŠÃ £ÄÆiŸb–Më³Æm-¸ÿD™×ä%oL¹0 sxL«‡N C¹ÐÈ£4Bõ BèP¼žjB÷)ºÒU+uœËÈC%À™až¢Q`~ˆ¥z­ÒWyî¨*xú·)ó'ºŽiOƒÚ?ú0Oµ€>­_ ‘ Âoµ?ª<|G—‚ÔÌ=¹þq1#Ø9‡&A]S/©£*2Ž&»´éL™·û’˜Þ©[LËÝKÕþ”m9Ê@þ‚¤M=»bÜÝ ÞsIýÎÑov#…dJ€–SÈÁA‚§IA¬9È™LE¬¨W"ò’—ªßX¹0°N3Yï}óÅ95R¨ÊÓ‡_1Î×Èlîóz ÅpÝ>WØXýºŸË÷5™ÂÓÑVôåÌ)«»ÿú ¤³M—Ò"Xr;ìôãÂ. ËDÄ+Æc žT\œ$Ü ×žIËO§áäœxŸ„´iblᤒlFÁ8¥wS5>›F¥ `߃фfƒ‰ìÝì›VÇsøÀ4Ô›Ø@o>>àéQìH²eX#æY9ü1+ä;›°ël+<Ô·ëÖ {ÞAç‘òàÏåÛ"&®|ijp["}…ǽ'… -⡦ï{œ•Rqoc'6T‡@’˜áJÊrØ&€¼¶ñpV"¹a¬`~§âÎñA&8ÛûÛ+­§:þiây¬×Ú˜dìbß9—®Ÿöï¶dôÈfÊtáîXÇSNM9•îxKí…Ø¸åZÄž¯ë˜¡ÏÂ,h¾—¸c«2 : éVnóŒÅI;õ5ùó‘¼¥àÕç¢ }°õ¨¤µªÇs:zß}£U®ÐûV̀識±MDZ{­aö‚v_ §bQÌÆþÙ ÖyØ+ÌÏ-hõoüŠ™ßçoö-åú¬ÅŸKPi~,ÝW}×L'³Qt€6ê,›_ÑŠà78Ç´¤Mx)²Â.sL|møý´êß Ò®ü´ã,ª˨€J O†5\Ç10 ^±ÀŠ­÷ÍÄéâ4"®ž<-–û¸~ÁìmèZ%©ŠiBŠ?´éPµ !(Ëõ›¡í iȸ¯/¸bŽä¥†OlÐüƒo×FîË{‘oXîeµ’4,ÒÃüã_±WT >— Ä[«S7_d¾æÏˆvxZÜuñw¶Qg{× à#HBtˆYèu˜.ðÞ ŸôdW£ï$ÌSaíñ%A©±!±—É%*.%ØÐ\ÎÔSÀ©î1ÛÚ+qÊsCj=üi{V×Ãd+6ušgª8\"5|:úzz¾Ãai¦HGµN¾AÜ“ÎBÊÂÏjïÏdáËSšHV5?¦ Š-Êê¿ù Çz ¿žùŠn‰:ª«¢`YªÍ¸à«æøÓØ ¨¢-]27ÉOÌ I¨S2…« ,Âù!vmcІñ.=F)£'°qHBæýÇÜ×;NØŽØˆûLÝBË“óUU9ÖI•Ë6½üT‰UäË©ÕWÀhZó©])Ï4£ÆFáÜYS5ªDØÖØ3 +‚Ó?C*€PoGóK){ßµq…(©‡Gëßå =V¦)ižûlb€É„âÏùO[Ìæ>ì‰iÇ#…;dÒ%‰èÔæŠNS¯fIÞii<û<ÝÔ76i÷ÖG }˜] |?6@*Ó~®,ó?4ö™Äð¾!œÿðcÍø•_̶\“kj¿þ*9"ÅÒ«R´jqKaÎ 5¼g¢–Ó‘ê®K‘¸ ¼ „TãòºŒX)¢~¦a!G6vZuŠ4WQpŽEä+F “ m¯÷+FìÞ6P®D•F_©em²Ÿý6¿îÕ=åü˜Qé>ñŠÏ…“¬J>·7>4@ò_´yÌ ÛóéósGÛ?×j€}•²úèô9™D‡ê…Ze#¬Sâyž0Œ.ÔtÀsJbϨ0E5˜÷}.o$0ª+¦ì6JÌ=[ër*þê:ÒÒo ÷ô‰.{þYux«XÉÄ<˜~¥µ}=(ÓŽ !r©H¡ÕsêÚâ›Å˜ñîçh—:©ì©ÌwkM¥å“Pt­Pƒ7/ÂïØô»£9ŠeRÇrÓ®R º&€v5éɧ׾ȷ±±“ÜB'´ýù×)2 èL¨¯Å¢ÜdG^!o˜ÙœŸû¾ß;í~x´æ•}÷=Ö<¯$} zûeâù‘s©ðäIQâëA¦o[¤“=dtr+jܨËÚÄUð„‡°çïWPˆ¨¦—DåéËöC;š[à1–1$*åìQp¹Ö¨¨k£"_Á«THzá/:;Nƒ˜ ¾9¹í¹÷“Â5Ó”V˜g ?ÀqÂ.—þ™¿iÀÜTâP×3tiчV~¯C\î$Qâ,‚Ì~ ÄHMË:T\zO+ ei´«Ø*ô²;ôâ»Ü<Õ”›óNúúõšÏT‘¸cØ n¿ú èà!’9Þ3Tr^l¼Š?lÙL«üÍ ùxŒzv#ªÔíƒÞÁó­Ál44 B§÷·· ½Þ—Y®Õ¾çÉdê UöA~wò¦Ï$ì×$j£|¥ïMÐOW(›œåb^1 ç(¿œ¥9j®ûwã»ëW7õ ÑnŸguÕë°É¸‡æ´k­{3)ÅÿšA‰ª˜Óª$Lï‹’j—ì•ÌìØ÷I’Nau¾S‘E©sÜ¥¤WjïºÖX¾”Ó¶XnjÍÃù·q˜7KI4ZF­0-ÖªCѨÁN1ƒÜ|žBu”š$±'Å!¿WÝ"i#E¾…Ö{vÏÞ\°·Në!6,:Ÿþü©½Åi…+åk˜æÞ­‘éNý.¶~àc´šÆük.Y$=’” ƒÕ¡'¾!MÃG¨!¡¹B^:Yœ™z=2¯EløsveÏþË!—]©tsèÑ¥üà*Åô’Ñ¡mgQ`@è_²Q ¨6ïoûîC[lïžTûå /x™Ú»MAX=X}#±ƒçuŒÓðyŽøp©é_ ªîœâøªW´ªªÛ«(½Õ- »U¶ËÖRæ*e2ëߪ !=XH:5 ¨Ä=Gª\oä§t^na†ÝW£oÒêBÑmÂÌ #[ˈ‘›Ì° ’øJß#Iò.%LQJš–jÅîü¾kfwwoÙ'±è)Þ(î ÚÞCý°Ë0Šj©‹#N…‚ÐЗa•åýóç5ð¨Îy#ð9c8yeèqUèvé¼X¤áYº\Kœ¿ø!Qb¡ÌûóÜ‹³ú¹Ñ©´™å¸Ä7áê;"ï›òlT#Tx´:ˆàD\#“¡tê“ý‘¹¹ílKMP!ðvoährü«{èdz9®D¶È6ôÂwˆ= ^ˆ‡ÍÚ°ù†°T/ÉÚæ(F>s뜱ª& •´>úJ³leJõ þ¸™¯9Á½)0Ö>M®Sùz(Ú¸°­D÷€¢ãUÚÄÈ–44¾ ¸7§²6v†Dݱ²E§%a†ã̪Ù@\öe$±Iz{À úմɵ»ï°Gº…k‘8? «¯MŠ<ˆr/äåì5_€L+ÞÍek™jHïã§ä&ö,pÇjó–/C¸hÀ˜a¯¸²;)݆±™ÂS*ˆ‰MCGÐaë(±+P²Šü¸Ö¿¬Eç‰èö€Gб3Ç^ÆÕ®÷”5yA+å`¶º¿ñMÍy›©çÉÇêÚ%dÕ,Ë]ô]Oog)­, ªïIUòŠ„#‘b÷Óˆ”m|R'¦¬„ܵpŽ[#wãOÍcž‹Uoü - 'åi†ÚX†㸣~JÚûƒ£‚JÏêá÷·ÔüãP tˆìºÉÔq¢ÕÂDý—1ê)ì¨w?¿¡P÷œñèžò¨³pÃw”ó·ÎÝ«UgêÇ·”­ýÀ6jâ“@)Ì*§Â$ñ.&'ö< Qà„¡2:Ñ‚wÁ±5DŸ$²FTGwQÝ„Q1ðPkˆ™EVT ò+ÝoèVuB}mÉã Ÿ {²qP5[ÛŸdÅô±c´ó,#±DÀóÇ•N™¤Ç뜃e7m·… ”®Öû4öï)kóí~Zéùˆ¢¼tvf/vUÈLÖÃJì×&X¸Èë:œ™ŽQ$ì¾LþÒIÓß&¡c°Nò-ƒÌös a“i Œvª¢vÑG×o½’_`Ìðüó^õè-4®|—Øñÿ|åöà‚  M™Ô\•Sû¢ðóº3+‰V›Ä>²/ÜÌ[ûLgòZ_G“ó0F$ž‚“'lM~µhsIZS‚üò.¯L'–ó‡ÙúéB—øû‘~š›øòe¡NQD“f—\£³ÆºÒPÃŒ{gUȇŋޢûÓ²¹•!b©zî»2v]ÖRÓl¡’ØM]Àä.t'G§—±­*ãu¦Gš#q3fFr4rô«bPÜŠ»'ûа°t>‡9"M´ÑºTU¨¤ -¥Ö¦Xd³A âˆP²i­‚H¶¸F’s–xéËqV¢'<úቈË4KÀË­(HùÕhY¼ù"ÆÔàÐÒ&lž™ –ynŠfÛ ¨§†-A‰GnÙeˆ¦æ1×ñ×ÜvR[NŸ¹ð¬)íÝ \…ê‡áæî%J§&åæ^‰çáÄ„Úë° ¬­]"~á‚ $ÑQâ[Ê”„ù8&Ã,˜ í×Å´t,¸’Ps:ï„ûhKD:‚Ò¦;–­,¼Åíʶk$¹;ËëO,)ºÈ¹m(gð£Úre G%”¨^B,:üüRllº…ÙÒ÷ëÖp:HvVÚÔñ{¯q]/•h—ášÏÊ!Š„úyÄ¡|~Öê!Fxª†ûØÙ^¨–íÌôí¼Å¢µ`c • ½ÔÊJi«ÿ³ñ9'·/Õ€hD ÂúÊ©Šmå9Y…IÔ×S3K/Ý׫ü.¬Ùéô?­È©×VDý•{oÙ²‘j|r?'_êê3 — õÏycŸöW(Ûp\yO~¤S$ÅÊhÃ^Ôòž@9ìOú%î™E´¶Ã"cqP¯°·M¼ȶ䒛6Ó*Ü%~VÈ$¡ñI¿WOã×M}Fd| UqRWâçüŠúƒ˜h—í*þ×ÄÌoÎ{–S¹e—l IÐqÝÑ´ë¼×qeYR»œR§“[è¬Ú÷†” X•–‚$ÑTþðÍ“3Þ>þ†~¿Qþ:5„Å´bfêãd‰‡ödÃXÆïiM²~~[¡´þÇ‚7{3¥S¾9:riDÑÍÌÕv9MÛª˜Xj+’ ó¡lšp¯×°;ú¸ËÞQÖg{m/ÂcfŠéfBÊââÓ@}­a?Œ¿Í4³"eÙ¿wKøfÃaÿÊäáB¦æ'6# C»6âö çñ‡)n_ß¶XžŒ+X£k—T´Mª½l8é‡e4DUo[±vÔ¤¿:>2X}ñ,¨ ÐeJÍü`-½µÜ!váþÚV=O8Éß_~úê–gå;Údf\VGøÒP¿êEü»B–"ÍFë|ÅUu1lÑä^Êk$Æœ“ýDºµ¸îìIþ‘þJϺ׺p}Ý»Šô)LQC²¼™½ÒLÎÐa¯aÄ÷j—µÕXÝáaær¨x30ôÞƒÛ”.ÆöÅjA²‹ân§«<­«íWw.ðC‚âõ²™ãU‘XÎ_3´Ã²Ÿ¹qóÖpú¸¥ FÄ)i=Ç›1Czš Õ|ˆØÝw^¥¾¡@zÑ6 8䈫ÅlâáV|C¿³Xä?QŠ`;i\šâÔKd^GŠSl}g]íXH•å²h›åMœl“‡4Išê¢S¨\c¶›FÈîþfA${Ð6HWòr»EíDd‚”c$Ãc¤ÜF4lxÌ‘63,àkýèÕà< EÕÙ¿¬_j s8x¡ž¥*aJ¦Ã[ô¬1Ë$ìG¼›Ñe³B&"Á º<äF#—âí%´‘4×H$f”(m³¿þq¾ì--y¥[¥R42½¨àŸcžOŸ £Ð³Ïè£Ó]Š”#_Ý·sõ´¨I7ª©KU©rgæm‰·³ÁÆÖe¦ý­Ù LÁ<çjCÿ=–ØqK%Ò{ãî)WÀ tSÑ"©ö7ç+n°v›Sâ&Šooš R}ÇH=I¬¿ÕCÓ éðfÚ¥|€²ò"ýTôñŽ1|]".–}2oý+J¼"ÝÍÇKž‚¡«òÊSµôcÃh* /~Éþ‡©ÎPÎ’„Ø&œª˜ƒö·IŒ)m{ò½¸½M†Óš ìØDÂËH ëˆ/¹%pÅ1x®±YñæKÏÁMzÝ„HÈ0˜ÌÃܦ÷é´ÉóéFQ‰íE?eн Õü#Wn‹¿6´†jkv ÛÁ4æ4î¸ A¼ÿî|+¬Bí¨!cð¶Û_%zxd =}¯ýºO0ÛÍEZD/óäÜ—E¬èÛü;Þgêo·™¨öäFRòuWÌ_Šu©DÊf(-k’íw  Æ«±”™  £Wüúsµ]OŽ¢°‡ƒË‰‘^µ·R~œ‘xs8ƒ¯èX”¦Ž‹á×úé™ÒöÎt¾ÿ³9‹æžâZ¦AÎŒ§€ÓâãÒ™£û¶8«²Z”µ¡¥Í²«ÓƘ¶±œÎá2±)M}ˆöñ…V!ÑmYmšÓl`»ç©/î— ¶¾¾Üw·k23³Îj”./Â¥ ñï47l¾Û1¯X3¨¿SolÜ!{£¯ñ–o|‰¨áo\¢Ÿ<µ}Êh¼-=±êÔoá²R鬜1ɪÖ2ßNIÀ2Ž.*&qÀc&Bu®ÑV¤¤}Jõ ×Ô£½NÆX{‰€¾_T~¤aE¿Ÿ¿z , 0%I²Ÿ§í¡f*GPdø—jWÉ—J‰ˆÝù\ÉŠ¸‘²Áä u6còbÕ^ îÑ”©·‹û‡aÓL¶>+Ien:³XØ:sÞœ~>J¬f|+¤uFýá/©OáÞ+§]ý'-öè w.:Ž^Ý¹ŽºÞÜ«öºntßaJ¾h¢nÔóZdô ëÐ!j¬½C°(9˜¨XoÀ»" †9/û{ô3¦q.¥Xªá›£vš³ÆÄ,~1Ë´éBÍ]‘¡O‡ÃÅ! j›kÇ1ßgCdž,Xâ*§:¥ÈÓã÷3aHG8fMê´ùN¯ðSMºµ’ÿ%—4vR7‹²©6þæ¿ÑrŠÁ§À„À,‰’'£’ŽŠ;ÏÏëjȲÿ¢ÁèuÑÒ²,þ¾¶}®c*Jàµø™Ò©Kö‚èNÐ×07Rߺ"êW͹ZõèJIH x=œé”Jc­xÝ™ˆèñÚ‡á>¶€9ÿ£ë›È~?a ûϪ’N,NœïôO‡`©­½ÓöêÚéØ9¸Ó8Ü–g)S€±Ð ç»§¸4mü«åÛs;½ä@;h ZŽ3ª‘åûWÞfª4šW>±)3’è Ѱ½FÑ%Ѿ1ùOÍ­Ób  îäòƒ»ü‘t8XWƒÊïÄâÊ”¼ùJWK(¯ƒšÐõsÞ‚>¬²¢²Òí(DŽî¦¨Ñ)¿SrO$auÍrbM—fÙëæU—ûÆæYÁø( „–&Øó2uÛ Î¨ŸÍ{7Lôy€_MîŸ\cç"þ†&N—Ük{\y:6õ¢W_œ£šéY¦ô!Ì ¹t!Sx…稇'ΉpHˆ®a_zïºõõ%è˜èŽGÍ^}3¨[óÑPpÆ#ÆJH1Cj¨Ê#õ.:oÉï™°¸pi®nÆG6ªà{ó1 FF8:½ÑÁlLý!%¶iåu$oM'Z­rÎo*ŠŽÓWÇ•ž'¦þdju‰AN]P-jSh¬é==¨jø!¶m »„0uö‰‡•íÞ’H_ñw$›÷7¸˜ô‰âãͳƒ¿[Ä«ð ‘ÀÀ/ѯ(Ý1LÏöPsÔ†6.äö /zŠmL¡&XÎø|.þ*°zŸ7j5`E #Oˆº‚›w¤*)k‘%å2sfEóqû&c­ùƒÔEÕ9;%‡Àð°w® *ÅkÿûÜ”5&úýn ¬uËIÊ ÎOÆ/”Di‚nµÙÆd^±¶÷o»Œà©¯7<±†Ñèfåä-¿¾+Ï`gjwF¹âÏzlV'ö•9=jÛÑÄ£’3 M‰¥;n[å6ÁPÃÊŽŸò¥Â}÷pžz$±a‘'új½WA!¼ì6*H¾\BSÏÃ/­òÔ•ào¾šéw%CDt—ÃøÞ·¨ÐÜgû?ÆXjø^a=ŽwÇ®nr©^ÕÍzCU˜0 IØÏF ï×§s óé¶Ep´cÝbêÓ¦L npÄŸiŸðÅVt ¹¾£ô2ÍG/ëWL÷@mšh§±ìâ•ՂО÷·9‘á%˜°ŒUá¬üé¤Rk!psKÓ'† %oè6­ ­-Yd1#fy@e&ð–,õèû™Ì”Ûîl±¨в–™Lºy,P4xÄâ~»ÃOâËògÂlÓƒ8P Ø„œh{x? ða“ýÇ`³ÉË¿X|)ˆ •]•àˆÅ_ˆZÑÚý¼#xbÿÝ9%÷\%³fV¦ènf£-â1’ð r’¼DöþãˆÙÜÍý^ˆYW¬ê*3Œ¦Ö4çêŽ'ä•À¥§©>=ÄØÛÄÜùV’ŽžÜrÍeu5®wú-¬À#¥E¿îm[‘ünlÆÖv¢R0áãi›‘\Â~^a&Ùî…yº]Í¤âŒæ¦¿œ³‹ÿð3àdõžDHHK"‹à~œš*™¬´»»fíѯÛÄ$ ¶Ô=·{9¡A«ØJ`‹ôåA+YÜVµ«OTL÷ׯ4ä,<“Fí7 ´ÙhÊ'­çˆ·ra9 ¦jªùi0ÁAGñ• ½øç7ÝžMÐ5 guh¹h“$Õb4®²ŒOò›×¹‚¯­ì¸*ÚŠãüKH’ÕÑ\K#<‰›æõ]ç~*1;ðÑäðâú–aλÿ~¹3«@8’ë½rKfýYû±g&©hl¸‹ðFÒqfŒßUê„%Óé)¿¿Ÿøí+#–ûŠ“Ùéôã+*–ËÏ˵uÌi*ª —kKóôÍÕ²PéAš¥ªJxSd¾±RG&å¬õQe’Ɔ4©ÜΪ©ðˆAýKïòaƒÎ6–q†£aø½ˆ6Ì;²”©®¶ êK^ûòÞª›èMåì¡åT®%ùeu°‡CÝÎç|odf‡b’Wƒši‡QW&¾brŠ1-oà¯I«hà™©|{¶8`Ikػݞí+‚tòM^®;PµÔU/ö¹íOƒÅD×¶YörFloÚ Ád×ÿ@?*8IǾ³.^ò%›ý q¤D±®‰âÑÛqÆWÍ" 8¿ŠÌÌ~0usC‰÷å„—F§ÀP»FëJÃ1°Lj¼³°l—‡íg[¿|­áð«/‘ŒŒ®uÎ…ÉSã“++·f·³¿KDý.Zý¤G8‡QL¸»kL¢-ºOfTÖÈ.ÒG‚¤s÷àÅ‘L„#ÌB{cZ\=Ç8—Éüpœ>ÒOž¤>QN£I¹ž¼awñ;VŠÚ2‡yãÎÜ´ûh—åPaÐW€Ÿ Óz/ªù=mÒ€.ÈDú"¶üqX‚ÊæIÜê3Û&1ŠïŽõ_1h[Ë º>1ï:ß–h°h6!#̯A_n“_øxVSèXL®ðÞ1lVHå6µñßSºëì7ìô2¢Û_«ö(¼¤m*Z&BD=×¢lý€ºWfüj>Øên°gYy³ÏÜ“‘òª95„>Ïñ¤CÓE-´(ÇÒ30CBË·‡G\ºxÚBÝ»ºk)‚X[‚d¸œõ±`UI’ð—NІ¶”Gåçc‰«Òù5“))€h5›ýCç£éö<ù,¨ òîL¡zßêÄ’)6bœ™ …š»t qÁ%!ÖŠ<õhÎ[Xöá9q÷îòŒ ¯û“lTÑ.á¸ûí×Y¤%ÛÒ½í22Jë}´µvÝÆêO޽œƒT9y¢?‹×­8Žö?d½Å“Ók»ÇÓ§Ùxá"x¹«|×"UV¨Æ[µIV8É_’üTVÒ Ï“ü´„4«0ÍŠ#œBrû‘ØtìOÎ ý:n®½S¼Ù¸/pu;ª¬N›Ë ($~"ÇíœÓ@7z;\{|Ï£²œ5¶Ü-ÍP€ÀZ£!‹BÏ%^o–ÝS56(^ùy; {HZñ&÷-¥GíSS´×ýl–²óìé'GKâÖåU 緩χ~õÇ}ÎY×¥Q38¸LѼoØ„àLpp%ðnN+é°Ÿ³ˆÍKÙñLÒîÓC¢óy¾†…Wf¡~tv‚ü¼â¾×çnˆò+™ }Ë=RϧX9áûy@‘ºÉT?­0$—¿‚I£/Ù0“¤®ôá`?QWöÆ„ºÞ·Båº «õèŠóA^†ˆE¸–ÂÈõw¸ÓÚÝç «Õ€»Ó¢²(%¨æòë&ýti‘…Žˆ¸ôª‹@ú¶+?lQÂû"QÜöäújÄûϸ0¼QÄl•ݬ9¯Z![èñfF?sh€’¤¡ÂðU¢ç^3­ëòòÑ’mM=l ]É~æžôÍšÛ EO`²´XH¯» ¼9?ÈX=V~_ö&!ZÏõ°šci‰¡EÌ'eq†¿_pu¸óÊwÄÐ㔓ãÎõƒè… V=ÝáéM• „‰ü2Ýe»3EÜóÅ|$:Ç—òuŸ¼fQÞ#OàûŽ 4Ãä(ãÀ…–ƒ²î|½Ê5ÄJ·<5÷Ó¦öö™¼%!ÙÃWÌhúÞã¶­V”ÿ‰4‚äy"3Á%é2+ç9æü-\¥Á•;ÑF¼%b>L³”f\èP ¹ùTA^¾$®x¨‰½q07[.¢óÑþob™ Ýù‚-ž­ºOp‘Ÿ0Ö ¯ƒËÓ S щßpU©s1UÖòw­´¼gàîû)¢¬¨®Þ`Y‹ªi­!Ýð„ëðVO¾NòçÏâ#${¾Eª|ùAþk`@qF‚Êéxñ™LÒÞ²ÔWq5È]Á»ZµÑúžt$Ö¼+óx ,øÄ"úÜüŒxdã7;Ï瘧2¡R×c×/X1|¯Õ†&>>pàùë‡81fµþD)ûÉä39SuÐõ™ …®™þ[bÃS‡)OÕ,Ù;e?Áöl©”¹7˜ßQ„#3÷ú£]-<›}wú5ááÆQ“[‡7`?ÖÜ%—Ãx!ç»…³+7ðŠÄÏ‘çwm°ÄÇ&E*NšŒµ²‹„Ífó…–ߺ…´Š²Í©¾RP­=b[áÞÚ$ Ü~«¯ÐÛ\ÆJ05ï·¢¾ vñ{½¦ùÑf‰?+€_ sÿ‡ÉYµ™1Çg ±,™ .JQjJ >/•ÇŠÁuÿ§A~?yF66+18*¤Äì\$÷ùf4·ï·*|¬7²´É¨qkþÞÈ(M¶ûþ°3b„SÇ㯡 ŸÝ/ô[ÜN8šÃ§¼­­_{ø±«ÉgñÜï½ê­1ß¼´À)v¯‹’ eyE?‡ëÛß%ÔŠw4Œª׌G”3k=o÷ù ;ß¼líå@ú&^ô^ĺÓß–ìAgq“?Ðø)¢aB×H¸ßÃ#Ë0ïcDS'¯ÛfxNüÊußè¡[,W ›3½Ïåäm½ÊÒ§ ‹öí"*¿:f OÏq”ÀN’V°rs;aú2ØÚÄÊDN5ؾÓB¦å¬–£ Þê0lO¤y—¥wB“v¯>0šxv¨§Î*‰öR}Ô5ʸû™0öÀF:÷s –ô “Ï;6)\»™º4Yí„r?Z£¢tÍ”e·½µF¤[Á²Ò¶D9¶VòG éñŽÉµ-8Lvt‹?Š·Æ*Ê|/mOh¹v¹®Õž+&9€,ƒ{¢£‚JáõSpó¥ãA±¸´ ‚îÜ+ýËeº¹Ô)…‡ÚЧêáõ$QÄz<ï6ŸFüýŒQ³–ãmS£ƒï®Æ Æ/޼uðáoŠÑÂ#æV±Î™]ð :¿zDÜKÆ•û.U¤ªÉP»˜¥(Î –c±)ÚÑuœ礠aârÙä2 õ\T1N@]K–U`Å"º2.{VÆuîSÔ›yôž¨pÌŠÖŠÇËfïXã2Xx‰úyõü™),2àm®‘¥ 0à}î{ˆÆ…˜‡aVì~*æË>OÈóJw‘ûä%í®sÈ•<Ò›ñDÕþ;`fžk‡ÔB°CP†0 òufª ’œ¼ªá½žË³¸d—±tËŸO\Úå°"*n†×=3|Ö ±!ëÇ·<~n©o¦= %Ù’ømµB})™"òM9ZŠ-üuÖ^Ú~ˆw+ÇÕ5ÌwC ý:ö助¢ý03îÔQÛ»Aþα­Ç.z¸7x©‡>GyÐc?o~qO~e-›4âê»LÕä¹gë¦g¼0ˆvr-ä„óaìšRl6výuÊê᫵]…Jˆ&zÇ5É[r:&B§£eª”gŠÀÎB4©ZrÈ—bßѹÙ6à™8ZŸùû” ‚·üÚõø¸/¡&ÜŸä?ñ}ç•þ\x§ý¥M;ct­>ƒÁ.ȰÓzé Ÿ &µ±üsçi‚¿ªlïF°¬æ3W‘ýµ‰8âæÿ « TߨH¡îÀBµyä•e~Çqò¸íj_•PÝÌë0&½G@ÒD]b'÷]º(W«$­$l64³ýœ¤… ¸.ÄÍ”PÞÒæ’<¶R3 yéº?Sâžê·ž›]ö¿ùÆ’ºwÇœA{¤Hž\#Çx‚gó“‰Ý} `=mlÃÿ˜f‘ö*'ÑPL¦™çÛ"&F#L®£ó6ë Ÿ:k Ÿî¯%x-'i»0Mì%¸€ ÞŸ´øÃFW›yá#…Æ>ä›°C¢¬€È6o2Ôo͉‰×UXyáWpù2Ê|ÛjÅçÇåzV^ÍÁÇ÷üyMgp•ôÎüNîÿ†Ó[«º¶Ë¢$íeê7ñ2þy\/Q¯;ddÀsÈ4ƒ’¯—šýæ´xÒÆž.'}É«¿þEƒ³ñ°·Oß@È WplœÄÞ3ÿ–?c÷™áYë I‚+ŠKôÖE¡ßsáñ9Ó…ÄM$È|KtéZñnZ‘šJ+R TF¶Ǫ™™kÓâƒ|¡óóT¸.e£}~žjQqð³íü“¨>“íEµÍL˯Kдwß2qý¢óÏ ¨¶¥<(,ðhÖ5*£DžÙ`óL±ñs»2ße{lú,QõK¿ŽøÏôйötïÄ¢´[†åõ–þ¾ŽT¬r¬Ë–3m‰ûï1õÜNü¦›07LºÁt¼L˜0eÒKh^¢ÁOKÎŨ q·)߀Õ05ÀJBS˜G›ËcáÔ¯ÁpD]Hy{:ãecúÞåéîŸàAuÜœá!¤#ÎZ„͇jxå©Ý¾­BÀyÁîØäL{*ÚP¦ú„!%‘âŽó _$ÌôÀ+ C69ýÆf©gÃQ6›#_Íu¦H±¬!`R·Mìœë˜ë™coÍp~ô‡˜AÝau[O¥.lãb˜Áw‚sÜøáX(1Ÿ†‘3Üe©L µÆŸò,½•þ·™"2!bBüGø|‹¦v¿!^[Áp[9WrTié_Ç¿ïcÏO»Ý¼þˆÇùïs0˜Ì;ÖS;"¶•HuY˜tlw»î /Ƕûd¡Ö‘¨ß½ EtqÕ/Bç`ßôÍ=2ÝA‰ûs{ V=ÅÔ«v§ƒü“+i:Ô˜‘Ü~Æ~ºâÑv¾[=vQ }þÍø…úi0mŸ…1!i£ÍÓ˜¦h?[9.µ½ÝEYõóŒ—×ãï»ò;÷n½-ºœ™ˆð5—%ýIÄ£!©¿ãØYWØ_š·¾øl¿k^Ð… £O>Ù±àù޳1ä‘ Q^ŸOMZgg\êGµþ <úVª¢ W3!Uÿî(s¿¦W€V²"¯ÉE›æÀÖRfùÉøÆ4²•~Ûi¹õÚÉ+”+5íȦëXæ49̵ÊÓÀ·È·–š†™r"ƒDäU•m»:þ®wϲ  ¨ÉRÚLN<ï0¨BœÌöTbí¨Œ¬+>¤Ð,å›rStJRõŸšuÍ’[1×´)Ž3oá΄6<¡-ÎkŸsÛ¶õÄã¤gbïÚ]ÙmPÜof;/ YºÓA1"ûeÿ'º¤²î¸p‘ë4ÖÝ F›Vø÷ÐCÃP†ÖeúØ~^ãä…Dc 6Ý$bN–M ö×¶RayÏ<äwOfßw9_æ»ÈÃ)kÜn$öV+îäíAda‘øLU–MÐoõ~ç¬twú8yÅNþŽÔWÇ‘ýD}x«óy5ær5s RÝ'‰ß̉Ú)–/îD«ßõÐ/bÐ_MèÜ2:„6PnFÜ„¯) ¤óµ\+):ãT…Å5Ú/4I{žé¸t/µÂ…á(d˜5ÃG¡#A°I‡è„ò|/¿]3M]‹r‹8Uºì4s3%šb%|Êt¾\ùH*$Cí±•G»¸;ڦÿÜèNtå —kht ƒ¼ÏV-TÉFðp0ª§°¢Î¸²“Bì3²ŠUÇ4}ýHàF^ÉßynNU±Sä5ݦëè04,p#t®ÝAàDÓM)§y¿ñ‘„Kõ¦H1ËëE.S¦ËŒ»¨ó¥€’ð,нª/H*ƒ8BšK¼QX)89j*´%Ž?¬}× óÓ ø+Ÿ•,O~HJ‹}ž=Oõc]_å˳ü\–=?Ì?kj|'xÔoi)È)Pÿ.éGBþ”w–bÄ9Ÿs.ü¤’=yŸ·…¡pIèîzTQÀ%˜Å1~EéJšÎzFÁ&Á"Ð6u}Ü#Bª›xqÎèãv=B¸2,h’´ ÜÁࡘ¢¡nÀÆm Ì‹õÎNAÛ:½¯´"~Õ¥Õø{ø¥Æi©ãÒÁs°ƒb‰A0n{L±;ßJâT!-n`%F æn¾Yq~i8[eß äV¨¿8´k¡FvW4|dÃÏìZÝjµÐÿÙE¦·fVûÛɘª} ¥kµÕÔ45Æ›«h‹²XÏFwZ﻾·„q#¡d…Σ†>^s6TLmNÓ S!w±:€ÚÅÙ™)·Df6eßá%Zíœ"VŽ¿Û¦˜$ÁTÇtñ™¾ÔPËf‹“@*©ºOLÂ6T2ç° Nß³Ú:|¤ß\ê–=8pmp”ˆ ¿*;SµÊ¹äŽ)»zØFžŒ–ƒih«!WÛìu]º¶Ìgàc¶‰nÏ¢~Œü‹ANšsÇ¥Š{lÞ߯˜5f©9;ßôc $¯)tý¶Þ`ËáT/s’¡’óƒ=Àa`é¹x.zl³Ôø¿µ`ÈÛülVü㸭MÒ6òI:\ÒeÄvÿ•ýšÖϧíÒ[ü¿…˜„ÛT)œ\É5R”¯&zóëïÐ]c)V¨§¥„L†2"Ç8Ÿ8­=,*Ø8óÒÒNcûÿiËÚ}…UÌ•âWµÜ ¡™s…N;ƒ ržH€ÉáHœ‡¢o…Up¬§µb²’òÌÍM¤hI5ñXó“¨ú³“åPP-`PUÜù?A”WòÐb%ÒSåH¼Ã›À¬íúl?« -és;¤»qßbã3È66uR&Ýžçba¢9PVÈàõáx-Zî·TEZC Ç•ZÍê´i2}H€4Ù¿tÎW»f<ï=êáŸAÛ©˜JEb˜âm‡Ña'zï—»uÆä I<Åe<Ð|T1ÜŽàÈÜ éÛ{1·2ÒzG¦ƒÍì/§Îy@“ÕäÌ]í’iÚ¤–Ì*(êm1ï)›Á¨ö^*óL½Ø-'h‡sÒÑpu\PäXÚå¶ÙΙ‹=Z*¨0¼kû‰izÕ.rk­€| Ò’r¯Ñýæó‡Ïv£7Òµ]È&µFT¦¾hßͶ`+ZáR¶ Èû øŽ.Œ‘îï%:šZ20¹S¾6+Þßñ®e:¿lÝ ¿¼ùÖI–«rA±`X¬\ÒgÑ™3ú#lF“P“¦®:Èß’;šù3…FÈÚk#µãIùëk;+ÎF#*Íb†ñhÇ)Ø’0ÆÆù}¬¡ÿ7Óf^8¬W-,³¾)FS“ÌN•“ûXäFÛ6}ö -¢‡W]€c!a`ÿºÀi«ÂŸsͲ#Ítgò"§Æ²\kØ:ù ×´Š!X „+1íåÑ}-ˆƒÁA VÐug†±êŸN$P{”I5~“)2¨ã‰¨AW~µÍ6ycÕ´HËkœ0\hâF]£öô<5]<²@ÍYa7”v©¸‡©ƒ®ÞÌ룹5Þ‡nð—$몜]@¹NSºwדFBå—žš¨á>ûö¸µ- ®õÚnè8ÁkÆuˆ–ÆÑ÷u\ص¿dÿ<]ùÄ*ü~æ àŒé6¹Fƒ-Ç bÍh#³éHy{•ä[Ìÿçtœ} !>ÞD#•§Š%õu6-©ƒ¡Ð4 Üd¡˜1O·zUó†ÿè å«×ˆŠj¶‚ÿþ|rÿòòoúóèµmfÍø©&z‹™",$bWuá•Ç.œœq ù‚Ìú¹‰¨Õ7þ{™xtQ¾7¶ž„îzxnØ¿¸x¬UIâøÔ4vfåÂ@÷ÆÙâ3žˆÉÎìÂ/;D .®WV.½ÙðÁI–^†#Þ«Ñj$-Ú,'ê“c÷YÁ« ‰5N óì–Ý5%;yäwƒ ËÅæ>¡„Êž¸²Í =”×ZãÀWœegð0¥f$XA]‹lBe*sBÔ‹qÉ0,X 6DYÙ°e¨ à©Öa²¤±Ý7ƒ°ÃîŸX&qZNGc‚Px/~ƒÿGŸe=Ö±K¤y´¢I²òRK¿"³å8,&Rœl6Ù;@󖺨<úÔÙî:¹ Í !W‰ÐhjsSQ."f¦2¤s˜ç³s,úÙ©šS~O«À‘N<êÖB2ׯ7ÈJÝ‹¶M_™i±s´„\°õ=3( ÇAVó³£àn@‡Ú¨]àž_þÑï'É"­ŒxU‘i|G£8.¥mŽúø"ý«¯‰Æ+0ÈSùS1ö°V¾íTA‚;ª6œÌ’Ö²ªêzÆ@±…äR®3%,xõèv`ÂULJ© ä§¸¨SYµöÏhüeEf¸à”U3[ò»è”<¼¨½²õ‹90A˜ßÈxð™¡5× ŸÞ>R]ݳ¼‘C…}½iºP´YM‡ñ^ &¬—éMÞ¬L€-Íæµ.‚Ôÿ¼ŸæÂo¹ü…¬{¾ƒô.¥ñ4Íp ‹Ø9èžróŽ aeàÔsϹ_^J ¶NEÈFÝûÖºOø©[ˆ?ÞÓY´ðpÂe]iûr¼™ÛZž—L5€˜y¿‰;š¾õòã_R?ú‰™®sk°.Ý°Þ +ZSe’"yñ_¬bŸîró¯$¶JK³a¹À?Ví õ€Jó¡–½5§ÐT†•H4ÓîPzNeûë^f(tœ¿DWŒ%’µüR ­ë¥U¥åbc«“™ájƒ-~¨²L?±ÅÃu×(9ØÚÒ] …XuM‹¥>®3ÊdDyò¼Y¬|1eèQÒ~1EÓÑ]õn*¦á¿Ö‚5VÏ1d®˜; ÎÅÈhc!>¨ÖRŠœ÷Æ^Ì¥nC‹Ñ!/±ªDÇ«Ž!]<ÆÐµŽ¢Î3iRãXÝà·Ñ¦§ž7Ðß ¾MWy"^l"‘¥5Ú5XlŠç3ؼçÿ‰³ïPžðE“w’¯s{Ýç²èAnÅ êÝÉZŸee/‘ÃùCM*°_«ªÍ#.²ÀÌÀ^}W™S\²íè…4ýav»mΜæ¬î 4{°ó` 4µdÍ¿7ÔGóÁÓC ÃëŽÞðÑ›Gëÿx̪y°ÙÑ—›‰V‘ò¯òÉ1§V¸Zà¡NúY„ q§;b´XnCˆV¡óƒ=p+ñuß즢ˆJ}œ>ç°P¸ô\¾8žˆmµíÕ O²Ä6Øb":‚5ý{ñZlþDzX”n‘8¸w7ÚúFƒ¬‰ ^t=0°Üô“¾8ÝêòXîàþe⻽ R•~¸ §'}˜QÈof70u@K¹ûqSÛx¹^z‚Áò|Àagyõïÿ3ÿ€X;ºD>P](1ÐŽåÒ”¾ Å Ü·Z¨ÚÐ#«iwBhö`sx 9ˆL†%Ë †ú%. À°–D}š"¿³Æ¸8ò6âŒr†=ÃkB¤5¡²‡»¾Ž\ÇðK_\V4"‚ãÏ7¨÷Ú‚×PWéóÏxÉøbèŽãÄ7>h¥ŸYý˜ÂõBSõÇMAYC2~«Ð°B„ޏÂ7<~IÅæÿiÞ¨‚4ØD¹{2Ö•†³Ö‰Ì¿ÆÀˆD› ™}?eÃÂÍCÞ=^P^Ið°ê~v=qL¨AÉ’ÂL´"T…yô9´fê1X:è¸BÍ Ú'Û}ÝZ ’ÓBñMÉS-Àûщ0d|ñ¨GÏáË-®þsü°PÑã—‘óÏç¶X3ÇÂfW nûU(ʆLæJ—<:X˜Ëv~EŒÇÔ|+IÈì šZ¡ƒ×LH Ö¯Í{ñjÛQÇtÊZ 0 ƒÊâºP&çÙ¹¿¢ÏìX­q¨è#4†»{X S¨ÿ.Ï~qš„™ÚOxèaõÕ½ü„"nGê¸?wG~´!&kaÝWÝó rNÀœòÏÞãnf’VX ª›oü.»²0ÌN¡§¶‹1žK—Á/©Ÿä\ÐÒæo, ÑcMLÇyÎ!gzãHZ»`:]ó§ ·Š‹+qÙêä>e9Ä`q`̃IØ«’e;¸¹ÿÂ[Ӛþyœðo³çWüq'÷¶(ÿ/Ūªlàx8·3äÚãû:Ùæú´ÈtCJ±É˜ªS¢ó‡™jÜ6¹·Î,iOÍ/í•üKöoÒМDkË·¹ü&õxrŸA„˜ngþ6-!ᕪí€]x™y¨*HP°Õ< ëO§În&›NzM‘—=“¨÷:½¤°„êPD51ãsy«@ê8p–ÔÇKïî!PÄ~Äd¶‹Ô˜ÞêIŸ@ìCgÏE jB9öÖèY(Ç^¤ @×$êög8³å™¢Œ\ï4ÀØG)‰¹'cEiàK¾Z,–„‘s d ò½µØ¦7]áÄ^.ÿÎ}ÔªÐÆ@Š¡A„ÐMO?v ;µcã;@‡ö”R´aéÆKÓIÖ”9®}yµÂO8E äÍ5Ì]ðr Š5Ń`J«_öTu{ÒÝ ÆP²…ª…\K1ºÖ°AqÌ&K(ªsÜÙÆÕIßUÇÏ?$òõ zÃFS}ÆìÊç³(éeä‹V²­aà—Zɨìþ-(„á&Pg¥oF¹‘kAê¿Ó½[ƒ•§khÿO è²¬òŽ03áu…å&`7½móîDZgÌF³”a\‡×ik¦MÞåËú†8[ñ4PÎß„ôNt"ä–ô"e?€Nl*ÏÂüQeQ™3èç8=|Ø1$FŠFÄlº7Ã6#<®rå]û½ðž¯´Ÿ‘)ªJ¬(Ú»4ZLoIýC€âk3úÝ 4ýEYΜ –‰J¤+¨¿Jà\Ç ù‡£Ï‡µ®P)&!žƒGõ}瀿ª¸à6š–ÂRæl·¯ ë/Û¼âŒeÓÄy*é’ÏÙòù³ôze‘Oš­ª^¾—òk Xµ6`ŸŒ`ÓpëO<ûöXÛäL]H©`> …^p»÷ kŽ?©Ó|±›gŒž'鵟e-‰À'²×¾ƒ)|¼D·! ,¿Ê‚BI§»Ix$¼ ë>‹d¦æ¦ýJ?üñâ;«ó"AªÔ‡ Ò!,¯Œ+’ /`ÚŠŽVz=ßÊ´7-dÞonêS誖L-³ ç‘çôø˜whøZ+!^"µ‹´zµ/Û¥ÎCú¬…n¹^“ðHN® !gQß«úGZp×XV+Q¢ªm¬÷(u¡Þ¼Ê‚0>Žcr“<į¢bd’GÇr"![LÅEã«f‚8âHÍQ»¾“'¾Î;(ªtc÷J"ôk·Ë;ÓàŸ­Z;‘ߊÝÿÖqó¬­LZ¹x.dùN 4áCÃ¥ÔgŠHj·?lFŒÇª«G}û€µG¿…@ q³XNGc)K»z°©ˆ¸^qu³ä¢rÔ$N€dfJìkì5—ß`Rïd5¼Sú §}¼ŠÅêcyÊÝ:ÿ°¬=ÀÛ5vèˆÝ›÷ê^tñ"Š,\ý4UtÇDª¢ƒ*J¾ªI,Ö;1ù»Ô=ýŠdÓW@írM€RYðÞ¬R@ÎmiÝMšó ªñÿ *aÎha>}ÿ ãÛ-]ŸüIß3Ñ®´AKÙ®æúÌqÛXOÖx«K “…mAPÓ?–fÕóx}Ìò 8`25­LQÜqµãBĶ6~a€x‹e5.©{¨ïû VJ€§„ow<÷ejÍoZ*%Y.ÅdÕÑh§Ù/ ú™‡,êœzhžù(GïšE/œ’ì'Oc#jS'9®1]ê·øÎÝüÛod=”“?ðþGJWbã8¹‹]­ù¯û»³èûº’¶òSŒ‘>uì%¨=&2¡W&-“¡¤–iLUT‚se’¥ð§¢bb°…$ÔÉŒ¹ˆÍ®H¡ô‹a{1ÿî2ö9Çžýû¯#§NI/Š}—6駤mC-û]"‚¹xi}Šj~ó¯èüvHÿó´öò¤‹¨¬züÇ*{%¹i훿³¾ú˜}²M1LÖ¯Ô·­´Åt6î=àfÄ R‹éF‹À Ôù‹iœxSšWt?3¯ki µ6ÓRÿ8=øþ˘ð%]O È·Ã#M#Là–„öŸE ±ñ•ÌrÆ&`˜Žë3¡Þ@çôP›$‚«‡:.Z´´uþœýkÛÎ|K5ñ©ÚØ›mw²†…˜ñ•´Ê‹?Êã A2¦j½ÖÛ¹5bü¼rQ?UÞÕhÓ:b<ø¿‘±$@Øg;ø\ü|°hJã–@Š$OΆiµwvâÜÌ> mÃ׎¬œ4u**KœKGGpܦËbdaU5{"Hw ?h"T'A¶õ¨Ó ÜïˆðnÁû}KììËY½‰-$x-<ë}¨ˆdÙ‘e«:~€Ýž^]2X¢ñûa¥iõºs? g•w,Yaosü¡ÊºRnæß±ûk'XF9í¹ÛÏòãòß[é3ÁœËÈe÷Ú)¼¨ùlóÕCÐyøeì<>ôáoâZY¦»’›rp…uA°2dËû˜´î8m%—ñ|øMŒ+ì2FQZ¢ &ººrñD¢ ž5„8(kèÉ}wàˆ\É&}Oºÿbg’ endstream endobj 376 0 obj << /Length1 2028 /Length2 15138 /Length3 0 /Length 16374 /Filter /FlateDecode >> stream xÚõPžÙ¶ŠânàöÁÝÝÝÝ]~ÜÝ îî\‚C‚ww îî®—îÞg§Ïy¯êÞ¢ ¾1m1ל R"eZA;# ˜­3-#@XV‰ÀÀÀLÇÀÀGJªbál üÇ Gªtt²°³åú—_Øhèüa1tþ“µ³H¹X™Œl\Œì\ &Îÿ ´s䈺Z˜déRv¶@'8Ra;{G 3sçSþç@aL `ääd§ù; ht´06´È:›m>N46´(Û[=þW sgg{.zz777:C':;G3>J€›…³9@ èttšþ’ 3´þ-ŒŽ bnáôYÙÎÔÙÍÐø0X[m>\lM€Ž€³Ê’2y{ í?Á2ÿÐþÓ#ãËý'û¯B¶'ÛÙØÚzXØšL-¬y1:gwg€¡­É_†ÖNvù†®†Ö†F7ˆ * ?ôýG“±£…½³“…õ_ éÿ*óÑdQ[a; ­³Ü_üD,Æ]÷ ÿûZ­líÜl½þù6µ°51ýK‚‰‹=½ª­…ƒ PRä?&¸?63 3€•“ tÝÍéÿ*®âaüÛÉø—ùƒ¿—½=ÀôCÐÇÂøñÎËÉÐpvtúxýÛñ¿##ÀÄÂØ`4³°…ûSýà 4ýܼ£…;@›ácð ýü÷K÷c¶Lìl­=þ„ÿ}¹ô‚šrRÔ þ¯KHÈÎàEËÌ  ebe020³Ø?>|þwC‹ÿ°`ø“+ikjàü‡ìG—þ‡°ënŸâ?‹A øßµäì>& ø3à: ¬ Æ¿ÿ?ùß)ÿÿ¦û¯*ÿ/þùˆ¹X[ÿí¥øËýÿã5´±°öøÿc^]œ?f_Öîclÿo¨:ðŸu•šX¸Øü_¯¤³áÇÚšYÿ·‰Nbî@ gcóFå»ê_ fma T°s²øëAÐ220üßÇV[}<Nóø· ø±4ÿûHQ[c;“¿¶‹‰• `èèhè÷qňàÅø±†&@÷¿'@Ogkçü‘øç0µs„ûë>ÙXô‚™þAìzá?ˆ@/ò_ÄΠûƒôâÓÇèýAlz™?裦ìôQS㣦ÂÄ  Wþƒ>˜©þq~T1üƒ>ªýAœzãÿ"–ôñ&ü‰þ«¯ô&ÿ‚Üÿ…m£ÿçRÿ|È1ýÿBâ™ÿ‚®ÿ*ð—ßÎÅñ_ù!fÿ‚ŒÌÿ?„Yü ~h±þücó2~P·ýsÔGl?æâ_þ-v´$Ûý/÷7û?î©ög÷¯f0~ûuÆrNÎû ]ÿbðîôñ,ýIø¨ù§uëMïlîüWw>8»Ùý+áCƒË¿à‡|×õú£€ÇÂNO ã?Ùÿkî]?^ý¿ß¥¥øü÷¿ Ðh ·4ogÌdYÔöP#ˆëF»;Î;Cº«žFIëµäØîò„LY°îx'˜<Ô²²-Jq+°LøêuÜÜÚ’¨Øúìý¢¯4µÛ ·8‰Ñ?Qx,X߇‹G«"°çýêà­æoÞ Ú!EúÍÁ…I!íÁ­Wܽ¾¯ü÷hÈü®â^5›4üKù4m´j”ŽÉ,ižQö1”3-> ê…;òìíÝ jîÄ;¡T<5œÏI4s‘—ÖSÌãœçj… “S'öl-,|ð[ÔÑ)2/¡ƒ)̯Ң•þE÷fž"Â\DšÔZº¦Ìj ¥HÛÆžZ×Ñ¥_Œ;ß’Aä¸ýh;‰µeŸõ‰åÑ«[õ#Ñœk™­€ø¿L…VÛîÔºL-Sñ–9§ëßsìD‰µˆ9ánc«\Ìy¹…Rnçc…§ñi’Ò–›Ï¦Øê/˜¯’8'tV®Â#£êú«¬µÑ%f¿ÕµnSÕïä_|Wt‰¤‰Ý{ç]N¤f‹¢øÅÆ–ÙŽ¥²1ÂAøÀ /…ô ¦L‘Èy˜~ÅÅï$à)WBybdCðÑ7[­ï¶o ýR¨$¶¼ìöOXÁrÞðÑF]&AOÕ¶ß‹ßÕGÖ‡‡>½ÌG8Ô„>]ú|G4Ôüì4ùiœÐÅwe‚>ŒCH(ÌDí?ü…ªáÄ»èy%ÄŠ2»±Fäéd`Yx:")B5¥ JÄmäñâ0‘>®'y*"¡¢€Ü%I™éýƵuuÜÿÁ7lÏÃùnDÚ„xx×”H+{"˜ŸîèçÀ@ÑÙè­ŠÍ|¡Wë=‰›¬o#¢ªÚAZbueŠ7”kS˜+f&@l1ÉÔ"GUÚ~)ßwÜH÷[³S–i³JÄX¯®%¿ŠúûÄŒdÄ =öÃ/o »—iò²Ïåü:™#P¸2ŸÃ!¶Êb2`Ó¸¢²˜é¥ys—üE%OOœÒ ßçÌÈýÅ:`pô±“7ÿlO’'Dï³°üµõù¼¿¶®XIYï[ÆŒÂÈtÃP±ÛÃhŠ_¾ÙuX wH$HÍeAA«Ÿ+~w•/ QLIâ‘A tÊÝÛÛ!ô §ÝLãòÚõùÒdÃõN>ìS+öÁ†wê±á7‹ Mü¤Æ2Íê·ï4kâ,8‰z­ïõ«(j°'Aý|ó³%6ÅŽÔÂâ-¹]…¦Û•†”Ì‹m‘X’XÁ…OÕaºØ6Óç<ç0wk`»¼àzÁåæÀ2oÅ#YBO/ '3Žÿ+q4‡`mOhLÔ¯5é7Tsý†õÙ‡½±î õ²#‹ Ð&–\H§Xýµ_Ù߉+膌h¶§V0Ê¡¶<3rŽw÷~©t›XÿxÀþÍ¡ß )^ji9á.,¦RÑ[ NÜÆèŠ—M–š¨†)à#Ä‘¤^R’ß2äü ’ÓÆÌìê~mÚivUß?ÞÇ]ûv€ˆNKØlU0÷ñwáè-ø §ëÅ”‰9ç A¤ôËäWþ  ÞçY¿X ‚^ÑóN¾ð¤ŸP6Š3X#|92ï¥Y™/§páC×¥Þ‡à©L|¸DTÑþþ¸ä8¤yrþ˜Hóìx`³ùö|Ÿ¯ÔÑ:¡Û‡@àå¼d–¸¨køz^‹®©Á{ÆRRn›¸TcFî )ͯFxJV—}ÁŠ,sªh™}Ò“ WTà>+»ÐêbAP] xÑüð£Pû9Ùºÿp½˜fÙµ¡£'ˆˆzv^K·ø†â”XÃ6Ô¢›´:0©DsàZŽWÄ£™Ù@Ó*‚g¡yäe¹õ6b¿Úx‘‹5`Hà¿5wFFÑ ?J¡IGy«Õ¡æIÍ.8àÃRýó+Üóúa3ÂFG[3ÚïiæG2ÊÅmÖEbyUû ï!›ú<©ºúÇÆŠI¿Mx8õ&`u ¿®ÄA¯a®qÌùLŸ½C|¿/lw(lrQŒÈŽZr¤·”™¸l‹¢¬Y«äÏp¿­yPkï£84¼!ùÎᱡ†ÃÃ"A©Šß#ù”ÀñÓªa$¶wLéùÖ›ûfÜŠZ"sÔ¯HW;@dqÏ$4Êîý\?= 7·Î?áqŠ–N6ÊvÉ5^†&užd0ebTYÖÇèóýF±Ü£lùį́aEûó‚ôþ2˜ÿ#Äzñµ¢À&øÏwþGTW ÿµ6[ ß¼3†Û\ß:ò½éÕNñ¦NS8",–W ÎïævßÛ3p&Xfê•¿*?+_QˆÎIùNŠø!)»ÃÙúý º«I®‡mÿtŒŸj'DY—û9 ‰(A9ðh¶xümÝÀšó±*¼ÄÜk_,ÚŠSèœ cÕýq¥‡…"–xü†ô…]æJ’#0y©boßÍ3â¨ó‰³æ¹ù:;3ŠÞV÷ƒ-áu³Ó¤V( <2™uCÂð=y'b#©Ÿ&ßÓ¸Z«œÝ‰ÿÀbdÐuÿ*Œe/·ûyÔ[oåMæp73ò.%Ô‘øµs]뢩”.v0Ìí0“× ¥…#c4}ŠI–fß &£ êãBÒ¨ù¡ê›ÏͶcÓOp=ZY+êˆñU£íz{_ëßñn¬tHµœ†(*í0±ó”…ß{P¿ýBÑ7!ç„«cÇ2DÔñc'áå ?ç%ª¬}çph–tqªZð#gæî8‹OÉQÚ“s¦°ãƒC&.GB†Ã‘G~o1@L´ûän4t.Šx3‘)O!³ÚtSç<-ž4`nhlDkq} êÖ Ì9ñS7ƒ‚Ÿ¤±ò˜d¬ââ„}ìwšÈœ9 IhJÓfÅЉïï+,(ãÄ(ªàqøD~¾H¢“]öLra¥ „:®{ŠkGqµZIˆáæÌc%ÕÈŒÉúKXyp¡s3A7ƒŠáNF®­pθaS=m½_ø<Îxi·¼÷#*D:W$„¾¿µŒ4ŽÐÓwï¬î@šMÙÌ?Bð+÷bŠ=Ê㢈vÙ²Ïô­¨®ÇD¨&™.­æ/´‰"!Oº¿VÚµöü YžÕO,)T2<Æ[xX·Åî§šã}Ûªv]O^gzM88ظ-^p>ÂÛBïE´­kxǺXúÇXÇÓ¨½S/Ý‘Ð绦­ÁÉÔæ‹D}ŠÅ‡Q—žu×|D”éîÚYk«¬dÛoø:$H†%fqà/_PYÇ¿˜CNpÏÚ|Uu/£ôNïÛU*¶7…¥ÒI–@CëtB¡ „#¤ ØÿÕÇK“ô…ÒóxÉ*ÈÈêÏ•?LJEÔ“a]CßL™xMeµCô×lâ˜é*ÁKCšf*<ž2Æ™gJêr}¡t$¢ýûƒ1Oßpé"¿È”ÿìnõã]Æ.ìnFƻЀ8?Fq±_©ó4§èƒ2å êtŸÐŽ;—áæQ°éLu¤Yª>.Ï"ûí{¦\Š y éŒ>ãs‡ øf'¸‡½XDÓU/ßÊ…Î:¹°;¸¯Œ\+åtß¹ÚdìZÒmý9<Ã*ñsM^ÆMø ¶ @'¹¯ìÙo°×-ãmìÐãÖSŽ˜910>ÚPó\’˜V;¼Lõ—‹x÷Bh ÅøæfNýb5Ö- ˜ z;„Eƒ½dë ÐÜáÉ“¶Ù ¡b´zÅðæâ†Êq9ä­|¹”Ð0óŠ* é³Ògj“ƒN·äo[j%6ßb}Û®§Þf)O¼%w<²Šü3p0áòãÞI£3l-0¡?yb˜Epu‘Ë‘p#yñ¥/f˵|(…,vI<î!¤ÈŽ­6]æœüÞÌÕ!WqDµ •ð1ÝÀQ¹g) 1ŸTÄ4×ýÇ»\hà1e UR×FbNbîñ{ˆ¬ÙìÁ'(┤ÈX§KvÇC=E(î9€ê·q‡É¢Mò€¨Óf # 9ÎÓ£BTIñ›h&‡!ÙØâ0) û{ÜõzÔ6‹ÑØn™wÎcF xË /w=˜Û…óÙiU3e*¼S ”{£n YDÙ'ˆ¢ks-}ùÒÝB5E’œ#)îÞ ìò!Pf¶Ei EÓ²áQØ—Y”RžÚ§´—Cd…&“É^ó=©¼ö€X€Å.2¦Ôಀ¦nh)<{w *wÊ´g9PÐcÂEÍ‚dâúã…¬Z„«ÑDž ´SŒG‘Qß>Ôª¯¾ŸG(´ŸlCx9^Öíí;m Ãînu,¶·ÁC´Íxàhœ÷6Ÿ5C¬,^Ä¥Nt$«‘ˆµöšzJk–å!ŸÔ®Ë%E¬ÒJéÆdj_hìóYw ªXÍäéú²ÅV6cç^Šë΂Îz(E›CJsØV´†C´–v‹ŸŒŽ« ¶ `„”YŠ9ç~áŸ::ëÇ»Ñ'yµ^Æ¿lÔ¢‡I2sO°Ä˜mÞ8ÑÔNîí†cew¥wý>5QtBØk³ Ã? ÖW¦ôˆM¨)¾äóZĽ )ú,Í ÞG‹ç‰F.wFoD„W†$aª)#8åûê¸?Épú›Î4#†ÉöÖØŽ&²Êl•µÚqˆ$¤éÎû0Ȧšu zdwÚNêÆ¾W"êR¸¡ÑÎÅ þµðMÑcÖ‹LѪ+ŸèÂJ Ø6:lkÁðøõš#ØÐÆÁiÑ:£™(™i£áâ-¯¯D35- Õ Ú'µF4CF¤Z|B™ŠR@Ž#œ•R¸ÿ7M&–ÛíÃé ÞöY6bYOç˜Ýß‚R”º2‰YPŽ~QT’¶)Õ¹ÂzûŠD’í¨%˜Šj Y5é»QZu/¨ÆLËsqª(!…sÜã0BQ©HbF—bsÕÉñ7~˜¶¹?R%ñ ezQ·ñTÝ™Avt‡):OÊg›w8»K±š’.'XN•ühð£Œ9øד±\…âU&Õû ¥7r_¤ÌÊ!Ÿleœv¼„4‡u-±“˜¾i -;ÇDœÝ^Yü¹f­³WŽ‚úÞ%\_÷Í .œ“Óh ¥«4ãå)\ ÚÂï!ߢˊI0“o— /P¯nõ[ÉsŠ×ôSøa 僙¥àj"¹{¨‘‚ Oõv‘Þt Í rOžëÜ®Í"¼Q|-OU-½rØ`7¯ì(§¾öo%æÍ'A&j¹@“câ-W16XÑÛís:ä¼ñ-9¹\üíî}Bs,ô¨oBÔ é}>ÖéH:V éÍ'ô>jè@j–V9Rô5Èì˜I¡¹3mM¦¶¤[Ø |Zƒ—OQÉáIñ—cñDE%´Þe·Jj²Žl°&_>YFßw«âä¶TFŸRÒÐÝ]!:w&Â`]ú…åÜ5ÄÚ2îšm=§~•²7¾’Ø>Úì|^“¯{[ Árëv“w¡’x@²q7ŽÈNW+˜íâ¬èvà¨a*œøÄ|™?~uµà7—y“H篜E=ˆ)@†Ü¯Ó;¥Û™m¤¾žG”/·Vd¿„nØsÆ`Ûf»jÛ:'*Ð`} ìÈuYsÿiwöD‚·`$þàóÖh¶ú\p /‚xaÕÅFîFEç7Üílíª­õrÔO–ý ÞšàŠ,„ƒ{Â<èZÀ‰Å3L»Ý'¾è“¨k5ˆ2ô.$%¶ÐûâK‹¨"ÙöÏ[ Ñt1Ü>˜ëJ óþÙ ÏDÇÌÔB ,òOë…uÇŸEvíwž¬À‘|Õ ¢U瑬»¯Äâßx'z6¿ùJ>£Y‰…Ÿ ®s<¸E–3»:¼M'&¼yãúY×`t2 -°ß[ï‚çÓ’HÊMѰÞUÉŒZÉŠPpŽ›)•‹_Ë’«ßÂ^ÕºfÛº:$²c)µß±w¡œ”ÚÚØk D×&:?•´„sL“•Xâ箚vË(KHULhXtÙ¹ ‹ß%í¾Tú¼)]ÿP#w¥•éXº*Õ€Mt´ ¯ªPõ°~¿Õ…É’ÍR4Ïx]Bˆ:7 °èfI+¥Y:µÇ'ÓùÉísÛ…éÚ‹ñ‰–¼ÿ0áq°9¹}'‡²!±Ô)?˜KÌõqLÿ“aù¼‹Lµˆì[fûrSÝ#þ×½{¯Ä2R°Žo(öŸxõökuIJ³ÎO•0Hg÷ÒhY2;˜}Ð~åH„`¿ØÙ@²»âM%ÒO«Ked¡Æn3UMãI²^´óu 8:,ö®‡›Ç]Ö¸ú¡CŸeA%™üŸ‰¸¿íŠZª§‰¬@jººf‡7 ½¤ŽŠž-ýVptë;]šzDFù.Û«LÛ¶öc#É÷Ì Dó,w{eÏîàyÐGE5ŸQNp"9 XJ±^T÷}À"»Phõiÿ;{94MJæsS¯'¬£·x…šIÛ ã¦éûÝ^_:‚jár`ç ¶ â衾VÀªkG,VŠA¯½GSßùT(ã*“Z³V%êã“Cn“œ6$ûe2ì”nÝ ¦#¶)#fXgŸÍ)©x sÉÕ`èŸtr(î>£Cc¥)ŠhÚð“™é5gøm"¯ä-í¼R\Üqþôq¨î”€ç08ïô|óéùê?ÉY5^Á¯«žc E>´º;÷ž® T¥‹oîdÛ5²!ÐJDøžH7š Ù±˜vžårZ crT}›º$Ê™gÌÔÀšú%]¼îùtÉl#É_!1Ï÷„‰ô–ƒZ“IÁEÖå0|Aà#i‹k= )¹÷òæƒluý^"àݸˆ²òš¡¦õˆÛ5öø …¡L’.("¯<£7Có;9¬~ 1ù,ÚtØX –{—a¿_Á¹,7R-¸Ö9kQÓX «ˆ<yB¹Tû$É[á{ò«©¶&êÎ’•Ïdÿâ™ñ½ß=" õÃ{OCÛc%¶´l™ƒÒj:Ä,q®‡¯/KXì”–J*Ã7MWÊÙƒê~p„ÜÇôL ›6š¬ô_° ­S25J]¶Ùt¦¢$ Æ“?÷ãMÑD‹-J-˜j´Øjdx\¼ <_Ú5ît§Ikî7v_YO9¾B˜.ÊÄkÙ™nÛPîœ^SÞS¶³¡ùÊ:ÿFÏ=^HÜ íhÓã_Û:½-‡¾É>Q`,šýDȇ+™l¼a]¨úÖLÃ9t:ïãªBzJÛ+~)'¬±1ÔéSÊÎézê9Ç©;¦NXiü ME²š.ø‰¦t¶«™µ åËÇ ãð¾3»ìä­Âþ Úp˜ÔŽ˜!E•îØ‘ïn)¯zyhŒšP=W?7Qd‹ðm-GÉ"¼CË{Õá 4}Ð7Köb fHQ,0k §¼©ûº™‰èx¯—³ÆC ,J¥Ë`mbåSö!&¼"ÒÜàÊÜe­«Ã%ûûðÌ'ÛX,IÔóÎM¸±| Ó¥ˆ$#À8.Ý>Ía–-0‚4¼JöZ´Åð]çºì¿½jÍG#¯ÕJÅÁ³·‰jߎ|–IÞC3PÔXecFØü—¡:ȧw¢oUê·H ÏerG[:³[ŸºÌ´D@)qá…λ ,]bØ.ãË~ßúNNEÎÑí®m”KIîDF<<±)eÒÁ›*¤Úû«MEpòi¨ ¯r›N^ÜT8{Oâª%4fdð¬\ÊxF1oº®ç·Õ%DÆuÇ+«¡ “: ~æˆØ×:߃ c¦bE#$Š;H‚ÍË’)bµ´sœcº ðjÃ3,öwØ ÚàèÌëÅ«xoܺö]1q¬D<ý2™í³Eù KUïRÛQ)0ÿÙ$1BVV ßU¢±sÑiÒíî§ÙEêFè8s?'9PÅíkb-‘+¬ HwÄõ0ç o…aî«‰Š¶:éîlÆÀ«ÜªOÀØR‹Á‰Úy!&Bº§k8À÷je#þ÷ÙõXq/9£G0†·¸¹Wc/¯doÕTzJõê·õyn*BKåE Ô•qÛ3ïÏ–:?T:›eùuµv ~Йa¹Ï$—Ýv§aØÜöRëm~Vœ(göˆÛÐe2Sz˜&" *G£1šZ[üÊ;Ä%B^j2Mè´Si_dDý]xœðg\MbWH ϳ6¬ë&³¶QrÙ§JÙ¢  O‚j¦Åòã`ÑmØ“ „À*. ïg¡Ón%ú$P 3>¤¼ŠjP7f÷AþÆÙi‰þáS^<¯¦k?¬‹ –%HåC’ê±eÃcì÷ §Gydn­/¾¦[}A7Ôá‚M ò‚}OØ×ˆRÁiš&W2;‰,l€äâ :äaÆNÕÀÕÖs:JÜúF=wÑKñ~…‹‹bð’Ÿ—žÜÊf1Iîø”ï»:ù¹§lœ'"~ñÉ2âÇFS§QIŽÿ[]J,×m€EïV;wfâ{(ïg*È%ªœ:×$cÀ«Uͦ;ÁŠû!ÿR]ÖEv°Ãô£ºä¡ý7Êù²D2îÉâ•ß µjºÃ[G—¯a¿ ÍÍžS+§îû—Ìß…tOïN¢ÔUƒi´j9"¨Z6øÔŠÆúo³{Ø>Tä­Pžßò±>éˆr8tS'Œ}¯h¿Õ:ªC­³RÍ^’…öÙßÔ? c• d/\X^cØ…4èºû_)­‡‚l%D{ŸWÖFì¶ßà \ë"°Ù'ø‹ÆnUAbšáù“‚»…²Å[åBy Ù‰õ@‡}/ çchb­Y0ñq¹Ÿ>³Ûy{ VÇtÆ4ÑÊhn9oÃŽßÅVþqsÁ-Y‰œº! ÚF…/E©½òûµÄ‰êÅñ÷K¦·(ûÈ%£®Xº¡?üÁpCÂãÆËJGÜøÖÏ4õñ /ë<¤¯šÞ‹µ]-˜<Û¦"Ÿ_XÅÓÐR÷bZ‡‡©@sø|ÌŸ_ „Ï[϶®RÌ‘¢¨ù\°Â¯Öb .~9’Ožw•ÏúÇ#‡ýdŸòîõ&?8µPy÷ÀÙ¼ê\‡ÌËYWK«<”oÚ æ2³C—FPØ ,¶ê¨(S§§”&¡ÂÕHW)g E«z™`A/‡9}/8âÊp?£W°'xB[Jó ½œCÅ@+N±\[%úfM¢}QC¶¨ª:y(Xû‚ k¼6DŠ`ÀÂùÔ>äÁ3Ùú5g‘ûºòìä·½‡»I¬÷-«!Hˆ¸ëå*õ·0I)^ƒR÷_{õâq¿T«Ñ¡ú#0rh}.ý½$F±Èô„R=gò+‡ç­°_Aê¡S”h\;r™MAc†&£9¤ÔßÓŽ•êúQ½,O¸]ÜF-(ø¯¾È`TaØõ³1¢qßÑáJzÓùŠ©¯'Ÿ›’—yÎ÷L~>a×ÔÄ©V)®öT°\C9ÙÅI m›ºN«'‚„\$›à—ÿ\˜L¢1¥¯­,Uñ‰|k9ÖÍ@Š®“Óo?ˆ8dÝ®ÞmBp™ëwÐ|½³É ‡g/ö&¬Ón@}:mÿêî)ÔÄÿÅÆU+1Ÿ¡EMü½~B3ÝŸ"–LîЮ’ëÂ:~w~¿sjƒ›±Ó¾üÓæ¸B½2VO±¶Pü“šmˆÅò$&Òìú×JjD9‚H÷/ÆF™i² ¯«ü«»†ûíƒÖÃO[dWx¤ô3êüÖ‚žš‚^’¬ok³±,š!‡Új3ÇÛÅ=}¼ *c[h&Pß‹n¯¶vˆ(°‰I¬T}Äæhce_åÇÊqk¨Ré~PÏÙ ¯>)ëæ»Ú§c܉ ­ß…:òÑ?ƒí)ƒ3nœoèt`D@¯çPDpì®ëúê7–a‹Ë9}Ug,ÅéÛjL31Ãß³2v–MÃcA‡ƒûN°#8¯ëÆ- ¶¯)e\+!m1NûÉÔXß:~°pÊòÜü.±›N N°Ù:ózèzF·GvJf"÷ó‚àé1É%­/Ê›Á~9’«ñ²‘ÁÓ}øõlœW¥#tF·0/—¢’³%Çd;SG› l{¬êÆ šø¶‘~œµâÆ=¶›Í*ú2LepÿñÒ«êìÂ8"ãNió>G{îõ/¥ƒÌ9}Ò´0³¦6 wºÿ¶uŽ›†ö`%¶J_žö—WåOž6ŽPú¤;rC†DÜQ²Mžª¤³uõ; D ª 2Ô_Ñ0?‡øsçt–Á&çâD ÃF¢YÂ>¢‘€BnÆ»½šÂ]¨ÚyïZŒŠü0š,5æò”{@P—À(ÐÇî‡ìÔ÷˜ëGuf^¯pж1rmWº”´X9Â/íOCŸ@%‡\ñHîˆN@  °„m›>œäu]ø`ÀnBïyi–òaOrîì©!ƒª ìnk‚"¨’‚½†‘»ƒÆ›*<†Æ"°ôÍkiK% Ø[uO0p…&!Ýšæœý s:}Õ‹~…¿ YA0oâã̼VcPåØœ†BÎ#.³_€ºùÒõÃ-ØÓâHL Ü·?˜vó%þB˵e%Áh?./çÎ\võSIKÛÿ¢øfÒUŠÒaw,ü™™L ërb×õ±WÑ’pÝJ+$Œ›ø÷ÀF€´æ½â(z—‘Ô5…WWݼÃÉzÍxÙ"Ï7¸ê{ùŒS® Í­È(Ãizßù¾U½ ÉÌÿ‚ø‘Ö9Wœr…þ5ߑ׿aBJe3>ìÍ;»ºÆ2„žëÆÆ‘µ–WøÍ"?ˆc40¬ÅiðànàîÇ?¤áî‡^™Ò›eW;g…]¢}£EçsÒµüT»˜yöp& VëÙ£‰Ý>•÷2=õ~EÞ™h2[sÄÈ[ 3öîJº¹ºÈy0³À$Ç÷¹º1 ‡Õ—Vø|B?'TªÙóÜ¿“DØX£h6Ÿµ n’Zñ\éÊÃõzÙ0KÞ6%d·Î—ù¤K'Þõ°@#é¦泦]Ÿ®òL„ëå&­žÿ‰ižà€–}óVl×Ò7À²GâWï׳_ž`–d?¯èñsxÄ•¸BÏ–qtŽ“‰Db›W†Ž½2BMò{)ñg3ëxÚ„àJw :Üí ¢‡èΤĉԑ†Cµ¨ÕÝ7¥ï«ªÅO5£‚`wžBñæÙê9tÃU}yÈ©$Å!ÊcõR3?Ã*;>›/ø:½ˆq,×WsßgI} (äè=ÕÁ²Ü¥ïÕÏ¡€5yÕîlè¡:A°±×TèBÆ¿l>é+ØâÔa¯¯§Z½½vª;å6ÑF‚–§âµª°b÷§­Gqvã„1äÉÛLFfJçk‘æ¦j ™Ì$÷“éÉK…<‡3‰0§o8FÎᥢ¿ãªóö‹%ÒÙ8vÒb ýÎ?Ù«·åCè$ÏØ¥XÓÕüÔ eå”é}ætÊ_6›µ=ŒZ¢ü,'ÅD/%©]çóÄz¿ /ÔªÞÌœêUçaÞT…;¼f0Œ±åL/íYÃûî”kl)ÏêÙ $F¯ÄI{·‘Œ±Óz‰YiV© +wÇ ¨|2JžgM ˆ§ðöúJ ô,ãYÕ{Ü\ìoV·‹IY¸#´ÖÅy;W²ÕÓå±×1=®ÀüeÙ¨cÐí™ÍôPCšÝ0’Äœ%yYÝüÐÌî¾¥y’ÓHklˆÚ[)ÝŽÞM¦w WÚ±’ïÉ!'ÏÍü&8,2rN™„4:X×÷=²‰"i;#R\IÍ1èª-ðµ äçkwÕÀä––ÌÁ:°8‹]BÑB}éì!-ÓŸ~U¤7hǬR?Ù ®'Ì—¸FÏp¬¼ÐÍñŠ‹`‚‰[³e÷. ‰òÚo\9¢Y³ôâ*Íd Äñ»×@ú;y²jE¨iÇ|ìÌ™þ¤XÏ "K„ÿŽ/HìäS÷㾊®µôÉõÊ…;"î­k…׌ …ø´¡/Ô­£½~rZµF·µ]þÑ~éÀÀ¥ ».³qýi“@ë¯lz7/;K;’•f^v-vËsüu'¥4 ´ÁòåQzϵœ÷U8¾|ЦÔÊY9%E'B/&º]¶z>§«§0çü{y|APàXbBަÅ[‚ªV¿Cf •ÂôwÔ¼ÓÛÉv‡«[­oáY0Ñ˵4ÒT6QSÞ³°¹§ÄÃ1áRO¾sÊVæºèX8™d«SóqŠ(ÙÿA ž?LŒ]í§mîÌ m5²5½Ã×óÝ µpÍ.|fþv*ú§óî!båõ0¢µØ§.íΜû0¦†¼äzz‰"šÞ¾]~z—¬¯i‰3\ú‹ü ©Yö·M_m‹ãgãNú³9ë C—‡§e¨Öà._²¾ \èŒ-¶t? ­9-f‘;0Ì`Ô;âÀ+S©N¸6Ò.éqì¸TjŸ‹5ÖwYÏæjGÍÀ¬È -Q©Ì!뤖[I܈C…Û‰½HýBr:OzÞÕLmVC—(ÖY¼Â¥ç„B•¾>=ú©½Ømµ” ԬĶ ñžÖ„i=å$¡SÛPæéÔ¼‰ÂˆÆI·ãs^± ÐgMŸ·‘ãùkÙ:mc­K$uƒFRF<,ˆ"„6Tc¬UxhK^ËÅYkæ–èý„l?ûÒU(, fý³iæŸ+¨Òl!Iï;Ë%M¿G*ÈeAb WŒ˜`›˜3#¢GEðÜÝ „G[G|?Qüm2©þ2JOF„µ+úÚ90QÆ:HK§ªX* ܘϔö˜oéBþÙÿ<öEßD.i<Ás§8´sì4ÓÞ4Ü>[a•ö“缎¤þµjù6(ŸµÏ’ÒVSžPÌ1࢑K†”¾¯Yˆ½l"Ó\6mæwì•5¸:2Nè)ßGü9s®>« ÎÌ«8Í"ÒܢT|ú¤ÿý £*” ‡*ä–¦yY¡…ë“{ÊÃïx7Àc³.èG:߃û ˆ] g5ÛêWêâïÂt¤¹§?¹ró§)1/ ~…µÕ D7vyn„jD&D0ï¯ÄÓÕ·ÃÅ. /1˜+Sͬäò’ cEWT’™gHëÇÓ3‡øÞny* ŸÖ ÓÞ¥ ™EY¸)n¶„=è—y?ǵákƒël:tˆcãXƒ°.mšòr½‰»Ì(ºTØ£Ò>‰ð-+cüxg+À·æ–¹2ܪKTC¯†šÍç÷פƒ•¤$!m¯Î.ÚÜÏvÂdåó²Qôh[9»2òªÌV {™.î/ýª­_¦¢]ú4NÆÜJHêñÕÜa¤1ØH(èPpx¡Á=ʃ­5)½{ÿ³@Ù»­©¨ˆ’ÿOü+tâíà çU‰¥;’uº.hÂ28ÇÞÍù0fk{'±¶¦ŸqÂ3÷ÙVpoI4US°cô}“!9«œ,=»é¿Ï6Ýleš“[&7Aæ )pLõh_¬,¥,H`"gr>¥1“;EÂJÃp¸W´1”ožå ò$1‰žtHĘRï"vÊ5:^³k-ÚYœf×È4H»N·kHEÖ¡ÏÆ¡RåŽP ßz€ë»†ÔÂDÇŸÏùö‹˜î "N‡¯ÿö]ô ¦Í.å'‹ï²h±]>ÆÔZ­DÂW1KðmòD,ýâ‡RÒ3¸£¿íŠ´™¬èÌGÆ„’Ó7™|Æ1Åø2†Õfî&Ò{¾™‹×ìbªèåPF¬^rç´4¶òÅïî”ñu}¥ÌÐ¥¢”@§j`‘fF²³ßÛþ%ÄÆ„éN>õ¬ñº}sæjQ~Å{°·œ1&eÅyDsËœo þ9Sù› ñcõn{Y¢¡© TÂlød§‚gˆö²‡Š¼}°ys—ÇÂPx÷hE% >¼©64›1ÿfÐÿwš«Ì²z36B?µæ­|[¡†+èuh´o†:üåu…ß5ðb:Z´ õDùˆõÚY®­ò?ñò4¶™~fÐ,¦¹¥®±9´ ¬EnžÑ"L‹„ÍsÎ’$¡u‚Ý-5—J§_³òÚÛˆò5õâ7…Ci«±¨á}J,¼UÈ¿0_øši­UQ¥îÈë8âTߪRªþ¦ÐîÈæ÷DÀ0²6úx­gã¥ÀcÆÜ“¬œ†›l0üµšQPo+­¬A3bBÞúNx÷èKn ÄØn_µb8ÄÏ'ó€ÆÐÖ£xN'{^¶·ãw@ˆ9_¤:å»”anRäf^cˆ¯íž¾ÍÙ(‘µÅÐZ^2&¾’^p’ƒÜÆKw_YýÜq’*‘^yVךýœØûoÚìxêéÝ3lm$fNÞ«s'Òq„ŽD˜Ž 4C“ 3\˜nåE‘F'JÍÖ¶×ãlY‘Õé…Ÿ§#%å·• àeí…Šaz ¶rÒ¾rK(ñœ»£`Z‰´¿¹¯? ÉæÊºWd 1tžû‚Œ—¼Û µT„K¤+T¡€]žÁ½peb¹¿©¬ˆf‚ÍZ-ì˜öS®R2¶ôíîñ32m!L*ž3ôqõ²U×G¬û~¡ÈK\iä%å˜k2æ4c¦‚Û Ú5#»¥?æoŒb½Cx±¼}n‘ íßQÀ•tŠSV3¹ãwAÁ޹)FD ¼2¾M¯æQHQ„b؃¸’Ñ’¹ýæ —pMšdPóý¤‘Àð`M ꄌΛ`ÂeòJ ÜW3çš$LI;l.î(¢JùY6§§W«sÇV(Æu¯Œ‹lÁß§Jv^ÀpÏXß\¡üª‘¹ÐûúëBBàÒÖщ|Ù¤zL¢µwF§U¡×ÌT®»s3^EB[‘[DP¦|ÊiÅ93ìûÅ%!ãàp ª`sØá(T§K›ýÀ„lƒó;ß×(0B-pÂÓ‡ÆîKUw<›v‡­ºm;£F*UÙàÞ– µCnÖÑùJ¬ÂÛ†\5}@ôŠb˜D½J*¨œ/ëV|9ôs&Ûrh¢ó4Ø>•9ª¬ñ¨âùqpà ²²À×—ØZ—%È pˆœé™ˆ_ëË-ÛîÍGo©¦¿»52Iø¡¥4k\m=Mº‘2˜%lknÅ¥ªŠ®~Ó¡øeV*Š{*0¤R@Î-lfPmW‘ùþæ0dÃFTD-ÉtJr™”1WG¦ì•PSoƒIq¾žÍ;Òó'ä>ÃË8  }Håz5|"ÂÇ—=Þ%÷«FŽ´ó¼î)N1ÌZò®'£·q — V‹q¨=[:±%¿t ävç|w‘±LÕíöfç¨ûìAÉÔ:rƒ wfz¸æáGóøú²ÄŠpEký¢n$ÓæËËÜ@§‘ÝÂe/ÈÅlkì­¿M^¿b…Ô BONk…©FFõ„ˆàÖ¼½™ZÍЬ¨Æô´Ú;h°˜¨p ÊGváèqä}¯J ?~ïWú•EŸå¶ˆeÑ¢”R»è¾Â“aïiˆÿ3€½fIé?@R3?aN´%JL¤šZ ë¢æöÙTK'e 2dƇ¡}{÷•CAZ+ÃŽp[5꾆Î6>Ô¹øQ¿8€|G@âN>u5Í»Î$I›¯¯Eøó—Þ 2%Åp3ïü„nô¨ÏóÓU(IR‚wT%Ga®ô—nk1˜„Ê÷‹ÄLpúm…i4º\×'ý>+A”|ו§þ&Í¢ÍFÈKˆ]ñ’Aòf5’ÙÐï#üô+NM‡°]ý87E_=ôdsZíËr[®1“À=°Òâä×dCq„ï"ž®[ä—àÌ íMÄ;+øÆbM.=v:\Ç8]m‰]²ÍW¿Óé­ËFî2ZRi›ñdÔTfúßP͘#eß›î³jŸe§»i‘AYŒ9c•ä‚//~Y õÛŠ03bJµßN0ß ÓDûºouÒ˜d 4Ǧ<|vŒ+“—˜ì?æ¤Ø2Ç”¯ ñÿöU|“ HÙѽp40EÝ\tü,QÚî?e„·µï½éïôœÝF0žä‚øvÁlsñËP×Új …ªÀÙNÍîÕ½ör¥˜÷w¯‹¦ãôvIáW¡‹±?>‰@ïQ¿;6ä‘&Ÿ‘z×mMè\‡Ú^Çå³  @ÁoÅv&ŠRÊ\+Dt>Æš:9_ô]ÒÕŽãví]_aÔG\p†—ð‘ðDF˜£Ì· îóâio^1šÝS¤ûY̸¡Ç<<[{9ªðÎmIGJèmG0r}þ Ž~í'^÷õDï©î°Ýy4¿¹£–ÄËœ T>V´#…`úDO¢Bé(°ÁqîåTK± 1÷cÔ\êÜ‘‘8¢YÈ¡ºòiEd,Ð Ðøš-¥?°«Ñ”Phø{´ˆ^!ƒ&@¬0™ü³Å¦¯]>æ,ùdúÎÔkÃQš&Áªê,ê“=‡bÒ˜“EéiÒ¼Ë%Òpà™oûæn·Sl)«%4\YA "­~¼¿5W¡,^ßoüÔ8–¢¼þ³l9Q´j_@B ß~EÔ`¢XÑmáézž8ZìZh ÙÏŽ¬°ÏoÞW¿¹ê³µ”œüV0±Žp•n6^Ç;Q§5?¿Ú÷€_=ý²l’ÓÌ<|ÖEÞOêþ‘ùösï,Gº®¥ñœ®g/åt÷ÉÆeœº0$™`bEBÚqx©âÝ$þ7õì endstream endobj 378 0 obj << /Length1 1886 /Length2 12877 /Length3 0 /Length 14041 /Filter /FlateDecode >> stream xÚ÷P›ëöÀ ãNqm)¡wwww×ÁIà)îRÜŠK¡¸+VÜrÙrÎÞçÿ}3÷NfÈû[¾žg­7…ª“˜Ä $ C™Ø˜YùJŠl¬VVfVVv4**M¨=è?r4*m³‹ Ìÿ/ gú"“B_ • `€¼«=€ÀÆÍÏÆÃÏÊ `geåû!Ä™ t³±(1ä!` •ÄÑÓÙÆÊú’ç?Zs:ãŸî1³9 PB­A/Íö ˆ¹ êù?!h­¡PG~wwwf ƒ 3ÄÙJ˜Žànµ¨ƒ\@În À-” ¿[cF£hZÛ¸ü¥Ð€XBÝÎ À‹ÀÞÆvyqq[€œ/ÙrŠGø/cÅ¿ €™í¿áþöþ# øOg ¹9ÄÁö´[,mìAiEf¨”[üa´w¼øÝ€6ö@³ƒ?K¤ÅÔÀ—ÿîÏÅÜÙÆêÂìbcÿG,„y9f)°…ÄÁ†º ýQŸ¤3ÈüåÜ=Yþ¾\;0Äìý²´[Xþц…«#‹ØÆÉ$'ù·Í‹í™ àbeeåá〜 sk–?hz:‚þT²ý!~éÁ×Ûâ°|iäkc zùBóvºPgW¯÷¿ÿKhll s(À deFû'ú‹dù¿Ü¿³À€õeüج|þûdô2a°½ç?æ^1‹¬†‚®¢&Ãß-ÿW).ñx3q³˜Ø¹Xllìž—ßÿ£ ´ù»ŽùÊ-!¾¿Ê}9§ÿ”ìö÷ Ðþ½ t€ÿ¥ y™\€öŸA7dåb5ùÃöÿyÜÿtùÿ7åDùôÿ[‘´«½ýŸzÚ¿ þô@{Ï¿-^&×ú²J—]ÿ_SÐ_««²°quø¿Z9(ðeÄÀV/ÍÄÇÌÉý—ØÆEÚÆd¡j5·þkhþ’ký±nö6`*ÄÅæ €‰•õÿè^vÌÜîå%âò2™ª@/+ô¿i¥Àæ‹?v‹tvz¢½\õ q¼Ù^–Òäñç,X˜Áè‹ à¥E_€%Äí{åæ°Hþ!ú‹ø,Rÿ%V‹ô?Ä`‘û‡¸,ŠÿÐKåÿï‹Nû¿ÄÇ`þ—8Ù_ÈååŒm\ìþ1yq7û‡^Š0ÿÇó…^þŸ‹Å¿ Àú¾d°üÿ ›ð¥ Kû¿°Õ¿ð%™õ¿ Àò/_Ö—¾lÿ…/Uÿ;ÔKÙÿàË"²€ÿ…/EBþiêÅöåÇá_ê—2ÿ…/e9ý _Êrþ¾”åò/|) ú/|9o×áK•nÿ:Ž—:<ÿ…/y½þÄÿ™*sWgç—7ìŸÛÿ2rÿá?_ç Èmqb.b[Ò~[#öÚi{œsà<òEgKŠÄmW-HBðî‚£ jA¬{f'ên÷€½ä¹ÉN—ÕÎxÍ'=ŠŸp±¡ÑÒì'£Ï®Ðý‹¢+ûŽBW—¾)ØÂŠð¤Y}ÈýRtšŽˆÑél{6ë—Œ usÕM¥õ 2Mã!3ÜxL21//\H‡XVG•x­ØôL§Ü{—sÑñ£D2é_wéý£ì\›KeŒ°6é¯÷÷1.³ö…Óöz¸IL'ÓT[=RÄñ´A—í!´f.ß4D(²å¶&Îeϳu°Ÿ'ãÂï±ÑøhŒÁsmº* øÝ[Jý JvQ'7ƒ²œ-꦳(*×Zz­Ñ¢?ømE\@šà}8†ÑOZûDˆôµ‚«Ùht‚§–+TǧÆÅ”*KlR#YæXHá1C‹Ù²ô+‡K ZÀƒøªkO@Gí{ÞS2#²ç¯öTpPü1mI?“a¦+7&‡aâpÀ½7–¸´¤“ ¥ø:ê¬išôl¬7êÂ`Zûd… š4,mh%Gzá‰Û7à×dÒ4é<—ä q²g볩3«i…Í__¶UîÁÚ/ù9Òa0äop×sõë¹&Qo²òˆu½=^¡-þ9z¡=cu˳ÜÆïÉÊS¹)ëäUÚUä‰ÌPW%lµç8ˆR+7óçjuÄä äq,´äçÔ°³ÿâ2•ãëÏ/øä,6uBJ'G1zW/ZiW—‘Œ6˜¿°FÑ”Óñ( ·rÅx/cMD‘²”ñÕ¼ޮߣ@Þ㈘YY^ÅØÕ”?gƒºezWîöÓ#_ˆÅðO{ý8ª|~ûdQï]íÙO8-ýhè,’™u 6Yô¸HÀÚ¼Ó'0øA×ÃXM•‡žÉ2ºû¤n½¿ÛYª Чý`êqœë|X#±§kfÚ[:k—·‹ºÑËŽxú¼&Üúã5ßC\‰;-­²Z4MÒ>ì¹I¾“t+0g[ýÙÁ8ÛKß]ôËà³ñb†I¢ØÒN{©)£8wå'Û—&‰„ÙçPô;´­Bp5¼„ÅGËúªaKÉ¢¢lÚiÕÈÝÉHD%ï‡tœ/"C?ôÓ§ÑlÒg5³,f“Ó¥³Uá?D”H/ƒsˆ$?ÎÄ|ªÉþjßü†‚±Êõ›VêÝ~D:yOS×Ï™èà/œ… ¥¢p½EJÈW¹ðã; è¹epo»T8wE>¡¯ÓOÍ÷~_'°`æ×YRÈì¼û]/nž~’)PŠ^6ù㌤%–›gwsfj3ÄGgÆa1øðϾÁ«cóÙ,ÚNYSï†$žŽþØô€µsúŽý±óDÆCåfraK‚N¹©)O§2Ûv| ¿UQjϸ&e0×›Y8MZ¯ÌZŽh„Å´oº×u?J„îôÙ¡W/…ÄÂ*6y.ys¥é7*…ü¡NÆ\÷f¢AÑêEØR¦ÚÓÚ«Ï‘†¸ a :2Ì»!†½™_Á¨¹…2cïÙ£zi/´ã4Ÿìu‰(´Šs 7u°<ÓüF§9¿‰{¿¦qÊæpåº. ýúªÉlý·ôS?Œo4á0‹N›-¥4„¨">ââa' ve"¸€×13Ô̘ÏΞØbôbMõÉ/è¸ {Á&wSßµ;Ÿ˜h&ýë½ø&ì83& &I8ôòÊÑ)&0åá…t^=A]v!¨Î$‘ž«ËôñíÆï„O¿PŸÂëý›4UŸâOÞ>æt_̲>«b2Íšgš<öÒ92©20ÂWµxÛ´"ø ïWKWC¬•H²/Œ Œt¯ }'ÚÊ9a{µTaVKc~s—4ì.á¯{zÍ8}Öï-ˆ4_69e ’$ïv|“Õ…¡:TÁP ^ŠS~  Ÿ$ OÿQ×^¯Dlw#:ê*÷ÖØFŒ~Vì»áoóÂ,èk鎎ƒTe ¦•w»V 1ØíÍBâ‚©ÂÈ÷”Urw«ô$N‚û ÏÊÎÄK4î¿Cð½™b¾%hƶÙGØgÂÄGkÁ²×'VÐÇpÑRøreïôž. ÿõ‚`«Jƒã÷x­ÌÙŒf?‹ï~¹ÌÓý^ÎLaCðA“;µ×d~%ïГˆºb”4æÝ/YNbÈÁᤖõyà4:Ó¥m{ˆ.6ÿCq'‚O«ÇùÂ7tÈ*ú±–5Ú~nt½Â'UÅ:Þ,…éùæìmúº!V՞ϋ³EnÄÛ,çªèF˜¤¢m¢šobÂ<°7e7çR·pÆÁ×»ª '±w_×ü›4©%¼[í*q¢šoƒé®êEc@øÑʽ|T©$LÃ?ϤÉÔëQ5d÷çÆ)„õwÎÉ:ŸÁd1oÃôšËÐ]=ƒûŸÎ ¶|}ʆ!:Î6‰œ0(å¤ÌMÖåwÍÆÈltý’Vr¯ÐÕ’ö öõã´ñ»µ¼…ö½óm¹Éíµ×ëÆÞï*Ú4bÏ5>å®e,uÏe˜75žô¨5nõ#á[€&r°ç[´3Ý Ò¶†ˆúð%L®¥EP­¢9wcäév*‘Œ¼•ò™OÍáWm“´´£êõÑ›®~ïjN};4Á‡Q½h==ÛBÕò†Ò­¶‹g@’ðèð:çP%„›Á¶½nb^²tä)eìö̯NlrãM¬Þ€ÿv0¢jLû­ˆœº¶½=ç\»¤{åth:ƒ½aÝGµ|1ˆÙL2XÉŠdwDA¶Ô’J·6–‘Êã")d’ !ÏÑ\OW]£®ëªÊE{^гpAÙ·'}; Å3÷ êW§ú&¼‹Ÿ‰š1É\(T]&Ö¢]›lSªkmÜbú4…×Òß|ôaå: Ü6×:à•,¬ƒ@Pùã£Ò Àü5ÁLZÖ.´ÌÚ²ï¢áÍÇÝÔRʼõ`k·§Ÿâ⸴DRæºÜؾ_ {Þöz¶Õ® Ôá: ¾@ˆ@9è×8»ë%!PGE L«%8jQ›B±NåYëË"ÇKt¹×O!îx2Z)z¯'ïu´ÿîë[‘e|]Ž·.øÜb‹®iÂ&0÷¹Ô’«}|gˆ\wƒØ?¶ŸgÌ–ýu—‘Ž¿žÿ¹¼»Ž qɵÄw66¥®ÖªÎ£omeš’ÜíÜU´%¸nè§ñ±ª‚ýÏš8ó`Õ%C¤!¨­Î©‰—FC™rþvj¼^ Á¼ëâ ¦¼»ey‰øÍáò)²YBÓfc„6Sřǯ÷èÅðèõ)½g!2*ÞˆX2SÕ&:1Ñf¹ 23ÓCL~QýlÊ^ÕæªM–L>pßtŸÅûJÆÄó•&^¥Ñî vŽ£¼ ˆ£x½Ù[T€ ì ¬ïàÂîùÔ"2-c¦'Ï;¨JN~—Ò‹”˜C…)Kûìõ͘žïzÑ;“=N0æq9@ZÖA~êçLEsï´CgÖ¾)¥Ø¾ûaò2÷~H(x| C†¼• Ú+açL2Ùj¡©/m’¥å›ÍÂ=j¶¬â.:XdŸý=•2¡Ž ýæÙðŽÁÛ³ŒYè€SÝåq2ÑŠD26žXÀ+…ÃZÐeDP¹á~œ#~>HÛ¥Ù¢U\ >©cøÊ§âêQXf˼Kè{Qå ±[ÊÙ¸8pÖ‘òóÍ–{õ¢>;̳MŒ¤sú¸œ%|‘CÞøžšmoƒè?JÆ ?)XfÏô²ã›âðœz™Ä©-ðGNu.'à¶[õy®^îX÷ô2S:÷$ø‰ñ}´7ëÌõ*[Î6â ;D;µ„Ðß0¹Zl‰nÊâ£5½ã²C÷ˆ#>y6Á¦ƒ‡QãmÒ»¤ÂF#áOoÚ«Øó0üä(ª™\zèpÇkLj3z¾µï&Î*Äú±É!h }ZÓfa˜öåö~„®†cŠÎÙ…ÿ¾¶H}OsI™~µÒCN¸ï\q~È%Ê…ú÷ ðW¾…¦¶ç¸L$øL ÷ ´³¤· Bó ÇšêË—ùòmë’äx¾ßbâl{/¸ t*Ùá}{çßf¬ÚT*/ôY²œ ÆÝ×DGuþÔ£L²ÁSß_ß®EÖ÷œv†Y#Õ˜îØí‰ñ\€Á6aÊIÅ]k½¢ÃAFáØ¿I柳™]ûq,áä¾ü2½éê$ÑR ®Êä¶Ví‚¶¶‘×v:GÂ)±Ê…Cz¥)¾×±æ…^X$™U®ñXƒG´u0nìnÛ“çcþ¼¥ýEYL"¶³‹)-)VEèC'aÜ8ÏñúfÈ$O”.ö[Ó 7üƒ.†PÁž%5"™ìCqr£ÁøÜàOY”Lém8ÝêÖÛ”‹“ã.” 4{×¶yR\fìÙF#Ä®ùã)«ÛWý}YgLX%56-÷cÒckUS»ÅÛÚ3ê-F%§b¤¬EŸÇ… h²4nû£ˆý«È;/}½.…ŒÓšz¿ñ±OóßçtH|ÝÖÄ׊Â#½­à€æ4aŠ’˜O‚íZº>”Œ!©šŒ€Ì…^-}3l´£Ý›e„a}s=ɺ’]53IqzôõŒútüL0+œ w]„º×´!gâƒ.JîL¯›qÍê¢×{þˆ'ê]ZŽ®^&U<4݉%ÂV'<áa¤Õv"ÔcªQã( µisA¼[c[â0>Þ¤ï@ÂÑJ))^µœÂƒKÔSôôÎù(ºßÛËà1n"—ú@¼oÆ 1Ðóvqû¤OY¿Ž˜Ž´ÿ¼Ã+Žöû‚W?Zíè7â­ŠñGà»ö¨r²Ÿ¿‰I™ªÿm9Ë=Ía=à0~ÅÝFr>lr¥Âv^·æY*%NÍàß“ s(¢ªJR§ÐžõVx¨O/¼èæZ”5<¾=Ú·¬œ#þ$ŠéÊæ$#ÇbÁµµÄHiCJ¨®4V–«.cÈ®ÜÄ\-ñÊ J˜,2OÒ"å°@âW¨>²çs"¶Ny~tI¾îÏ~Ø^ªJLQú4ý¸×ùëLÃC'¬d§uEó'ªÂ(lwÝUxK‘’ÀI0ó m½ûvs—íí¾PPëÓ&׉ !äw±€¯sJ0N&…¿ÎCS[õ:ìG{¼ž¥ÓàËÏBWµá¸{ø-¬ÆœMÂܲ ¡Ü³PŒøVñcˆÌŽŒØa/¼‘zŠæ|öXpŒhßÌ,?3É#åuy©bºÛ_/D¯ú >+å~}AqOT }Çäpì"L!F§p¶IÎôñÚ×ÔŠü!{Á‹ci s*ôó»«’­ÍQ²\Ò‚è–H_»ÊZež3¢déá.ø˜CðIm¹‹në‹l»J=/u_D7¡r„œá{ÂæF.j´Iñˆ½ö;¦¸ÇCéx]±Ô ÕØO¨ù¦mÚüëAßSZQTro2 Dê&Z)>þ®Äf¾Íç ¸Î4öLð$bd¼ÍŸ+«éœ˜ËViÅU©™!¶ ‚²«Ólw¼5ÛÚÊ|@ÂèÈ·‘ýW„€ä¢™lç%òÙƒ‹hÊÜi›‰ìÀ”­Ósªct˜S¶"m¿N‰.Ì¡âýTˆ>;8×쨧®ULRÑÍÞ+ÝGàí}S` ì .cjü"zõåNìPxiüÚáûE€ÃØkeHÁHšQûçÎëö5ïIéiâsFƒ­¶¢xö°Ò©Ös_á5˜)%]ÑLˆ+ƒ0nHàó¬T4Ùê<‚e9›·.dzõ[-_íB•iM{ü}Á‰¦+^çÜ$I\…ø9c˜'€P5jy² æ$Ï Hˆïrˆálì‘ö“}Õ¹ØÎÜäqÖ&éu¹WмÄ‘¨cÖŽÜ5 II›"b¼|F{ô·,?¬T>¥o—ÌF_¼N É ¤•$6‹hj~tÌ| eÑx+¢0 ¦O#Ió<ˆW›dA Cé6z¾æzœeˆa%Ø&dš‚·1z™+$ðà‰‹†5]02Ôüˆ» h{¬„ÚÃ÷e#JÔ9¬ø/†¿ø"Q¹ [¿wÞÝ ìõƒÒs~miìú g·_‰Ã§Íæ GôHÞÖ-2,ÈdRÑÛúE\šf¶‰$LæB0<{µ%™k»ïC¤‹?R öéREš7’‰ª¯M—±)õ¼cËBj+r˜Øw©œ ¿²’^ð•ANÖg÷NFâlTã¬ë‰àOk¿Úɦ‘`Önf= ˆn"© àú®ñˆrwoÕXä§VB3ȾK©TcE‹#-{è±±L‰‹©%Gò«ŸlmË#0§á"6p(Çʦ<}X½|©ƒ¿}ÆÊ·>`Í>Å‘”Šœ{ÕW<ˆµ¸lÚcÏ7˨ĔxGÞò4h‡ã “ÝDAî»à™M÷š”SD{¶bG2{ž’dž3£¥ûs´º¶Ÿ ç#«g|›ìó»U¤Hë¿Ù—Ãq´V.#§B8ÇZQÌY2g±´ÕÉChßQ¸Qb)3²k’§xuÇÙ}ăB¡™Ô”ô&¿‹4/WÊùUúø+¡EaÁrÁ†½p$µûÍ"ÇÂìž^ƒà1GXZ'Œî@Û6ºg>Ç<«S jŸAjOm…ß×ò™?©½Žö%¬e„ú°F[çä]˜h¡ôÓ©’àË50bå¬Tx©æ¦üÂZû3zë$ßçñyWrî,ÊÌ/ýXxüÈSGÍQ³( Ìò!¿Ø&0?×/Ùà:²êÈRGôÈ ³–š¨Â½ÇaÂ#¹o˜N·&kºgK;X”44Ú%bFbO«¿ ÁK~ n–rT#º¹þý ½-rC€¬Ä÷(JzÃÜçHgæçowqNO…„ú¤_ƒ,¼\å*貰佈þ`C>“ùø¼ru£|ÇçË[ñ.­Û°6õh]­0~6já•0­$ÜL"îEÚÇûþS—’(£ÏpÑÓ¡þ±yËE´€)G*gÿ×<̱¹N"˜SìˆÚgà†à« ×±æP4ãå8êÁsµ³G–çÒoÿÁÕÐ…ñ¼ÎH’ßà)9`=<Eò0wˆŽÁÏi»¸{?˜‚žÎÊ’Žmfš䆩gcú¶Ë„é‹{-cfO#2,¼OZðëãk˜YªvØÓK™[¥ø£ K¡ó!¿”÷p«j„ˆp¿~4Qj¤¤mÈgoéÁ‹f\úuaoÉÑ:Rä]»{52&)/zð‰ô™¾q¤Füœ` ‰Q4ªÊGj¹”}3/øµuRC”LWíCrÃÉ8ihøhŠé°¢–‡þ»"Ÿ Nø[By?ȯåµÈO”¨Þ0«BéÙÆçÊÁ?¿‡ù¸Ì;ùÔIeiÏ{öˆ~rÿEzT Öðli“3;f4cTî°Ú%he^f3/)Üϸµ»ls+ÞGi°¾G/™­Ó¿ÔóYãE/ßÍ,âÔAQ¢µ”¾kµ¶XdèÑûŠˆ¨ më´á«æ¬Ð d‰°›Þ÷œ’#|´ü‰q–É]Ë §Ù<+ù)°!9äý>ÂN$6½Ëî" ƒtfˆ»$¶§mÃõ¼nœÁæIt !3ƒUñ|U“ó uI”pI+z<1&’[Ûº·ÊçÉÌÔQ™[o<ôqé ìR,X‡iûÏWE„EP,£½]£e=¤ãAT€¸1³×;å²Él<ã×ø˜Ì­=gÓèx¡ˆX$…9+±]!3¼öÏ ÷û-UEû-êóQMî¿?e3yaÁJÏ凩(OÖ£à[ÆêçÐ1ÏVœ†¶­Ó…§?O5h®¿ |2_J¤1!E>÷’Í&Äbâ9—ƒOG"AÏypî¬_ÒjµF“ïQ5FÜ¿Bûúóš€_1Ê#v””2–ôóBup´µÛ–ôXl$ÐŽµÂãfÇ–,ÁÁzùŸüÞÔlœlt¬°?\ºlŒÞÎð(¯Èœ}È„êá!EŒ“XŸÿL Ì«ifnÎ ®‚bDÞ ›[àÿÌ)¶ë/±¢d¹Å—PŠtyýøì Ð8î£IfσÀTtgŒÌÜ>h½Ç¯’H‡·óAížÞNØ[ùãñeö^kñBáfü»vÒ¦ˆÓxÜŒUßóje#צ¤ÚjkÞ¯ˆåÑfm04ó¼ãJÙw;ÁÖXÊ)„Hº•(QÊkäYˆqÎé–Þ¿ùçã’<#1y‡N_²^ü{?1ªPäÊßô3 DãӶ瞢ïúÞ®>ÿª„ Í*/ ð…z ㇷ°Á5c8f{5Í‘âF®ËL†÷+•9)^Ý'óª›dÝ©•.ZÕg§5× ­6ylÍH(ÙT’Å:Ï™…?Îr±9ö;óôLsKåLpuÕŽIo%,,Tä5bÍLÇ8üžbºJ¿ä-OÄã*Í¢®Ôíyìï°5eà/£9gí`¾´ô$œÄudž>ƒ°óƒxŠZõ™½åDœ×Í.@ƒ_äg«P™ÖæÝ×·lBL9WÝözMf”‡Á|!˜þÀã~ýÈÎþ©’¾§ï¿9.^½‡UB<® ý: w‡d.ø¸LW®Ÿ2ñF`Qla;ûR4e$ðÁû0ü°`Ž}#aÌÎ5ƹ¿8½M¥¦{%Š0^|] õHý;¯˜õ ¿·i4ÿ"Øt¼Õ´ðQ`ÿ›UÐSöÆ_èË}‡ «0'½|RÁª˜QE5~„ôW‘mèû:Hçf.>>[®Ë‚ßL9‚óßšªÞ—:#’!Ø“>u„îEÓÅäÖ@‡›±o¢ÄET"ý] x‘õG1øFÔ·ú‘pXxDLkEžöy……Û~÷oƒ“Këš7x=3ö³uê|€õÌýЉÛàöêŒl_Ék$÷!j¬¼Ùn”¢T]·È—FGšOAÜ|—%Ë[| >3†¬ol¸rZ$4]sÃb+ ©â,wMŽŸ±V’ŽUˆZ2?$W”â©hcèVÆn9×£7¨³±c8_‡ Vr\ÚÅX`#~·¡­ J¡#7V;òŒè|ÃH_Ì—«EMÈ š•³dÊ«°‹ócú›ZªÔô*Òp;%W'/è†"ôÂÇxgP²§æªà3ž“vû ôJn}Ò{ÞÆüúýíƒÀ©$Ä#“Þ®ÅúÚr MêƒUƒ±ŒvIðw~FŽG¤&í¦Lø”ÛX äc´,¿%üÆòÊR½0Ä…ËÉee¯ÑÖ¿PèÝFFÍ¥]1r6`Ü› ªÈ÷´á[6N˜%_ÊÉ™žãýò=€Y¬Å T,3W–ÂaK)Gõ>bn"rö4M|á?1Fl¬nÔ xT¯!ÐEúµôlê2œŽ;G¯¾ßj qêy‡à‡ÿ¤ x‘RÄÓvª6&°™æÕ‡Ë&fŠf6ŒØØb8ë=±¸”Xud×%‹a<èg Û 8šµéØ~#OOÞ%sJÏÝwk›žý©=%³…†ãïmÄçìïß L+”ªÜ…‹8•ÊÇ Ð£$< «'”?÷…Šh;5äæ5š!»a Øñø•°YXSàX? wx³®¤³NFåñ¸Ù0‡•:§Ò;„¡Rϱ»­™—C{›‡’6AÖù0ÒëYVxHJý¬ÂÔë:Žòsÿ ==v.yUÒ®Ьó‹bêW\²åØÊÙ0ãÜ*_e”¯ÎýMM‡µ€AщN–èÙ~ûãÇ>©G£Ö¤*{ËŠ¾RåÚ›®žß¦µFBÛ£Evq{W~ÇÓ@gn²öçƒn…7ßür43¼³•£-€4yhcwÀ xÖ¦n×wúÚ¹îx÷ØÚ“é7Àö€4É–‚’pácÒž5;Û Îf¿©fïú1•$ÎX¿E3ÇhÎáùöaÅR*h$'ªÚØ@pY»ºG žuŽä´·5"úoýmX&„[ÊÎthþëX{;Ðè¶2Üë‹ìý¼²L2ýÉ@b_Æ6– —UÜüåýÙz5¶îe}„Ì'39åø0¸žÛ|7zä}bËÒ'¬<ñ™Eü\_ŽqžÔëÚV@3îÚȃ§¼h BWµŠ:Ç£Ó–?4¥’ô¸íz2è㜶+ߊ^4s3‘5Ûo‘ß º24uÕ€Ò_¿yë¯áûÙI²¾Uøk®pî•÷9ÎgDÛgµ¯Q¼Ñˆ ¬»Z¯†¢o±ÓÄïvIŸà¨úŒ÷™w?»Ê‘5‹Ívëô`ñž†C5²šÊ>Á°£X*z};"Îer¸(«ÖfÊjÓšƒú¬nŽ_Sò…4‡ÚG²ð¸ò³ÞJŠÏ¸cˆÉSž-FŒS|Ðh…ÓlV½làÓdPx_ÊP ëI­xP¯iå1ØIv¾æ+û:›‹í1Ôåü”ì‰kÄéwñ~. â&Ö$Ly–È:ÕŸ;¶j÷^»ºNZ5fV°ñ0®3™°·Ž]YjpI+\_p,IË¢x0§9)ÔuÃyïKù+V*yRz±ä˜e­Þè "¨ DÝÇ…œ’[¿^Þß'a©ŸÚÖ,†Ç¸ÒöÌ~Àb½yu·ktIšó͵Bòaª(b1ñ‰Þ/ í JÜšÈ]rFÄ—9”jìCxX¥™Ãëõ D#_X1Œ×rƒ§¥_¿k•sêŠø`§îÓ\9½ô ‘UÍ#í¦¿²kÔ£®Ï”ÒøÒ6?Õù W?š«4rå‰ÎkKÝOfCÕÑ‘ ímu»6½0áÊ‚ZÏ §ØYÈe`WòÄû1ßÕGÛ-)úÞ–ª‰àÁdØU´w¶:&Ÿ¯¯Ò3Ð5:;snâ!cnÌÉOAk(ëG¹¶baÝæ®Ð¥<Âf»(ݨ§‚ò2îHõ®¨Q“‰%ÍëEŦôö§¸ä›ÄØ×>’wÕE7Iû:êCß‹š |aÝŸ ø ûI7NÝÔŸYo׊z$¿ ³x^w‘®uà¾^É¢þŒ†@îJ)óÎéµ»~0’sß5ê|Í`èâÊ¢N½ô{”ž¨èLøïÕÔÌ_cíŠåÖ8ƒí Õ§“o»'›”•J·#ñïøY•CÇ?ÏqVí|vSùj ŸÝ³‹¾Áµ•[(] M~¸"HÖÔì?øìü žsÞÛ¥R8Ó¼˜’ñÔÃó=Üicmñ)ã£eºÜ…#zeMÜ–(x(Fë‘{3œaØÃbS±ù ûV]Y®ßø°Œ÷h=ü–‘C"ñáuÙü‡ ét¿­Îù$ qRêü„N³p5íÅláÏft]MÁpŒ©ã¹3FùI¨Ýܘû[ÄWOP º‰ÓR£ƒmO Óš‘•8_Âfˆ‚±*™pêÛÉPl†|Â9®M`hÇT='¥Çóˆ»ÎCFižö!¡¤t,Ÿ8½fh÷{÷‰tS•z¾9–_~z½ ÃÔŒ¦¹š+gó¹ôR2âŸÒØ#ÿ=0¼µ{“h\!ã§E†“8çxvFpʦ@äÂ=q»±P¤ª].:4ÆÔ ì%øŠ5Ú#á§Sß Î§©»ˆµt÷¤ÅÉöï¸_'ÍA¶e¾™fDn+:†Á^ó”v¥|Lºv{­=¬õ S}(VŸâêï1`5Cýi®†”%óc;„nè™fÌ¿ƒÜ¢º›¹¢ÞélF¾–T¸@ Œ/‹D6¿¥Œ«žüºúlÇcé–PÊ¥ïçpˆ:/þ•}Я”B‰<apVyn¨AË)Õ±²šn[ˆcHÆ‘³Zš³|ƒbÕRÏ…D`^S‹¨ú†>ôƒÅtôŠïFnóÞª,0`ˆu§äù wièoA1¡29 Ó38-a7[Íiÿ+¾í»µX³ƒ¡4'I*›)f$"È’¨NšJÓ˜mI`œ ªtPHÍtù äøØäÿ'­ÔíÑŸ¸)=Ü0ä™#EûV¯ú4šÚ+.–0ƒKÏ ŽÍG½¢Ï×,ù¥ n‹¼›iWWÇ3Ĉؑ ZLð"•Ê¡KÉ]—‚îýÈ´¨u˜ÌÜûóˆ©Í»lq¾ól |Áï.úG£ ‚µ(SLã‚ÖÌt>™ŒÙÃ# Vn½¢Úb ·¶HÒ¹ÃWƒ+|ßV¦wÇ•h¿7þ­b¡LƒœÈ7ÁäÐÚËݬ±gí·ä}䯀¶CÓ‰m³Hýú€y¶hCPÐ5n?üWتÒ>…»B%†pétxÈÁž¯âʘ5µ)¼û —O/D#!=T4æÓR!Ïž9|˜¿aù/ þ4PN•ŠÔÞdo+Å=Eq>v‚ëViö¢ âÕpŽUÿãúíÛãÝèÃõ.†'?U_å9Å\ϫ둦f¸[¸ÐF¯4¼Â«Ë²j7<ðFfù ¿ÔQ7¼_º–v¾îϲÚ_ïvx^ çG‘œ‘÷|J”WCPw<Ç ¶6ÀÄuqÄy'…&ˆç{ús{ v¦:ÔóX±r¿òˆµz¾ð#ø=˜6ÖcœÕ E¬6¨$Ïo ëüÖ¸“¥šØ{Þûб·dÜ ~™Ù}÷7ÒéRG?'eYÌ>WÜX·¸<â°dh`–Í6ؘAGôesÁÉ{?½w¨D•¹aÑ1·Õ¸äB×kï{…ÑOmP‘œa=Œì~k2ñ¡&>‹3£Ô€× ruëbCʯƒVcÒx€–\òQÍÔîxsKÎz.ÑAìiZnûD ïW·þ‰›waݸë±lNIŒ°‹ÍŸŸzŸÛì-°#sE“è·ëDÖƒ‹à}} Ú­3Š¿P’UÜPàqÏéAýqN+ˆE@´ÃµB¶£›fŠáËbª*‚+«2ÞóÒÕ{‹›êƒü­òYª!%ÃTj¸ßÉ7‹ÎêÑõ]¡ã‡9†OJ)¤LwC+×´TŠ9@Öò†Fªíð—c/½]˜á¨ ¸hÙt&Ÿ¤*›%—Q Çú³ßü‡ØònÿædA™PGá*vå똦µ3J3 8£g謿Ø÷êKØù3<‹.Ÿ†žóQ:ô“íH੠Ȉ&¿c{²¿.OEàmNiܤ.W%Ç(ÆwØŒBMùq“L ®W½ö÷v‹——èUéÀBn»ò€Ã-Å´î?q/­˜©h·¿h¨Ú8v[Eà°,×ÁIy¡Oµ{>ÜeØŒ†.ûtév(È/¿…4¿g6ˆk^ o‘gÒù¸,còÛÐ 9Ž$1¬ðx™‹M"­ÙwbQ ýäéŸE˜‹†zï”iþ G1îø˜lù¹®ÌÎyöÛήvéîAôÞª•vàº(Ì›G}û€î‰7Ù´LØc™É ''…vEÒÈE v öž¥¬ÌêßKÁXÇË5ð¬?†aaàïy!>Ą̂Ä@ç]ÿǦjŸ®3‚´¾'Þº÷­A¾ûåá÷è>‡þâ¶]SÜúa²Õ¯3£|%²÷¤ô”§¿ä;Ǽ„Š^ö!_rÇ×%¹ð•#ßW?+oºÏWÞ;œ”墋 á-ºílÉÅXGÁò/Î ÛW Û®KâÅþ¾gð´Cÿê@è~‚qfŠKèZi(\° dͯm‡Jé[þ@Gç½9lÛf«*eê†\«Ä Ï~ lr‘1ýVΫôÂÍ÷3>MåazÀÏë‰[S% üs2Ô*C–甆š1½`µÓV8Ê `‚õ[Ÿ/+-¦êHÕ×G–÷;yöÃç!Ú"ZÙ&`iy=©‘ ÁÛõ'Âí°çRDò´]š[?wÎ?Ìá§g³;pH³Áš§wÉÄÞ ?¾žN*;ñ„s@5§Óùp=Ö†æ¨ZQ•ú È¹à8Ê=;_“Uû‹RÖÆ©ö¯> stream xÚweTœ[-$¸5œÆ5@°F‚»mœn¤qww× Á݃…ànAƒ»†ABGîÌÜ›™÷~¼Õku»jW]çTõ5•²«˜Ô ‚B`¬lì‚ 5yuuv;;;;':ºÌüNìèd…þÁ‘pÞl’ư'ªs¶pp8x9øÙÙœììÿ!B’Æ.Vf6€vB§“€Ú»;ZYXžVúÏ#€Á”À! ÀÇòW8@Ììhej (Ã,ÁvO+šÛÔ ¦V`˜û¥`xm ƒÙ ®®®lÆvNlPG F€«Ì  v;º€Í¿Ë(Ûÿ.Ž  niåô/—Ôæjì<l­LÁ§§ gˆØð´>@MV d†ü‹,ÿ/ àßÛà`ãø;Ý¿£'²‚üllj µ³7†¸[A,æV¶`€Hž æcCÌ~m OñÆ.ÆV¶Æ&O„¿Ä@b*ã§ÿ]¡“©£•=̉ÍÉÊöw•Àßiž6Z b&µ³C`Nè¿õIZ9‚MŸvÞø÷Û@ ®Ï°¹ÄÌüw)fÎö@ ˆ•ƒ3XVò߬'ú?6 0 ÀÃÎÎÎÿt°`ØÍÔø{uw{ð_NŽßæ§:¼=í¡öó§RÀÞVæà§tO'c0æè ööüÓñ߃`fe ˜€-¬ èÿd2ƒÍÿ…ŸºÀÑÊ  ÇþÔ„öߟ¿Ÿ žúÌ ±uÿ‡þ×AuÞ*iŠÉ0ÿ]ôßnqq¨À“•“ÀÊÉÅàåàð ð¼ÿ;‘²±Õ¿…ü* 1‡þ¥÷i£þ£ÙåßÀðï9aüw.EèSƒ ÿô»>;»éÓÇÿw×ÿòÿjößYþ?úý5œmmÿb0ü‡ò1Œí¬lÝÿÍyjagØÓ8(@Ÿ†ò¿T-ð¿¦Xlfål÷¿^Y˜ñÓXˆA,žZ›U€›÷_f+'•ØLÙ fjùW›üˬñ{ìl­ `e¨“Õï«ÀÊÁÎþ?¾§Y3µyºNœžºó/øi”þ{U)ˆ)Ôì÷ÌqòðŒÝÑÙŸšŠ“‡àÉñ4œf`·¿údƒ@aO!€§ ½æPGôßGËËJþ6ý €R#>vôzb*þøy@Í¿‘hüzbšüƒžršþ~×4ûr€à? 'hþä-þ€Ü å´ú>I²þ>©°ý>ɰû>M ò|’ý>ɰÿ>Épø>Épü>Épú>É€ýŸ¶ÆùŸÍxâþuá:™Bÿ¨›ãI¬Ë?óIŽûðIŽÇ_ð¿ÎÞÔÙÑñé>ükLŸã?ø¯Ë v›¢/ÎAM…‚¬ë‚ÚojÄH]Ywƹzx5®)¹Ñ£má·Ø>+Ù”’rç]ò'gK*XŠTé!* ‡đJEó¹Úˆw°¡à½ÆC '9f«­(ˆù•aòŒ½‡$>Š(õý„{¿Ì)Uù•ˆÄžZß—üFwoßA ™”¢¼ MiŽQ€à6à›’Œ­Š ò—¡NIvë€ÐT ¹®¦©ŸôrºMÇ×/*;ðŒfçzűx|¿„H£Ãê¾›ê”ò vŽuqÞZv¼}Ó ÿ‰¥("—~ï‚¥hèzQ1Á‡†VØ‘O… -àü9éƒ$hîdŒóã¥l´’½«ÈĦ Á9Ì4k4sWÿ£"K™o19|¥GC~¼32 §ïñ¦»¬¦GhvÞ+F¾&É“¥ •XЊ˜°8 km>&¾z´ßñÆ¿3l FÓ¹›M€­c£ú©Ëi–ïកY0ž9"*IvϽ5Ö+ ;ñbždÈÙ»1÷ÒG ¤®ÇßÎÑjì–´E¿X0+hÚ;íb û½»b·Ê=¤~BaŠƒ9¾TÛãxªÁ—Âe‚Ë @¬’ø¡V8GÌ`r~øK>ÅíÙŒ#¸²‹ ßj?¬q³Gãèä³oFÞ»U·î±Ll”Á½I¤ Ã4µYt÷ç4’ÙWúW¦ z/õIÌVîÃp´SùÆ'صIK—Øgq¯¢Ó]ÖŽØh¼èãO¾ÂªOó&*P±°Ùˆž¡ìN¿Àr?T÷¢ª©pÓOío ìde*¢j¤'ûæÕ°ƒ#€Ó=¤,ˆN2Ùî:@‰â}ù⇸œ¹+úˆ©Öt™„{*‚6 ²ùA¢ßÑ•JÐùÔühs@Ûٞ͆*IŠGl7gú!‡Ï‰ø˜ÎíºˆE•çI@*ÜŠ»˜‹}3YŽç1ûQ®ºˆ†‹Êb*­bé"š\æé•‰47 ¾èâ5cYZQ wáÐçÝMHçºIئÒòZ?¨ßå#£\qÐê?Å!ŒS0tÚ¯vŸ/i÷ <¬Ýô7l¤)-·¥»§gѲ,q3¢ŽLé\±yˆ1‘̾DÈCðë¿]p1ÕÞý©Œ§©3ÁF᢮÷i÷´,z]V9ÿl¡ ZÙ‚Rté¾dsÅRÄ}\× ‰äày”ªr‰›­(Þ,˜9ÿËbŠâáWãŽ7òýµ€‚x¾Ã;<‘×CÈëc#)÷ÌWÜ<Ùnüzô'ÕŸËW¯|!Õ²;a^|þæekßI–@ä®ð5ŧ;Ã7¹ÃEûaÄÔDÉ©û¹œŽ ºÓÓ  ×÷ßwx×ÇÀGgòá~ÌP2¥öP‚Úå Þe†û á‡«å4úaY*v¨‘à.ÊÙ«FU\w‰ ™×ä5j a^™ºÞ)\;ŽY¼ºi”y@Œ_(Å{¶òœ|Ù7²Hï¦ê: ÛJ`$ܵÒœN”íw›òÏ+¸ÙNŠ+¿í›ŠuÓ L½Ww‰ˆ_‘êè6CTÆól'x_ÐÜŽm9Ãûš|ØÇx“ÝaÌÚ0˜¸QäçBŸ½g‰>$]%D¿§ÅÇÓ¦lJOôî=Å-I–|øØ.þÛ×jOA¸ÊEâó0‚Á` ô®³¯½¤|§´ìä þUw'Šá 3v…3?Gáà>gÔ²{œûŸNÙ¥DLuë‰[ÕÞ¡«²Õµ´ â‰îG»fþ”é¤yl¸;ƒ“/ÑnO‡_cR8aü@ÔOK_ïâv¯ú“ «šåå3~C œæmÈ›Zvß°Ù;gˆ&UÈyû”ýº[·,5ëƒ%÷ná¦B{ƒe“˜…·ˆK¸ J&úv/¸±Âj—åì0c‰Vµ/Ã,´ÓÕ™–¡U¬ÉˆßÞǨëˆLøö]¯B¹‚õà<3ˆ_œ>läÞn˜]2œÔô¦£ÞÓWåO½­Ô?ï6/òQ?l ¾ÈI-ÅœÓ,¢….‡+àlDµ€§úÙ„ûÊ‹9Òí§¿ÔÅÈDweú'üz¹âüKÿŠpöÂÙ¥Æ^Ç3ƒ]íF)¬<ø¥I¢4Ê>¦œ±Î¬ì˜ ê¤5Iá*ή} –)ªOJåȪgïÈ–÷^4·Ï2~ð=§rú(ë¥Ç¾vÇœ q® _<”Úhzž‡£[â7B‘Ÿh¾^q@³#¥Å›É5ó®$:ïD¡ÌXŠŽ&Âf1 R£&ÞO(ÃéBžaãj G¸ ]EÞx~úÆ«õ×hmX¨Éˆ¤Y\d&Ýì¨÷câT=ô†÷½~ìñ}çÓ; èãÆ#†‘"µÊc…œ‹Vjs¸ûBÿzØ(Ÿh}zŦÐì2ÖZïƒU³r eØ'þºm c1ë\ˆ[vÙ’ˆË¤t‘³°þ±f¹î£µ%—s@^(¤6Áõ³§IŸ¥ÙÏ,!Ô{¦B_|?èË÷Ø=O#ÿö™Û¹?§ "…ôq7ãæG™%·Ò= ŒOÜl^º<´zFV÷”¢¶løkϦ= _dËÌv%«bÿÄ8aŒ>ö™d;D·óµ ü¸}ˆÍœ cÈ=VÞ8PÇb¹@D:â&eLð©gùÎPßÞ¤¼°+¥”ôc…4n{h‚;WEš kɱt»\9ݤT•ó2@è(»¼»%››2g1/bvE—#Hd}]® yÎ\°y;½ ¢mªÃHÍE· åäãâC×âŠGHc·ØÞ+>ƺ97›–2,OçOšçõ×íáIu,á’™/&wJsû¤1$›ˆµnœLæÙxV¥)Útfx5Xׯ';)ͺ]¸ŠLJÇr¶ê/.…Ÿ}zxfðŠÍßtèÁäªFÞÙ[hüv•9N°Œtx¼L–¿-`íÿF9êµ~¤I#oãÚ‡©¤¬dÍnÃwxGŠ·\ɺ8ŸÁ—β"È-ãQÔ-Rf«!pd¶L¨¦FÓ5Ã17£µÂTËÕé©ùÞ_d$ÛÊe(BH"_&o± •xÀk˸ߢd\¨Ñä1íóìu\yM=W™vÍÚùÎÖ¹ê™ÑXhZ>ãlK†úÀÓ¸í½,ØBš 0)A\‘J¿v{Án¢ÅˆûE§Îó“ºÖí‡]è¾|^„k­[u¤Wúö@ BÙaLþ 8‘õë`ßs}¦ëãiÊ4#^Љ‹,&[——} ÷–¨zÅmHýÈ÷Ñ#éPÔ¢çŠùe•ãÛÏA˼d·ûıÜS‘D=ìy÷·Ï’ì°TÓý³2'é܉\cø•#ñZÓI3ˆå?zL7`c >Àâ¿Âî Ó»Ý:dw0’øý>øÅc¨^º¦#ñµ;o׊ûç¾’ÝZÞ–]Ëõ<¦›aþjúý ‘?á‚ñD‡Çß9!D`@³òžé‹[•qx2€†Kzo86yØ]òeÛ‚¾cÅâÊnHÌm Þëƒ ºßu'Ê[Þhk7?Ëñðoÿ:*(®TCÊ;‰Ò´x<AûX¥$¬ÛߎጃqÉ5Xª•£1{¬{ù ‚¬~D“£èÄë­÷¬åÌ~u²÷FÌ’P¼Ðœøœ-*»w»QEk] /¢ÓRŠ{@D`9qÆŒ‚) ÿ«ðцä™h„/oýÒB¢ìÄ|ïÞŠ¿ÚíL25Ý.eŠòYRiÚØ½î9|àÂ[l³ÎVó‘üÔ³RÎAÍŽuïoJî Ñj‚¾Ž;¦¥ëÅ¢2/CY_|A" ‹çú…'h½•j|¤c²SP7¢ÈÕtö-˜ÏU¥ÃqÌÆ|‡k7X®º-B8¹$ü¹ú%ú>µ¥áÏySj~•™­ ¾nZÙ„‘D[¡µ9žá­\4$\¼j†~¼q¶ZšØ¯n~ÉÇ•¹ÖQ>Ë¡ó­ ~'‹ Lö¬·#„¢|·¹œ‹º=½ñ¿r6ÁȳsËCD²¾nB3¬ kŠ1lZG†~íß“À¹´Ça±"¦XTØ.ÓïÕr ¿4Ø>ŒK”îKbgêиTŽœ ²Ÿ4{‹„b¹¦VêUµŒ Z;ÄKÎ÷Ï%"œ/ᨶ(—Ñ_3¬—I•˜cί U[®%뀊b†œ×w|TcRZÞÀ·ªŸ@ùæí.Ú¿"DÏ9A Öºý—_yÌ“Âíâlåzê3iŸ 8\„*3÷á»Ò8ˆÍ“ëg-¸áÛU?2ÍQäukÅŸ1ƒ?Šò{0½•¬ç§A%æ{ ×@ìøX_Ÿgî0«´‡‡/§ÿÌWé¥SgÂñúâ°§¾Ã÷/ã Ž¬ºµ.9üûØg‰Ì¤ W.o£oìD/ÄlÓËÖÊ)j£T:áÛÂ9‚H›°éy´P&VÙEô„t¤ ?#¤šÃóžÖÇj&"²ÙùÀ4VÉ…©µ%éQát ¤…q¤°<3–úØ×=Fo`º9XÍ]:QÄu»|)?óá3›¹:N‚§€”âYHõ„xÊÛÝ0!¿ Ée{'žœI*ò˜)]äÏá ¾FÕâÚàˆüÅãt ¯ý”z÷¹b—ª• FõÐ5|«¥#O–›P5¤.*ÅÔgÈÙ"®žøÍ‹Ä§ÏJöõÆÌœOƒhýJ:Óé:aÓEZr ±z‘ø0ÖMDÇåñ5Œˆƒƒl¦âUϸþÒtBŽ5íÛ0º¬½G¯%Ë÷­ï_Eï9î24˜Äzäh‹ý:~`xÝ“ì©.ÛÏ/5 —ÕÏÚ]ò±“(S# £oµKH½µËÎïõêÆÜB~͹ð ÕºÙà¤{F$¬[N2Ö~G`­1’a*#Ömø°ÇÛœ59ŽÁ¿ÌV²É}ïóÀŸ6;CÞÝû™yU®¹º,øhm³Èj¦HðžµcÜÓRLV¸z$_HAæ;ž«ˆí™¹ËŒLãûš"Q±5 1Ü.’ò€Ö¬;ŠWŽ1Þ}S 6?§3"}ÄYs‘@v¼VHžÏ¢ŽŠ™¢O7GƪÀ£I8Æ¢5jÌ'‰<˜|n5Òÿ½Ó‡±WB®»M–ªÖNž¦ÅÖ<9¤éª–²£ÄµCHÍÔôw©¹xüƒ:±Ž#RÐ+°dìYKJâê²Sê2jµŒqǹ¢ÎLÐ8È{ Ê• ¹CÏ¡$¸x¬%ݸtžª|$ýÅMýÖoM ±"£âóÁÒ¾G˜ fËÎ6™ ñ](­&~ Ù7<Ç1åGB}N™FÍ*•Èl-N%{EÂS6úæyÿÁx!ø°AàpCüš…E(×Uìfd­öFŶ墚õ2mÒS°awóõTk×3Eß•¯<½×cgB*ëªÇ4‘À†Á½ˆ>7¨¹ºþ\ÃV=Y‚ÊõK,”€H¦n§æ Ûcµ?‡#%<!•"T¾ò¡IŸ*–ÏÑÙ¸ÄHûþ 3åÄ•9ÙŒöÿ’Ê>vÈí6þ}×=A¾ pì ¥‰y­ÏŠó-¾ xrf°qQíäˬ·ÅömCñŒÓËÀX/P™][Yb}á…±•žkÖ ûÃ^5{CÝ|½®hq:ÕM‰¹4Tƒöeý@´bb¬ª•N抎àП¶ Šô1,pæòè}ýpµð2€PÁu$N­£òŽZ@Œq÷e±zÿ¹P<¢¦+FyL52—v~‚6п³;ûá8\N$À@wŽêc=Á_Xea¤C¡pà80¨û1gÊÒzTzz=B’Ä#¬Sœ¯“2$VY‰œ?âüẈjgI⺮Í~¿âš ’G``5S¹âdÉŽý²•oÆ.Hd#ù©Ìv‡xóP=áG H¶iSªõ®‡ù²ÇÄý]âæÃ-+9MŒ«ÕO‘ó(_e_ƒ8k¶cý,µnѨ½³Ð “ðNûÀ ñËû·ò Õ¨Gà¯ò2d8‘5Y[ž5píÒ˜†çÌ1l‚ce~T÷è(çæ¨…/yxÐÐÄ<†Š>¡Ý=™]ÁºPÛFçOG8eæªWIà#¶0©õDˆ-W›;cCwꟼÕDÃüU*q]±t>‰ˆ¨øó«ä®à ±ÆÀ5h™Lq©êÎþÐŽ·*)sLãöÔà[ø`Ku{Tf÷‘{Ò’ Ý¤mŒ3|ûv f!t²nü¨“ƒ@¨DõU»4Pù–÷ØâsФ–¬JˆŒÕƒ©QÙ+gïÊ6ý‡@Ù>C÷·É&,?ýÒGü+VÐ,­´)à˜¢ç2AF¨ï¿363ßt /V²fŽ»¸‘";îå¶"3"a0·ºP÷õ-ÔïŠókE‘1cû!Ƴ_„¡þ,a®Œ\ý¶šGG¹ù ]»ö—Ö/$±z—å~ÛqGlàŸ;»yšèÓkn"ÊèfwkfìÍì˜Âþ ­ '“×:ðìxÜ“mQbZ2ÂÀ*g¹;þ®¤Âª²ËòH˜»©ÔÊNŠiŠœ-uñЧ1_S·á&¾=«Ú_¸î|-¡ªNDÜâê_÷F #dÀé¹Îtñ­#ß'‰€·´B§–Üô²€{M üÌ4hš¨£+{YÊóõ¢nÞ{Ïa| ¯`'BZç֮ןRek"¼sÝ~_¤¡ƒa™ðc–É¿QjöËë#´d†eI£Žo^µÂµƒg 8)%š³®-8ð¨\Ãч0Èiá‚r<&–«º ~Ôg:eúÜfH»S±dôd30³ØàW@°ü°ätÄ<“ž¥A%ò¥ŽTäô#„…¦q;®»k•u4Œ9‹ò—>Œxø»ÁhšâÚgþ-ÌzòƒµúH—ë—aÇ(WŒãCÑxåßTê‹´9 ¹“Š_±B“ ç«»0¿´~#?Xr°ñÈ{a‹ü*$œ4Ë>®¡.+?é Ø…7±>N9‘Þv†è]/.d¡æè•ºÍç”&Ú0 CÐ=þò£ìÃg{?u¢d€eGÎ.ñ]ðm˃„©2Õ¥”JáÄ/”·WBŸµ„„KúÝVcíGà‹ÛjAÒI—D•%Ì”AØ>Š+¼ÏL&½žR¸¢u 0¾…ÁJµ´ÒÁ±Éz×¢üŸŽ„…Èî- N|^Ó±O ®ß ҭЅΗý”'¶ø¤Ît㲂 ¿8 †A{uiߊD†uƒX¾Þd^¦ç´0›Û=ý©¿Ÿ)Ôl¬°t…ÊêXVï=F‘¾P5ÕÆ3¯'24bŽ]à¾$}õ_et{7×íV¤¸(ÀJúSqI_5sq¶GuȬß΃£Œÿså¾ ŽœÐ——¨¦ß”Æ ;'ë_Ô E¤ÕM8,—/FˆŠ0ÈSî¢õn×´·ÒfUÚ­ÚtàK“5ì+¨Å<„¿†5ëѾUGË4¾îõbÁ»Š´-!wG!C6Ú#"¤½ ÙhÇmRcº ˆç!CˆXêk7³/ÈÜ8™6O›Û‡-$ã|ñ5g‡y™œddÀx­- ÿýa¬J³ÝÞnŸÇx1%S×wæ{­«ØŸî÷ˆ¿ ØæLæ"rùNCêŠøÓèûû¾RnkÆþÊ{ó1PǶӳ‡’3x®4ìBèõ„'ÿ'û3Q;ä)ÌôøÁJ¸: ’Õd³¾ÕÑ(ܼÆå>‡zò>B9ø`"êN¯³é4Íb𮥴Û9MëŽüõG?½´³ã56b›IfŸ$¤Èå¾ÄÝìöÙi£õÚ©¬à¬ñt˜·¦bh¶÷1{ñ¦òL6 sÚucT?á«ñ-ëÀŠ¡Íû+åÄÌ£‰yÀ×V†ò•2RÒáq³ƒdgÞwÁV½â =UÉå=ì€×ÎBò…µÁ§Ï³,‰f]y硚=*˜Í~%ú•ó‚«5©|KüeDCB1Cøé9@9T‰–zéø(YÀÀ!õhÑ‹z—ú4gü0¯}j_ò3;Ë( l„*$¿Wî‹Ìù~+‡‹-=àhE 1Ê⸗qÁÒJüìxwžR€·¤öÛ…—£¤ó½ÆÒ·f{hŽßžï™}8•€ Ç^\ƒR3á>©.Òˆg6¯¿Z´ªá;nÔ¼J¨^zußðjÐëJYw½ìî†8혟›%õÓ^Æ­y™\‘ÖJcâ‹:qŸØš»Œ£Ò-5Ÿü\+¿®µG.Èw¼æz'wXbçé Ë^-¸Ãh†ìT1õþ­(‚Ù7cÏ~*]Ã(Jó †5õØYÅ«N¥³Q@VÓ¢H)^aÏòÕ½9¸ÈÀêÊF›M7F>K:NNÀ¥‚Wô˜[¬‘(=ÑqKÇUÇF„^Ñ‚äÞʼ¿,qû°‘ÆP­Bfà×Íåa¸üÐ-·ÜÇêV¨Új±†c4¨£ÒÄ}+.‡ƒÇ2Cøñ£Ë&sqÔùé[ Êtè$¼Dò q cÖ|ÂòYËæ”àUû&¡³U‚Õq¥c9þdÔVæªä=¥±O=1íz(5Að¤‘G¾˜6³Ï [½q›Ù-@§Ó”gWîçó6^ÛÒ†!}ÒE-¼ë&'ˆö/xÈ}Þàjû/•³¬[ãçU³½ùMq+¹œ’óT3áÁðªøÕ·/R'r%«ðBë..fÚ_kÝl_£WD9LÛq×&t/§öØÙ§"Øýtg‚ì*‡0¨»Kg+ýÅ'Òpv^>t“CG¥­×OïÔ² OÈÂËï=ésIÛó—Ä· ½ÕÑ…oãJÃßËc)§¶É“ Ҭ̼ä|APy¦µ•]ÉŽ-²! ¿híï¹6 3¦$Pˆ¯£Uöߊ¼¡Ñ"ß¡0ªü¾©ù\óÌâ"Ë)èFá=áóL:V|%·õÕ|figRöªj­r<ºRšÃliv¾Ö6_Ê™= ‘ŽAÁšìm¾ÛÜχ+³ Uµ!è&e±®VQãÇ ÊE×ZɺԈ›ûgA¯ãc‚øÎ3~þåíã’¥ÿ‘2KRµÓCÜF\µîÂ'*lÆç7é²ÔÕ¢}›vSG¤¹†“º¤?ÜŸ[ÂTÜÍgX™h–M‡’7^g1ímc$•f—U8ðKVÿÂÂÈsG·;?l.¢?Ïœ$ŽžN¢¾h,#5Qî—:[¹:0e¾fž¥²Ð>? ;:ˆ…j<ÔÙ_˜ì‘ŒvMYê À}ƒ|i ™Sd•01ŸX1 BJ¾#DÖÿ(º`cä7<ØY§aJRKôñø¤M0øZõ`Î]º@(–p!;À¶1,[þ»Î`ÿZë{ç?](ê•ËáÒ:­öÛctõõ×qä¯_‹ÐjÖ0P_È$¶¬ùqå“õÿ3Ã%ß[JäGš·Í¦«;{Ÿcoús´›‹aã]ÄHíiå4»õ{×þ¨òeesârê¦ÎL» œiO­Ñ¯®¯hwUUþøÐöM–2‹Rñè—\Ta‚X­Äâ‡SÝø¦LWBE‘¤ÖGêU!\ Ú=6jŸjIµ{†È@‰ Ó»©Pî"¦ÄÕ×p呈  SÆÖ²ÜŽ<úïÝ`©‹\)öš&P½A{ÿQJuW\ 8y Âh€3ŸéMõý¢—‡‡Tvç眨í÷$·%/ǺS.SÞ”L×éЗåyÔÉÓ ‰Çë:– ñ´>f¸PpO pS0ˆFòä-r ûã8 dÚ·ˆ¨Ò_}õs7 |†å…ùnVt¦î·§àí2"U:Ðpݳ¢GÏÁëøãç•8ipÜdtô\>ýîRÞÞ{¹ì[¸+1o*ñ¯2/Õ^9“ðGûÅ)¢°2P…¤z—¬¯¬ˆÆ|@¤_»-½ñ†M§½˜žG'ЮyE~¨×ÎSÅòG‰žDI S·–3Ÿ» |ý!|¬„Øãw¥t\,VÜæEœ«·ß +z vÉ=É´Õ|? 8g™§³±š²©Ú2WÒzsŒ§ðü…'1Æ`9Š~?'U”+~-æÏ1û]}¤Ò@/J"¶ô£?“1¬ ßR¨ïHx‘$;ãþPûfÛM‰e¬ßá+®ªÿ™xUú°¨¤¹<ÃÞÚU_aRïWÀŸÕÉy »Xø2NÄ74'Q:“ÛmÐîÜì$ÙR([¥öŠ‹|òœ¢êŽkž›ÿ«ê†_åmaþ…ѧ[ÆqºÜŠþ-ý9"F¯Çb^nÇ„poBÞja‰N'jn¶ÓÞòÎÄÁß%g²“-ÎÓ1NüXö‡¼/‘é6wû}ŸÅm_¹UI_⺋òv–_+§"OùJ¯y5ý% Þà3Q<òœ»›XÝfnP²åK†7D¦hy.> å¾µ]w}$–7ðƾNkevJº\ð|yFÞDjÓ¹ŒÔú¸w¤ämÏRï´™T˜>FtIžñëDMÇôŸÐ&wÚ­y9 › qnL”5sS#˜EjîpÙÖGm¡Wî¶G˜ î|CÔWÀ‹$-‚¡£÷ÏCòùñ|m–êq¾ðEbnN9Jw{§Éa•<¸ËÖÙQb¡9Tä/@²«¼ñR'ÇCKP8­Ïø¦U ©•d1åè›qEüñõ^²µ£…›—„%»’Έ3ùáBJaÎû¨ÈUÄ[ó³f_¨˜”öÈð6\…è·F ¥³ &u5å€Ïam_2”¤ôƒ”Ó;Ñfø•…i4<¹/ˆÍ>—ΰy‡TâGáú|~[ˆÆ²Çë‹ê««¹Í¦å0Bü%õO~³š³úuÚY#º´5ryÕƒŠ…º—×a:ˆ|‹V% oFùè n¹Ý«F¸@¥SÇP–]r‰L›ÃØDÂ#Á\ò3wáFîC¿Ä×·/ç·G\["caƒ"y挖jÏ9øêo?©%%FkâÐÃùr6u0e™Ú]†¡Ä÷©R8<Í…Wný"Èozvß±DÍï½®E~ŽÌgqÏr•ø£w[)­êK¯†µ¾ÂLJîËÃì™Ðk ˜çÉmDuÔ­M†0¸”úÒçD.¨öñÙ{”4»tQ~#BñèxïßÙJ™NÊ̾‹žÛÌåÛÃÐCD”Mô“øéiê£t3+ z®…UÓlñã`å¢åûŠÖT h¨äÛð\± +ßÀp ÿÑ<[(#=êy/Á³úÔÆ Íó¡8!Û»€‰ ¬CnGëÑ!”\IÐ3¾HÄeä<ö2žs tŽç•’a¡fé¡4:‹PyÊã¤ú¬ ï•R¶whåV 'Àh'³o 0>îœú€Û„T./sœ5[©BN<0s‡IÎø’ã5`7$°™ªíêÖÝV„¿Xíú@24›v®È•§²Æ%7Fè]ŒÅ¹©êÃF¬ŒÍlçê²<ðšÔàã¤é˜›LwÚB«ïM\œ,y¨nSÊÃ4Õ£'ûdU:œ܆/aŸZæY¯4¢¤¤íp;÷‰Ý“€Í‹é‘£füò@Õ”àŸ«o×´¯<´ý;‚N(Z.$Ͼ¶&é¡…«j4¹uýl!é¯ywL¯© ‚à¾;M1*26h6ûAÒ€sàÀ¢—mÎÌÈ:QÄjâCƒðXÞ¸„:ý+¸2ùf¨q³Ó;ÙË_AÁ °8¤!Ñ)J7§Ô˜¢ÉÄ^}Ašídç$òÒzeÓƒ)Ïnfú£®¡ùÕúÖ£÷Ág©œ²¬Ï~`S/*Ê Wß'Ãeî‰}Çmª¯8WÙÉ`~ãBó.…2\Ååkmärmh?BÌ9¯CþÒ‰AI endstream endobj 382 0 obj << /Length1 1401 /Length2 6058 /Length3 0 /Length 7007 /Filter /FlateDecode >> stream xÚwT”[Û6R"ÀC7 ‚¤tw0À3À ]Ò ¡Ò©H(%]Ò " %!ÒÝ)~cœsÞóþÿZß·f­gž}ß×]{_×^ëaaÐÖ㑵ƒÛ@”à0$?/H×ÐÓã /$€Ç¢Eº@þ²ã±B<P8Lâ?ò0eS#Q@ 8 Põtø~ ~Q ÄÿÂ=$°ÔÐàTá0EîæëupD¢êüõ °Ûrüââ¢Ü¿ÂYWˆÔ 4ÀHGˆ+ª¢-ØЃÛB!Hߥ`—rD"Ý$øø¼½½yÁ®^¸‡ƒ47à E:ºÄà büлBþŒÆ‹Çè;B¿zp{¤7Ø  .P[ ñ„ÙA<Tu@OEÐrƒÀ~ƒÕ¸?›ðóòÿîOôÏDPد`°­-ÜÕ ó…Â{¨ ÐRRçEú ¹0Ìî'ì‚€£âÁ^`¨ ØøÕ:P’ÕÀ¨ ÿ̇°õ€º!¼¨ËÏù~¦Am³"ÌNîê !x?ûS€z@lQûîË÷çpapo˜ÿ_+{(ÌÎþçvžn|0¨»'DEáeÂûÇæA H $@܈­#ßÏú¾n_NþŸfÔ þnp7À5$jAýáù#À^éá ôÿOÇ¿Wxüü€Ô Ø@ 0¼²£ÌûßkÔù{@}3Š~üèçïï7 Ãìà0ß࿎˜OIÉDÍXëÏÈ;åäà>€??À# ÄÅÅQaq ðßi´ÁÐ?müG¨ ̈ÿîµMuìõ‡ìôÁü;—&E\ÀþÏÍA [ÔƒÿÿÌö_!ÿ?’ÿÌò¿òü¿;Ròtqùågÿ øü`W¨‹ïЏžH”4à()Àþjù­\ ˆÔÓõ¿½*H0J ²0—¿7ŠP‚ú@ì´¡H[Çß|ùm7ø©4( ¢ G@Þ-?ô_>”¼lQ÷EÊ_.J=ÿ.©³…Ûý”™€°öðûâP\üùQz´ƒøü¢1ÀÇ ƒ#Q!j¼@Àî÷óL…@Ÿê€¹@ì‘?]¿­ü¬¿Ïï§ù_Um==PNä/f ZúkýKéˆÄojn+îTÞrV)Kãͳü{~±5æ‰IO´0’õsž¿£úÍŒ£îrÖve”©Ú“%‘#4œ;gC>æY!s)ʹH4Åž%¹=žüþóÜÚá£hjÌÒíÝDZ"k3L3¶$£‰«ÑNÁÕò•‚ï­ˆUSñMÀ(:e1wˆbå¾5bsc¶E·|–1Xx n î9½0cäjkçX/®¬b9YX£ÅšïàFÍi±}xñªˆp2ú ZíHTE-Ç͵8ó×Ìoù1õ!Ï G¹0g¯§ûº¶<-NxåÏç}:„lIÖ ŽEcºíÈ&s°Xs…ôA$ù½‰ŒqV]6í“ß6ÛΪ3ô‹«okb.„YÑãØnCZÝS÷hÍåÕßõ9iMýèæXùàè{Ó#”+»Å=ÿ O£"”p¥RªñMêÀú„ÓG¥Ù4®s·AÃIÎÝêë·zÒ ¶[&ä›^Ð-ñpµzš^ó¬&ë±3c\ÑiìŸ'%m=ño‘D+¬Ek{Uí¤Z\³æ¼ýŠó¥]ˆ„ž³K-b4'0X·°ý—zÿ#”ÆëýŒëºá¬‰­S:Q¯Ÿ·ÌqË‹ Pàngðì ’"eS?)<äš%C2ÕM@GÖH-Ü]ôD„´Æ)מjZF!ë&g¥ˆßãNHÝ‘kÆN¸4ŽdRydÚ2Mº“Êæ‰…}YçíkËâ ¢1štÖmbé#M½pš ôGÕ£æ9L Ó¸^ä‰Ã˜iº€fñÔ‡G¾¿ðÇÈz%æ`læ¼G³L{?Ñïu·ÊŒ~ëdúÙ·–Ü›Z*£ C½ù}¯C˜åe0±#¡Ážü–OÌ\é¶²–LGùnKRÛMáz~9ei#åæ¶¡hÏŸ|sa£ë>Æ9Ý¡ƒýÕ¦š°ºFÇ–«Ö´ûêËõ` ×r6el:&có³Ð’ùeÇS …Õ×öóˆù‡@Ù%µý…†Ó±ÉÐiGÉæH­C bÒÀø†Ø/×V½¹ÇD»~"‘ÆJ]“ƒVMªÁ¡ë¥$Q& ¤Xs»Wc ?J#íO¹õŠYj1šÛ¯ÅûŽžÁM©:¾¨éÕ'½Œ©u+¼EÆw"&¦¥õLB¦°–sÓÜ š0ݰ>$–Ï+jÀôDkÖ¡·)Ù)O*É®ð©øZ¯‡Žb19Èä+C‘ôôº¬¢îÕëoDXïÜîF̽žGsVíß°¥  Ú}¦G¶ôüùÐù«jÙd«"ÒL^÷äWÎÚW¸í/.ZiØð¬!M£9ÞÛÎ…îŸäMd[Ö®@©»Ë&sb}AäpP9ÛŠßM,šIΕÌSs§KJ;wØù!\Ž#-Óý)%tiépüFTÀ'݃@f & %Ì^¿nõ×›Wµ.ï›rŸÒÎv>K]7µ›$e%: :”…fàÓSnÚô“ÌT§¥¿¬ƒQ}´˜i—ÖŽ L˱k«¥z]#7 êœñ™û{AÓ"º¬ éÙlû‚ôì8û1`î÷Ú—Ûä†ÞÓ >&ðØ~ôæÊ„Û¡ÔÛei*Pƒ’ƒZÌqÕ *E€y” úF(ÖÖÔAš>ï+¡„ufÈjÝ\µôi¡{[—¼ï ,—ÑŒk¿œêÍ;GS'»AGçÁ‘)] ¾ê'Ò¶W2Ôªìš'(žlºã- {w“f4Ë Çž$1_N ÷aèŒå*å®`ÂÆßXwíMaÔ4!†d8Šd“GZÎò 'Åmuž&ÈâG‘% 9N‹pµ6~jõR§Ñ•\žÎå‰Â˜J›h^å£S›ŽˆpäÓÞé&Sˆ•*ã>_#ñ¼Ò%Ӽタ¼ŠÐJM¼­é[ñþ@(“ÒÈL¤3ŠîÎMhæÖÞÆcăÓ;?’#ž&¾$óèO3üyäjí!ýòXŒÆPoðᡘ¿èÝ×C†[<ƒy¸–§g^!ùiŸlå3‹%ìPšù>Fèiß7Üì ~®bæÊ©»³°–>ogNwãëv§Œq<Öîj|ô©‚É+‚šO²•ëÌ=Uï v&c'ÚçêÅ€{œ]Kg<‘¯9’¬4×Þõ-h±9)>i³'ÒÌÚÀN/4þ5)Pp°üeßXQ—~Gb¹wØ”µÝì1•g•?Z©G…Qê'K~.YNöab>Ž#|XñˆÍ¤ºô᲎o7ñ9W……ª©bq× ØGÃV¸Év$uW?¶s‡qYþö›|uR™È‘ŸOõqø!‰›ïˆÒ»kÑ܈x‡~Ç?<ÖÙO+ê¯^„3íß¾ì¾ÁÉ-¢FÜãæðDæ“æ DB6I}±dNé«oÒ‰§ñáfm[62Êõ—D°˜¡¹fÿ2K—T‡zBLe/<Ɔc{òå Ù)Š!EaèÖaÿ:ÕÛ7Í[xVÏaXƒ{™ Õ[U,¯'Ð ý"´Ÿ’MÒ*¼hI^v7ež2uPgÛd!ì¾Uî•#«y×)ó¼ƒQz¹U6Ú7÷¤’â9¥‹/ñ¼^ÞÇ(K88ýÔç-¨sûÕAÉYav‚¾Þ^5õ`QnW†ƒ-eA·Úh»?ñG%.È]š¡—SÈÕ _â‹À9s½nß' À?=s(˜o¼@Ó⡲ôG¯e›¬iˆcK4“ª8H«!eg3‰ Æ»n.‹¨¾ÄÓiês»°ñÉ5Aì2¹¸×{Ö±õó¾]æ­Á—µS_•6«³ûSõÌâÕ¹ צ—\ÊøEùÏåÍÌ«X„g#|_s¬-ïÜ2¥1g Qºf^äë&O•¡Ž»—>Oí¬6ÍBß2ß×µüîê÷úȺÌí¢¦ŸXpÖÆ<Æ»Q»jØ$]’ÚšøY$k'?âßÉtWtymшÀPšî4=±=v|8ìZgq1~¿Îy¢.5ñžËÝm/ p´š”îUõÛxl³á: Y•¸E²êè»d ›´äª†¶1ã÷ŽÉΑkr0Føð ÀmýUÏ¢JÞðÙ»ä>Å•8œ0AC¨Ía,ˆ*›à}lÿUŠ0ý¾€SX&\Žš•”ÃTss#œò-=µ{ûª,^cR2ÒËÁ‚â©àÇè2í…yø;} 7t¿¬o¤Q¥„%æÙ€]Ú¶š0†TÅœ‹ U†™­ûx1)êvCF ÆMǘNñ2H'È»d«¥È™·K2‹N™NºS‚ŒªóM¥ÊI-gˆqˆ ®·óù"8hwàÁTgeù ¥”äO–¯Zí 7 Ò!•ªy¨·ÑB¨C´&‡¬æ™̸,l°Ç—†¥ÛwW"ã•mJ7éáuY*_„2 ×V#ïHò›%–#Ô- ’®¿µu~¥Ù1Ó_érb*s roûFæ@cËU\Ê?‘ ÷„§*ÇËÅ0<¥N#à­»#¾zŸ+úË„ƒ&žÅ1ê‚?PI‰ñó‰×Ì”Do³;ïMƒ7z°ñažþOÝ(Ã= Ÿ¼×iërwÙ°Ÿ²wz ÒÀ1Ax÷‹Ï·øÛ ÷Þ¾˜Q™äN½¼=h{ÆkSx‘ã·ííFڌ޸ÜÀŸC;ßõØ“J±H_¹µ§¸†§µ“‡a 4 äôŒå&ï»qºöÄùð*ÞéÊ;µÐºÌöÖ‘åü†£j³Õt“#ùcŠÎ­ÐYYsg©Íâ£2I/¨ˆZýeDñY„ˆ3/—Þ¼¼­¿QôíAók‰§d4ØäuK’|{•údp¤:4­º&–ç¸h.[²§”×áMÞ²@FâîQ´4Ùø=®3PK¿Š–ß0z/Ò$‡ús’ò8&¯Ež 5ýbAC—J³gŠZÈÉ9Óáœt«h³Á¤~‹ó³Ïµ¡¡…¤G¦.Vþì”F•ûaÐ|£Á[2‹ wMM–Óú¥åÆ-dú7Å3CæÔªS­Hî,ºD²÷‹QÆoKÓǪçÇ»Êì˜Ji¯u®¾K÷'Ff…niÒÞSðï‚ÕJÊß1%OI×<‘-/âkzbåk{ý¾û®2œë g›ï=¬«·ÅéPLAÊ–ÁNA ¢ÀÑc!ß7Üà;Hsê3t^9-'!±ªÀë Ø9)¨èX÷:³;×;,ÝúI}\òÕ¦ù¤ÓÔ¶Et‰öáÔiß v*µÍ•ô>7¦NÒ¶C,fß[Å•„Ç ½!Ü+E]”Ä׿èŦ³@mX¡Fu¤­±vOG˜>ć§bÄÛ«á\æ[Ä-aê#ÉݶG.¹gÌæx;Ç›¥7SK³²U¸ŸÅ)Õóq†|†\ÓK:™¢Í/Ëcñ‘:Q‘˜$õºÆÑHI®Ú{œËîwêžÙ?„d«zjµÚl™toîc~=pt>p)UDç,ç~óãÅQg4&H'÷žxPnkù1ï~þõƒŽäµDÂ!t:j8ç²tśΪ¹‰J;Ãt徯Aœ¦cP Æ´=}<‡6ÏO ³¿ßÜŒ~wÊÇÍ%Ëd1¦wªŠ{„oÌÆ®ÿÆM÷f̤´¥F¸îyÊÄÒûUXÈ+ƒZyánüÜ|³È2ù¨Î·Ä±Þ4ç<«¹V9"®ÃV^ÙéYÏ Õ^©ë½­'‰räz>©ÔδÔö¢Aº%¬–Þ‘óÓ1óÓÍ‚!QŠ_ÊDH½Ž^äKëŽ$]—ÀÙ’œ]Þ÷> ZWöÀWÍŽ żè^ Óú,!°”c–å(<êþ`‰¼÷“ 5 ©¼“¦¢ûÀGñnEÎŒ:×ö˜S7CíS™ŠéR%<¥äܵÓü«••ÉK.{˲0÷ z¾ÍÌxÞ» "ià"h{˜ë¾ýfÞ£-h©TŒ Áí£ ¥I>–o²ƒÈÞ9jͤ€úÓSÇŧ—dcX~­Uk²?of¬-½Ávˆ»Â£Ã1~9³0?YÂ.žyÖ$­àQÌŸ¸B⪥ÁtˆzÇ~1¢ÐóÆ?Lj£ÛÚ¬Ö;Y¿ùòݸ2›ºª¤ž y†@6ãg‘Ûã`»¡6¹BóoÃß `geØbÓl¾ÊõÑõþK Õ·jvL [̤8Årܼ˜eáÙ œO V¥‰3‘꺣‹˜bóÁs5Jwú²ñdóùvc2B7*ð6ψ HjÍ{ã—Þ€)¬ÜÆÜ;zÈÝByt…Þ^_ôƒ^N°A9H¤ˆ~šÙõøCȳòQXe.¡øKΕº!÷¾oÓñgíaAf+¬ï^œû²³‡»¯*hÑ(>Ñ;í º˜ú›XÊ2 i?»ã9ÂRϺc;`¬v™0Aç¹|{§{¨PŒà ±òÕޣב‰š–}ß@Š,Té_‡Œ« R¥õZÅ ÍZ•±[ó—fŒrr®*RG {¦˜‹5ª; ”‚&_Ðô&È;Û?.`³âÆà‚OÐ^„jêã »Yàâ3|0ÂVø‚]Md[¥SŒ>‘]ÛÝk$ÖàiíQ4/.ì[Ôµ[Ÿrkù¢¶bßW¾¢eÔ=©·¨¶%ÒÙî-‘YÕf×PŒ…0õ”Ôó`?êš¼ÇÚÊ̜ީc—å~YÕÊDH]5™·ó ÞTYœÈ‘¤Êª3ÉB©o#ô¡ŸN—QyÂä–ÙH]ô„^‰È÷iËøçûÖò[[\ñdÙ”>q…]òPÈ>¤¼ûãÍ÷>U—tDñ‹0%þFM™4€¢KÍ' Ça幃Þ`ø¡t«´û|ÁóýIÍ3_wåó^ãx:|»,°=¨s°ô²Çêîæ^³ÞµE…è]ÓŽ±Éµ ËVÂ3¢Ù'âõhgç¡ÃG‹Ì6LtÈvbõigo¢Uãn¤ œ*ôÞ¤;†ÃȾF¯zâGùç=h­"I×c2±©’…QØ–ÍÂôÈœÇ ŒÙð÷úŠã5îÇàÍçã6£NÛ[L–ÅŽ—:‰—ÞÛÇGoö çkarj.Ÿt"·Ô´MÞœc·qéTZ7†u»|ç³bï2KëêЗ;mËC^’ñúI|Ç>HãU•xÆÒŒ}ÃQÏ%ò󈔗ӾÇʨ-zc%•ßþæËÛ\+”KÍÛKa5í†Å2ý&É·¸Nå#ÌŸ­E<U®B}·­1T÷*/û©—5 >6#†pvŠ›wªÃ5ÃLŸËsúo˜}‹PŸ˜Æêp¶±;Wà5T?ox|ÿýÇâ8…‡» _ºâ#`£³#‡ãï§,õŒÄÂC¶'«GlGüa®Ô]%ô£Ð·²aûñä^ÝøÍ…òä—:Là#& fþé—ûúRcR[– c¾ÝÝÜGLÏ\üu+¬'êÅaø§¦þN„z¦oEk#Ìøz-ên„Ö;ØX ¢€H‰¸µDmú@¾ƒKºÍ¿cŒðÙó3‘¹ú‰(‘Rýç˜"ÒγqööÅKéÕXW$E˯öˈqœÌ‚¡>vÉqr¿ŸöçTX5zSò†FZ}²®ýÚÕ™ø endstream endobj 384 0 obj << /Length1 1406 /Length2 6162 /Length3 0 /Length 7128 /Filter /FlateDecode >> stream xÚx4\íÚ¶è½F¢×Aôè½÷AÆ c3:ÑkDÑ{DoQDI$z'B|“ä}Ï9ïùÿµ¾oÍZ{ösß×ÝžçºöÌÚì,úFü v[ˆ*ŽâJ”tŒ,„€ PD&`g7†¢`¿íì¦w$—ú„’;„BÛ”A(4PhzÀB"!1)!q)  Jþ D¸K”AžP;€Ž@‡ Ø•®>îPGºÎß·.07@HRRœïw8@ÁâƒàÊâ‚®ÁF0‚òùG ®Ž(”«”  ———È)€pwåæxAQŽCâî ±ü  rü5š;ÀØŠüã0BØ£¼@îÚƒ‚!p$:Änq «Œ4´z®ø°öà¯Í ý+Ý_Ñ¿AῃA`0ÂÅ÷ÂöP §ª-€òFñ@p»_@ ‰@ǃ$ØêŠB ¡°_3 þJƒÞf¸ÂÅG! ~õ§ u‡€Ñûî#ø×á:Ã^p¿¿WöP¸ý¯1ì<\MàP7ˆ†ò_´‰àß6 ”@Üo°£à¯Æ>®ßÎßfô ~®W€=z HÔ‚þ"ðC‚þ#VnHþi½O·ìù¸þ7àŸ¹thæB\ÿ&ú# (Œ¾ýŸéþ;äÿÇò_YþW¢ÿwGª0Øo?×Àÿã¹@a>!ÐÌõ@¡U ƒ@kþßP3Èéê@ì .ÿíÕ@ÐjP€; Í/t_xÿŠT…zCìô¡(°ãÖü±›üÒ ‡è#Ð_Otø_>´ÈÀÎè§MÍß.ZCÿ¬«#ì~‰MXT rwù Ï½ø ¡UiñþMf€ B‡Ð3ìî¿VH h‹Þ#4ÁÑö?&€ ê†AÀ¿ŽñãEÁîîhþfº£¿×¿åxCÀ ³°t˜Óë°ö‹z/þÏ£¸+«Ñ }Q¢(޹~ŽÚxYjSnŠíªî§ëÏ—ELÎúÓóì]Œy?êÎ ^NSÏCa¨ô­+ðç~?îv€0Ù!èÆÅÓ£×Éö I[b[r&›Í^…‹÷ˆl¾úRx݉Ü|(¹ pŸ‘²¤Ñ£ž)ävnc>µ`a[E Y<"#w·Ìð0Ö0¿Æ| ;Wl¥ýî³n—9´´ô.§¿/]ä¨@«·Z¬*‚‚–ÒW“%w8i€–*1G³ ‰Á¡(z¦T–šÀJ[äÁ±ŒõX|ùÇtA[ Gƒƒ®Rð½'#uÑY™Üžå#›lãï‚Dw›“¢ùjÒÙÙ«í0Ά2ö«E`y½ØÔLܺÎ7:Óˆ’Òs mÌÅÆX¼'¡"Ö_&î^<~–•($l•*“øôRQLÆä:lo¶xõ @AÇN¡¯¥Ëâ´ê1|Oàôe´Âœ9~òµù]ûPOä‚m‘j*8Á¼#kûíVb“†èÙ{2S1T­Ö¢Ë†;>7~:Ð0/[¿­SMú¡¼äük¼©I¾1Ùœ±ö&F†îm ©p… iRb ç½2ÆW‹•b#/dBšeR%‚€O>LÜR6؉'­]¿cÐóÇ:ÁÖý@PßZ+¯ó¡ãã]NMÔýhãvÂÕWE‹©àñÙå<ÅŸ&6¥OåÙ?ûwºyÒ°Ÿg®PõÒ5¸nór„±ãaCÆ›‰ÞÎÔMoõ†Ë3ì Û!5©Ö°"XEc¼h«ÒR?U´‰e?H»ý¤ß½gľñä;¡å¹ôý`Wë¯ ºû®?ÊÝ•ä$œóá’"ëU:A’~Ø„Q¦ÊD§äD ‰†áY¸†£}#ÁLNk‘º`Û’íis YÝ¥šëÁY/ÃEk-ƒ æ€/ø«(DU⇧¾ÈÇO‚æzbï|]µ{O¶7­ÌÜè•CtZp£,G4“XÄÏŒ˜ë«h_ ¯Û·Ü©j)C¨§úÑxOÑRnqvµ{Ðú·!ˆ.Î.Ít™ ³TRŽŠw3[â§1O~p¤¬gÀ˜Uo¨j“a: ½bR͵=,®à„)]XŠ‹>ôpá‡1xÚÏ ByíÇïæèlï2לÃäÀ<ËQ¬{UÖ†•_¬Ê]"6HßCK´Êõ§âX4îľž~ýcóî©!ÙOÔ´™tf×ÈaÆ€‡<×½rÏH Åô“9~þë§§ ‘Ϫ¥0¬ÔÎc oìJz¼Â)T’º™BiOÕštË¢éòÄO"¥Ö!ÊPSD]úÏÖÜ$¹žºf锜Z™á²|aýë%X+¾7¦fÑLîâx*¥Îaç(;ÐOËÛðåPçt8“S?³µ‡m*h\è[c–×ez-dQÛi ªû:sÏEB½$0Å ï ™èkÔÙûi•"é ÷F-ªÛóww<»ãÇ-ó[~Ì35k³ëåËogª‡F$“?XÖçŒÓ|9ü!Ð3q†¯Ÿ­žÕѤDGî¤n[n5Ù•g6LÜ“xŽF惾2`]$Y¾P7IÔú@$5Úøs„}k€ÎÇ 82´E;¬ž¨(>ýeŠ8üv˜aáe’¡ïKŠãcûo~‘ÖdÊŽOløef®)¦oÍ\¾é_ÈE Ûs*û,¯ÕØ ¼š~%of’H®…Ó‰»q†Ò~¹¥uußYO†f÷g…ü¬ ©ô#ŒoI¡òt™æ‹3æûLbq|7,ËEÜó˦±ù¯Óm!ÖslM±Ÿ¬È$`©ñMÈް°nÁ„µ5kî,ãÏoƒ@Dǘ«•{ u«ÔÁF¬ùÒñ_S¯<¬1Œ¢ D2ÅeÈ>xÂ?d¯ãWeÆ×Ž·³†Ož—QX âŽòøEMöÊçM§ñ>eÈ‚ߺ.ƒÆ\áƒÖë§?Íø•é–…`ì;²#¿—;È`´Ì­êR‡l|®4]Üí•eY|•›á#ÄÜ=²EåÃ’3IÅoô¢<{lJp ¿ÔI&¬±ôwY \Ïow'П·¸‹·wKÕ=LûÚÕ¿á9Ï$éLèCGÝ žäã*M§<8·Hv¢ÝÊ™:0 ³ª\ʶõUS’ceñ‡,y±|­M{6\d¨ÿ•íKS‹ÔMÇ{îÁŽ8•{ó_‹ì8+{?wÑó·4¾Æ¤ï°ÆD.tÑÇΤ!t¯~xE÷¶@›XbüÍÉÂ3ððqÃ8‚r³2&[[½è}«ÖÇ“ãÆ\îŒS<·\Þ¹` ŸÔ¾Ñ¶¢¼ì[6:#±×ùåëð€ä¦¸×ôœ'9ãµge(£ÒÁB;¹¥Zs*l ®P‹Ðð·çκf ovUç|U ¨Kûæ\÷¡oÅp—kqfÜZxžˆ©pu½ãÖ†;Fò æïŠ˜~·SvŸÖàs+UUX¾Ïs ÿäøEOfò}Þ' …yLoSTÀqï_/`%éôoÏ V1Ro£æÃ±®Ô!Y úJõßG)- ¾E=iMìˈÀ)A0òì¦KÆö»Ïh<ÍG8U›ìjQx;å· ÜæÃ½àµª™}}HØ«‘ SÖÞ7xˆ%|Þ¨ÏGœ´up>˜°èXÁ…ðï ^Çæ‰Çò¨ˆÞK·‹<,DÄ¥ùY)•˲ýÄR½íëÀ2ÅóÑŠ1ãóž_÷GðîhÑhâH"¾OËËÀaé™k5qˆÀlLÔó±žíZBmÓè''ïn®.\ˆ(a 1"+vÊÖâÇ me6¯ š  t®oÎú☆ððI˜¢>æ¡ñX S£¯¸¿0çïbŸÙ iå8WTŒÄ8-VàÓþ4åj¯W™Ý¢›â·Aefߨ}æïj¾n™7/¤+èAiøßv¾Àž¾Ýg™|¯1TùžÊû$W×jUžŠÒÓÚå Ï}w½i»1¸8üN!Ù–½d(O5ý޹Ôiç¦ì@{–Ïè²6£=æè3ª^É$P’“4/£U0ò6÷Ä¢B’CoÏV°¹VæÓFNß…‡Ç# Œ‹Ü·á{gãwêfŒÛSÈz3>h­knï}³V†–^[H!<ÿØ,ÜÃrH¹ly韑v÷»¨iضý¤IÌ–›~pÀùÕ”¿ÌMlúÿL¨ž¿~/îWd–äa S\ÀÆçdF^W… ¾¾n§ aQ2¥ÁñìÓ¤ý´ê†ôyÒ@o‚ª¥ôôƒ-ÃÀ‚4”aÎjk ¦+ƒ„Ð‘Ž¶‹X?èdcÖÅõhO3Q/_S»–|cs°¥0(R²f@õ­K‘Éôä Û¤JA+u‚“ ÁS+9@Å×ç~^8Õ6$¢"çEª{Ó]u÷Ÿ+f~ÝÈÞQ(­ _íp{=~0L¼òfyò~^ SdaÂÄžÐ+}û»ïoWóÍõ剬·ã0¼p/,±L\êö|ü‰°½¡öÇ3š“®@ïs5¶›<ú°¢­q€ü–±;#)M¥4Ç;UG3SÀ5µY‰!2w«ºíYhn1ó w” à nzá¾6”hå’_XxšåKnîïÕåÐpIÏ]z)kÎòÎ%r8$?£&6»a2URÿzñ\â½3ÍL"Ο‹]"P ÞVQiGŸ@qÿ>&J·¾èmLø5i³³‚†U$7ÎI`£QÁ—‹´x]È3\ÜÌøŽRë8ÆDÎ+°<ÉÚÝ+ަAÿ+c}…éçL“t»5ä7[ å¼)`⪠ÆùO|8]v2M¾Kº²Øtb–´/žnpëf«Õï¯âdÈcö•޾q²ª'‡‹˜ËjæûÊ-(ïÉè^„ßê°…1>ós£±µà’e]àùú´spÔ¹ÔGä±sñt­¾ÞC¯ìµÖraUDØAŸ@µm÷ÂO%‰j¨¨÷©Wðíj&™•éê¦#*çÌ×™ÍÙ™Íêþv5öؾ9ÿ²š´M Û,Mþhøø‡Èó³tWf˜Aõ‹dƒ/™Ñض«¥T‚®Ç·Ž_0'»uªNJ`ÛüœQ Kê‚oS¼Ç»)pÑŠóãð•~0Ó•‹ìr´n §®ßÎyyÈÉC}ífd| ~„z@?ë|$ˆ/W&ìBË;‹èb4j?DÖyë{ø%R#Û[Çk.ôsŸòò?¯*Ë7yš^«zjr¡ÏÚ¦5Á[Ñ>eÑ §Vp¥žáCíè鳴륜ñ$»É¹,4øba_îI?ž¡Úü¢0¯.UÿêŪ…:£­PrÃZ›ú€_³W耡µÅd-1Á 6ÕÒ÷iêÊ G¦tr®Gx>“é-”úËìª2m!=ýŠ‘¸g gùjZóúŽuOtë-›±5†l¶¢‚”ðŒ©}—§ìooÞ~0–{|ëñ}ô¯²ŠÐ¬&gûõêÛãÃÛ¸$!x‹JƒÈÖt…í @ÇMq‘ç¤[õGž«[]'ZÌürt¦—EäæâŸ•éY}—2£•¦$ódN'ÍÀ1_“Æ SdNº]bN/ ¿ª!-—Çb\¸Ó„¤ÞÁ:3±Úxš$3ióóÎu’hý›˜ ÷ ”¬LuÏz°­Vçk¢T½‚{m>Œ³ñ¢¯8õêøÖ£“óù¼Aí`ÌíÐ|ýdqŠóÌCÍWZËáþâñä3&é&nÖouÒ—RÓz<;†®N•žÔÉui†¶ &©²Š™Ôe7q1Ox?jL‡iY‡¦+&e¶ƒ‘ß–wC½šV«så,#^WbzKOsƒPÛâd¦kÃeu¼•dEM•Uo®ÅcêL!Y¯fËú}6?½MÆ3΋U½RswX3Á}K*:™Ëá_ßЃÿ$uI­|c^"7}‹(¿WÇóó — ª$t}@t8^?ÜͶ³ê3À1»®7ŸHåB,û2®êà¶¡e'ÍDB÷Ó½/ø?9C6ß¶ UQÌ¿‘`&9¤ø<Ë%5‰¯•; X§x˜yŸI+Ê!»¬ïkaOÙ& …|lŽqe `†tÆÊÞ¯åÿØ@+àSÁ»õ#刜ähâ€cŽ ë·’׳%m›¶tžŠ`Þ@•.^9ÂAÑâ(˜ä‰y‹¾ìÜá䶆ꦔ\*e>×ÈDo ÜOì$¬äbYô©BO\6ØÙìÒ¹¨ ¬sؼš3ôõc1u UÏ“’×sº$´vNsÄ"¤‘²„™÷èéÓ&Qœæ©vT’¼*⵺¸ø™v±~}VG±.-Ï#iïô’æ¶ÍÅQÙÑyÒ>µÀŒÀµH;ûÉì…p¥8ù–É’©òVÿ¹¸ªâîø['}ɵ£*Öìn‡dŘç±c} ú{q'ÒŠÖñzeÉ"ß»xïˆÔ…zÀÛ°ØšV4ú‰·nòlôp!?¿'`Î`{³ò8$€_’Ê@ðmÑg:HP®Ü|÷ÀàÖTMÃ-&ÒÇ ,«˜bÛƒ®Û×ßÚ¶*l¶„L^Œ¦õób“î zÊk,Çsj£h5ó–éɲë$j„,#B7Ì{â†FÌ<¢k´]Ÿì=Ò1U¥ŠÞŒñ:k|6“”µO (kN\¼m<AE6VÜ´æ;•G÷ú³–Ô9ÙK˜%È´¤šÖŽqÌÃŒ³ §ªãžGˆŠ;S­üL¾Çˆ§žôƒ¯Ò{ÌÿYôÞ-RÏ} ªE¶¾93ºëXr§å¡ØÄÝp ¾åIG#~³‡äñÄXcšw9›j·dJ7>zé~~^‚•KE³]艮èo„yõÚLD«cX´–E¢'†Y­?O~wpû) ¬µWéç’ve•ù9džÈvVCîÎ( o¯ÇÜÖû~¸ý˜|¿Ä5)ïy¥TCŒF)MëZ KÐ«æ¹ %^ÅÇ!£÷l¯ ~0M*iŸ'6S{gxÝþÔY̮ڼœÃAô„5lC%Yv4¿Qú16I¡çö æÅjcË]ð,®Õ~3†U-Ý„ÎéÙJn˜OÌÊÓ{FÊÃÎ ‘Úã¡ åkc;Öäò—¶¼›ÝzVó°jïOœb^Gëb毕H»”µ˜ôðh»#í³¹佬ì‹M3‡{,·ŸlÇ ©~ÿÆdM¢ âYy{`M/Ûsªš¡Qø–'!ïågãæåËaàÂ¥í½³ì[–Ù¾>ãI3lØ¡ÊÎ3¢év† ;¹úÂåýdp|Ìd»¢6d/«7}ä¿ôÝ´˜¬^âÿ~¥Ð«.=öK;xà£h+^cáðŽo=À‘/‹|¿ŸŠÏo—ý¡ÃccëFÏ(æÖŒÀsN½!*Ù"?€õÏhzÛ_ZϼJ¹Ë=“ÉïפßR£7{)LjXÚSOâýîë6>s”Aþ‰—¢ÃDâZûµÑu[n6ë\9,ÛöàÌWº¥6CÃgæ‘ÊN÷ðV´«{©³a“<®|„ãÍ ‘Ô XïP4ÊèüË[vÆà]®†Ë oÊYï 7xd¨@’D/xß.Ô KqÒáSÖ¶”œf|Ú´2xMwrPc#Ïsê;$ÐÒùâyÒb.­=a Ðò}¤K™¶yµ~N­²…Ç·1ž"“Ñ¡APpSòk‚L?JMÑ™,O6Ë EͽKf%é20k}ªw}:™xŸGÏ÷G«¸ùØ œRaÁqµòq~~œ"~gKf[œ<ÅânfýÙÅ»ƒ->QøÆŠjLª`ŽÜÕHLæ*‘)P¯+xC–“ê/>ŸÓ½¬tØö_WÕ—`J[P{b Äo¿Íq똱³ÝË =ÎòNΤËaÍ4ö÷/ed=ɼ†ˆÅFéKæ{yל¾sÔ*ûã~ì÷£ñîØ¨]åÈ"?~yþPÛS¶'ßCüîô›×ÓO‰±´ˆ_‚æI{i©0b}ÈC°;D«IÇá 7nAk^nmï4x)Å{ÃVùóã3ÖÍ„á/¢9r—ENÖä(ñÁ3«Úž’E?|³™s‡…Acg3¾þõ+U­ÓˆGKB!MS´Ž`™9~_¯@‘‰gKKVXƒÕ$ðD‡®Ý8ÓXžÑ0ûHîG1%R¦¯G Ì º)Yç€û3Ì/)ÈbL#ºmÅ(¿ÇÇ]Klš±tïVå‡áx†WŸ»Ó‡‰…„J†ï9fZ¬ž"/!8 —äk¼™DöKþeÒC×.UñÖ ýÌ…i‹év˜ q†ÎЋæm ‡Â”Ùï¯æÒ¦žc\½¼¤^éYˆ¸í+4ĤÆéŸòÖ>ÔtRYx9i" '6‰õ)ŠK¹üvø¢³Ík3»­gVÓ¥&+õiI®Fi+^˜¥¥Ã›õÒe‘…È'Óz[ Ù€¹W7Ô't(ÍÎmHXXþóØ‘Á¢Ï?£´âJ‹^4Ušn8j:Ò/Ý¥UçJóç)Îû±L˜%g7ȧƒyòŸH¿b8œ»õÎØØ$Ü:J“)Èr¬òÊéûÏÚO=g. ?ÆyîÕŽ ŽÒgfæÄJ‹ÆÄ-ÿhùÓÌ endstream endobj 386 0 obj << /Length1 2688 /Length2 19036 /Length3 0 /Length 20564 /Filter /FlateDecode >> stream xÚŒ·Pœë-Š‚»Û@pwww‚ îî @pwîNpwww'@àw²Ï>;Ù罪{kª˜Y­«ûëþþr%zac[C „­=3@T^U•™ ÀÄÄÊÀÄÄGN®jîdü¯Ž\ èàhnkÃó‡…¨ÐÀ $3pÊÛÚdœ­Ì¬ffN&& ÷ mxb.æÆy€Œ­ ÐŽ\ÔÖÎÝÁÜÔÌ ”ç¿?TFÔfnnNº¿ÜÂÖ@s#€¼“ДÑÈÀ  bkdtrÿW*>3'';FFWWWkG[Sj:€«¹“@ètp~• P0°þ]9@ÕÌÜñ? ['W $°27Ú8‚\œmŒPv€Š´@Ñhóc¹ÿÐþn€™ùŸp{ÿ dn󗳑‘­µ»¹)ÀÄÜ P”cprs¢Øÿ24°r´ù¸˜[‚ þ¢n~0Uøw}ŽFævNŽ ŽæV¿jdüÔfqcQ[kk “#Ü/~bæ@#PßÝÿ>\KÏÿ"sc“_e;Û1~°1·wJ‹ýmÁý–™ìLLL\¬, =èfdÆø+ª»ð/%ó/1¨oO;[;€ ¨  ·¹ ôçéhà898½=ÿTüÁ13ŒÍœ†@Ss¸ßÑAb É0èüÌÝÚL ñc0ýúüóK4aƶ6Vî¿Íÿ:bF E a)Ú¿KþG)"bëð¤gг°²ØY9ÜïGQ20ÿ›ÅžÒ6&¶îÿué¿„]þžª¿×ƒðïX ¶ ¹¨~¹;“èóÿó°ÿåòÿ7ã¿¢ü_ÇüI8[Yý¥§úÁÿGo`mnåþ·hn@; o Ú›ÿ5Uþgq寿ÎÖÿ«•v2í‚°©Õ?4w”0w+™;™ý5ÿøµgVæ6@%[Gó_7 €ž™‰ét å2²ÝŽ ‘üKíο3ŠÛÙÿZ2v€ƒƒ;h’XØÙžÌ m4ºý5ÄF[' T7ÀÄÖîבr°…‰þƒ8Œ"¿'€Qô7â0ŠýFÜFñ'€Qâ7b0JþF,F©ßˆÀ(ý±e~#ÙßÄEî7q‘ÿ@\~#ň‹Òoâòþ7qQþ@\T~#ÕßÄåÃoâ¢ö²küF ìšÿ nPv­ßÄÚàÄÊnà-sGËß& `†¿ÈÄÐÀÈÒÑÊÀÑì)3 ˆ©¡ƒÐ hâô‡˜ýoñ¶ìŸ Ìÿ[þeÏÍúü@%ýƒØAŒŒl­@ùq¶_këߥüUFã +¨?ƶVVX€XYÿ•”ã—ÞÞ´ò¿]@Õ›üvÑ51wù#Æ/µ­óŸ9@&¦¿#‚ô¦¿¿À?M@Üw’ Ô13w;3 Í ™ùÄÔâ:BË? ¨9¿s€º`õk=ëA­´þ A÷0ã©@7?£ío2 [лÁjPv¿Õ _;ÐãÙæ_‡ÈÆü·ôßGÈbmšÛ߇ÂjŽ•óä@¯+Œö¿ÉÿBÎ@Ç¿.ŸN’í—ÐÖ hlø»LVî¿…ÿÎÉÌ 2þ£ÕÌ FþÎÆrrZ›ÿ{”ØÙ]þè?¨Áÿ3îÌ b~§=5Ì€ ¨3N®¶8€b8ÿgPŽ¿^clþl/èì\þ€ ‚®,(¨Û”Õý:¿à¿®_#gÐQ8ýõ„ÝÍÿŽðn@#¸¥y[#Þ ‹š o?«„ñ]é÷ÆùgÈ÷Ô“©é=—Úœ`¨+Ó6n…†ºQVwÄ©n„–‰Ÿ=Ošë`BZâÞ·>z=}ŒQžÚk…[œÄêŸÈ?®í#„% WÚ÷z¶÷Ró·„lï!϶wæBRÊEÿéÚ+éVÛW²2<¿÷~¿’Cþ©dšþˇÿ¯³ä9†s8¤ÐNô„oiÐ.Ügongв&^‰ebhá¼O¿°xjm²DÞÏy¬•©²8vâ’ájáBÞ NQxŠ&Ê`/xFlð/d2Q3€mŒö{tœñhËI£a3Y9,qKŽ’y·Ö2úkô À¦ï©èÛÑÔØ -àК¸ºJHæ*6öêí†ÀÞ…:ÐË»DÁ(¸{îo-AÝhžÜÈžœÕLh{ k›lÃÂmc®6Ь‰=‡Ø{cÈC\ïsuzå[¤“U{öXLœÚÍ¸í»©´õ—ŠŸ;#ÁÁä'¤ £ ç§6p’ÅÜT£³éÀVr·‚ÁêtQká.K|Xa°¿Üa;ËÕJæ’}ôpu%¨w·ŠŸ(”f7Dk$¶0Š9ÓÂ,ƒ@J £‹ãÌÊŸ*‘­æùùNHfŸBhªUâ|L>äà®ëcIΣ1ê;SÚš‡þÆC“0¨Y­ŒߦÆ$u‚0…Œ0)vMÆå>­šþüÃüœ¾8p,|ñ±í‘qŠì/ÒðÝl‡sw·ˆ»Ð‰È8fv–&¡ ÚåéäX"OCÃW•Ý‚¦Ê)²ÅµºŸÇ¢ùTf”š:_‘£Ê øoJ¶µG zâ–t«Þù$jÍti-º» VFÔ„Tø«SˆiÇÌ¥Q ÕïµÌñ’r´~Rò¾÷nÙèè™2¸™·`øø<þ%{yDЏ~Ífÿ‹ÞñÏ~ר¡ùÆ7ë¦9¬}ÍŠ$ŒQÓUD‡=ô²h;O&±N/¡Òƒ¬£ ^ÝcÆÊv3¯‰I†Ÿ_•…¡Ö‡ªdg!­Ó­nõV)ÔWý°Ã×<‰s/ž­%zñÖ¾—fÔ%uà/Ï¥ ±FKÈúHcp a©r ¯Ê?**!…1ðF®EGH ÓškTgòz×ÄþÌÄØ·èÓÔ¸_p.%þ–Ç>Ðj·-"ý­p+'L€õTœÍi÷¾í “¸TÊìÛ…³ö)¢«f[Objæ^Ë7m§Éé¡áÄ弈ºtA³ë”°&Ãô­š%B2?8ãþý02€Ò'„OiŸyüQH²/‹©#‹½>L}ï/>‰0Á†¾/E«Ïwú‰2kœÔý5›¿,-}ìÇ7_Zü†üs Î.òs¡×$¬môATj\ð©ÐUF°IûP¼«“GÕwÑÍÌñNâÓk¹BˆS¹~ØÌ¸=y5zÊ‚‰ô WÝ…öXA0zé$4̦®w,9lŒ…ÙYM¬B¥Û:Uœ+ÇSÌGÔŸ6S.~ø‡‹»hR¶ –ܳ‡JùòÛX´³l·ÍAÏaF»2#|yú9zÈêg˜%­’ÖåÞTÃ9º‹h2ŸS¼z·w|YøXdbzJÞa—óÈg~I¬HDEéY5W3‚äZú¢²¯L£ä{½™Âß®e™ïÜ÷&º“(÷™+²ùÒs†®Ø•t®U˜ ²ôJ™]Œ®è9%‘ü¹Ç`+M}Ðÿñç/ûZz¾’µðì m¶Ú°ÇÚp^lšqŽ>«ž*\–’ ^UÕN×qYŒî²rZ‰h(”^%û3÷»ká³-ZÁ‘²ƒÕêc¡Øž¯Tê”ût!`/"}’%¸ô±£ª9Á sXšæ~PÈA"t–E(¾ã¥â¤iΗ­Kš›ÅúßP§ôô‰Àê¨Êg(¡­Sáe)‘e·g)²PÓÅ7•èxä=ÃTX%Y”‘„8t²6é/æô°4¾Pú­ÞøJ`1Ø›%÷¼¹ÓÄϺz´ 0()r]R¨ø`7öU¿¼üz;Už»z÷#†Œé´¡+ÉvÂè7Ç^ÿaÕéx°r±NHÀ!u{]_óþ×Ö8ý×Ãüb(˜ʽnýM3=ènUÕ(éR©Ï@«Ý†\Ô¶±Ø«È»žl}´µÛùÿd¿Û…5e‘]è?T©&sóþméçìSeEŒ§ŠoTáÈõ)N <ƒ¨pdûxDOÍÇd¹s;ܤúèÑ]¶ÅŸfÙÜ>²…îEe/µ<…¥öÒ]g~5Þ¶b§41\³§K”ºe(ÆUrõmÁ*(ØÜiõJ^½±w#j¨ž—‡h¿î2}<š5f„„`€±=ó¡émKDÛjiGîbØý©‡c>¯ñ¶Eö“;¥Jüî)Œ7é(¿C¨/@EȬñÆEñB»JGC+Ò›^þJõ¸ÌÜá’%®ñ´(lM¢õ#Ð’ÿ¸Ÿ"M3çÔœhÉõGðˆvNF°‹he¸ÐcGªzýË‘¾Dà¶ Œ"Igé‹GÎ@Ož85Wžpº“>mÒ¸íñÒqüÛŠrD¿@ ý}¯ßršŠ1ãƒðÑP0Ô NÒfö1 /¡D4LÙöç~-Õ~•A ˜`ûXû‰£69‘{ý¸´Y½¾\°;0Aþh¶ë_|y\ä‚ÙHPO&°“ëkûé¹z¦_ƒ7hì﵄()óêÁؘ~(EÙ®Eôy ,eQ~<ŸëKþfdT¿Êhh$xþ[>Î ÏJ9»uÔž;5jrt´­CËáUÖÀ ÓUÛü'Qo6F­W‡Á*ÏVì®Z¯Üâ%Yó³’[Î1lÜË›ú¶¸öícŒù[>GHnÛ‰Q*Ÿ¼ÒM¸‰Ê;5.œEÜL$ ÅŸ\Õy?¥ØÒuÂbˆÈYZÊÖ{Âp›¼55}¢·:ò*¥ø†ï7ƒ$?h@“7Kvû™°ÃåÝjƒÀ)ç‡S£#ß±ž˜R0ÊFŒ›&äÉ”qæˆÔƒBõõþÒ˜¢¥WµU„âdghZî×ed6NÔpwIdª©î— Ä"ÄîÎ0Òrám$[Åîñ^eFZ/"ùûBZ~ÂÄkí÷›By@·Ä=|CÁèÒqÌð×!ÍÎOßÏÓç±?©šŠÔYA¡/}áþð,q,S)HЦm§Û ¿üfØnÜ,b±+{¼3¶è2ø—ßÄ\œGÎÁz»\°`­ßDö‘l8oÅÍCŽú+ù¨F|Ð Ùb¶á·ÝN„žqªÈ8ѼŒ28‡6½*ÍIú—)wM0}Jùúg*Høò·•gÃòè¥JÂïúMbüTIM"H¡wI/_)b•Û{ÅNàu‹XäüŽƒ{Á8 .ͨ¹(F1E PLoãH°[˜Bë/œPåùúÂ!5˜À=Ú˜7È8È0½ýÕù6˜-öÌ·99žÉÚÙªàUuµ€ƒb¹=:—ñUç÷‡¶Í-py­®HNd®¯}×ám‘B€³éß‚6b ݨt#Ö‡ÆÈf&äÙÄÜBmNÜCÁrzGÔ³‰%HÞUÓû#ûùð6ÓéuÚ[éé4Þ©3÷«Œ[m×ÂàŒ2ÁʶŽç°¾óÚ«6f(>qý×kò£f֮Ш§OœÝ:s6Á 2ÄõÇ/áW)ÏÙå–e5ðµo®Ú-:’Úð*6–÷ië`Ôxs“ŽÅòsjIáÔ%?“tm”È\jª]ޤqÕv2w=C¿“‘cÆD—¯D'íK3ü:ú¾ ‰à{{³‰QãäL–C][%<Ÿ©•Ï—ïI1ìš•²üþ*{—º'ÆpB¡ù~aØç¤7oV1û¯¶[ÂG-ÕÖœ÷Mw}ãŸsÂçÏQ¼)Ù¬&ã÷„î+;>*Jo4sâ¦M0zFëAy¸Ó;Œá¸!šàç´? qÊlLÍ_þ Z˜é¼«SÉ(Þ¡ÌÂÃ÷ðÄm>1¬/˜1²T2|ëÓï¶Ç”SÝÝó³pÌGz¦œ$Q5°)\¹„l†®€( è”1ûP,ÿtÛŸB<š««6eàIÖõÃ]ú)[Òâr/]ú¦yaˆ¦þF3 pQW“ö‹ýµ|L>Mc†O ~§Çj ߺ»ÿ‡}ÑI¡à$ͼ`ü,1Ý–‘ kçŒàqŽGoÅ#\qUÃz-Ô¹fŸTÔ¬aj¹uç¸ÙÐuølÊG¤Q„Xù5“õÇ[HHˆÅ¶Á2I‘ê]˜Í^êZT÷AÇ“Rr°CBû!ãœÆŠ=yûÃAöêáÁ1W¸•«åØ™<ŽØä0.D4¤ò|£ÐDÉîG ÛÜ Ò:o’ûÙ¿˜Í­!ÓëÄ…ÝïÊÎbvÑUš*ÚPra= –”W`ã‰ÏSò¾|bÆ„ì§ûRâþ0ÐêXÍ”ÝrÞ“æŒú©N %’¾Çwµ·HÃŒ›3Ó`¾«å¥¼)š|S§WhÌ7Aõý‡ïC»d'| åc´Á¸<>ñGXã$Z«RURO"sŽª.jŠ+X¹ÁoÁ£M ²JÌ7LSÜZsª¦Îúg>°^™Šžc¼÷/Åxgç­) #«pßJ×>s'œü]Yi”FÉÒœïN]|/.?qóD?Ôi\14V©?Õj4êVÕ“F‡I~Œˆ|Pdy/[!¡Fð S|’îëÙ‹ÜE]¼F]5âòú½X¼ôž€?šÃ7¶…¸9!Ü{ãö’¤®ø—JvŒZˆã–tv f¯˜‰2m£¿’9Ä«céŠF áKê줵u¸_ê ¯xy¥Üq¯nº”W¹J\wUuH#àÝÍ`LÇ׋Ÿ#„u_÷ª:[û‘K¬njðïSvƒwEWA*HX÷aûÀüó®Vp¿·"šª¦(ÉPÐËÐÕÞXª9ªÉã¡¡Y¥&˜i³¦Y…­³/…iâ™sX¨…ç‘<7Š~~ß1 \¨ÊŽ)-òP¢y?Rœ¤² ¼gLC|`¥p†½eˆn1RŒáÚæü±ï+$ÓkÁÇë~HÆÃ ß÷—×µÎ&×Û¹p—”Ò° P¹­Û‚Cèö%—)ÔpÑ'©35´™ 9ÂhS„“¹Û­ÅR“ñ¢ÜóÖo¼z8jÐ~HÞ“ó„\É8¼4ð­S•šJêu÷ÖÕúTº)AëùÉn¯Ïâbwmj>h~‰#ýÙO†!hÒÈI”´œºáÚ«1²k{zÀú”N¹M«ú èÅyã“åö“[¢=vz8€á 7ú=9Þ|ç­·‚*.aì'î€Vgs£}DZ]?W8#-¯†.Œ7d¢ƒÚSDæa À‹@øiÒ;°ÇšÍö~^¯äé_ µ;P{.ûx1³”]C6šÄËÙóI3Õ÷¼üxç*¤9ο@Äk@Pê‡ÊÞ_;z³Dàz¾¦vÅ“9v‚ÑØŒÄ4guŽPFc…PM³g1ô"ò9yˆå;byìäÄ5öþ䟕‚W §1«ÈqðȈB ¡ÏC<1{ÙQ×QSDÔŽyÉe! Nv#I—ð:*¯ïî-y\˜Ž=,Hm»úfýGbê+ç–,< —Èp[¤øÃ*„í ÑVýœs¨ œlcŠà“_ á·+y½L[qˆ­ùïñˆ|¡Æ@YD=ŸÍF?ZX¤öM>kÉf—/î¦LÜ_ëH‰˜ ÏtÊãeÒ *ލC"Òªs³.WhKÀÃúbXåVK+2¯ró»S&{»‹6¸÷n`S¶;RïCkS\<.Òú/€¡K—lQúE£ÀbûäÁR5ÊJ· L"„nš­1,ØðVŸpù=QÑëÜÏñ7LÓ¤©øŽiã*¢ûüÝÓîÃÚ³³z|$ô…ÌdUìrñëò¨¨Òô/XsñÒç`Ì!ÆïÒÑd¸Ï)R¤£ ?½«Lô™Fn4Ñ´Š ‚Ó•c®J¨ÛË{O(k:§*A6”»¤ ~4•·dײíµ]ÃØ%(ʪ œ6ɆôÁÞ8“ì˜}Z¬? ¥ËBÉ.KÞ1µÒ…çBo„LÎZÔ7U`Ô·ƒþŠ|0¾}ÄÂbYôà4KŨÝ+´ãÅ+Z¸¦kàÀ±3§qƒ¤ÞDñM4< LëöóûÓÏšúEú2E*7‰Ì¾ÎÚ_¡s!ð1\M àwÐôvÈÉß• |?H3ìˆ/”—ÅM2ð4´•M“Þ·™údÛ„ï:gJxÅÛ5÷Å+F¹ÝžPõ¢”ò¡y\åaÞVz^M§fE×|^Õt0ü‹öÇ ­ú§Áy/ñìù•E” \®Èò¡ä0´â<.paäAM3%ß‹}·â ݰx'4"õk­îªÇû_®¾/&5tÜ4· ëÅÓ²&ì)JcÝïŽNŽRT›ö/Ú>b~ð“*ß7¾fÕ¿¬–=¼©Ì¢„Ü–á1²(a- 0aSˆ­çaæUDv!åóŬäæï˜ 1ˆÁôÄxxi k¸¥ð–Û·qÎ(ôÅ)`[ÉRÓݤeÈýøÉð¸ˆÌé¶4šù˜¡Á{h~`¦Ëhê©Òs·”/ÍåônµikÔcþ:„ï~ ì2qp2o Œ{Ôz§ÞŸ4Ý0À©!e8™Ìýh²d>Gí «žˆÓ=?=+·¶Ã™‰zãK¬”/Û¨NC¨%:ÔŸ¦˜y¬âï{ÂT{ä7g…Ý0>ßÙ½§TÍ>žpGïÍù9àíl?Ö}W v“´hE”'ó`s°pXò†V_í.L®ƒb •ä[x<›d4ŽbŒoQ¹Üæ;솨bÏ w5ÄD”®r݈ˆà{th5¤ G`ê.µîòã†&.iÍù÷tsÁR0Á(S ß$µL>õbRÄ+uº5ÕQH£á¤¦¼žäG™óS!$ezðh{RÉŽ桦tër¤­\*Ü•®—žŒ#f´‰ œP[<¦\wy§ÌÀŒ ¸+4T¸NÑ<3bæ24ËdØ,1›/(ÉhÓœRŸCö9©ƒ¨7¬)ÂåÔGßÏ"îÈqÆQ—ךÞú5ú/üˆ‹i eíüöjEO{¦Ù†C®Â–¾ àá$¨¼±À³NK†D(!©§,„êÀ`mvÃèÅçÓvœï–BÎÆ=±‰^ÓKqlâÉÒK’÷ìáëkĘ"€åšZÙqâ[VwR«î¸ËëÝâ¿ï£;¡ ü<åó=rðQ¢µÓòujj”Õ¾/”|†É¸î(øp…Z¿ç#ö^·1»9Ó8Ní[•" è%ݱaן( 4Äôñ6ãÏQt2FÅ­èÐhO‚•’ r 4ÚþT&?È%ñeà à'»h?œ’4/QŠ'ñ戩‹v†Ê"#ŽÝ¥0ͧµëƒßU¨œ4B8ts™ž`MñfÛ«N]T¦)Ì«IûË`«œú•9èK})1ZcÁ7¹n³8.+—.ûÀRÍÄ9H'ÌëÔm]J‹¡8ŸŸaXWÒ¤b> ì sáU¥ôºoèh»pácCQâ  =z®¤HZö…‰o®Œ+Í`‰;T¯âç{|‡–šN×/š×»*ï5×ò°¤¸V>¨ºú&£Ýß7ú(C²ošauÕ+òžÕ^wé°âa'äZd? øî’Ëõ½y¢¸å,xü\æ¡ÇZȧ3Õø¥mö×F¿hô¸—²wYj£ô&ïp\°ß'i ø’L€Î›ÇZÃñ¢XW&/÷ÿQ4¥úœñÖ]Yüëeù“çÊ>¾Í-üÍ!,%„ßfkOÑç[ËâÈ =¹´ !f³±»sïûÕ‹}ÌNOGð³9\Ñʦ9`9ÑÆTˆÞ8¼™yP72FKæ·‰í¼5%Ì~Q2e+Šj+ÄwäÊšHèÊîóþ|¤!0¼¥ï—f ˆ¤Ó%ô ,8*´¤íoŽ],Ï¡üÙ›¢ûÑ2 ááÄÊ<\’1T¯•OÜÀ(mœ!û?K¬Ÿ&Åu-{¡Á޶WZ_ØšhÊV®QF)Ÿv•Í®ùûº³cøG²H‚úÙÝ3T=§«&Ó[3^òª«•­MBßa\ÇCçuÆd*àŠÍ >ÎìtòäÕR‘ø†hrµ3#‚±~]ÒÆFž£Y2F wù:znÙËÊÎn”®‰àN’®"¤‰={+ÞéLåÂãF9]çßÏ„´3üaӲŨ‡çÛlåìò¹=«:o!™Ë0_¯hJÈ+=ªqD¶ê o蕞q¢Í áL`Øx¦ËæÀ D=qÑ : ÀÜ}ob‘[1jîó4üŒË‹MX q†dÕx>[š=n§  ui®š%DYÈëTß<%O·´ƒUú³©µ¬¶*9>C]y}$b¬³kVÇex.Š=,#Ê`§ó-ÿ˜;–Éž ÎøÐˆT*k½îH.å§Š»ì¡C¨£©õrѶm‡wvX’DÁЙT[È©PÅöà9¦j­ðuž°@¹Íi¾‡¿5XÌÁÑ‹ÓDôõÃðn¢2&0zjCtŒÉ¬ò¸Ó½=à«Ñk¿çVô%þŽYŒNÿxð:@Ï’44¾ ¸7<‡Î£¢‘Q8ïOP…qõ0¾®m:R9i/˜ïؽ|¬ßòÏÂyþ¸XRBø8ëÊN^l@S–-€—PP´îü#­n*%?YAרÝ€7Z¬?EñØ+JSú4²0t»Xç©Þ 1‘“²_À{aEãøæRð!b¡?+T£©–z­/;n‡°«»?ê¬ÃÕBP$î,ƒŒ”ßâuàg>û»‰Nú¹/ªØÓY4('š¶â½›¥{Ow>:2,±c•A`KÏ#ßWýÇ_ˆ|œ £ðÔ²V|ë—©÷OS'¼J¾qQ]Á£jwŸ~Þ¾LJfDiä’‚×"ø<Ò¬V»(O0×þvÒ{ÚñÞÉáʳs U*÷ÓMÅV^R»‘¹fìþ¼¦¹[ÊZé¯Ñ¥osàKÖüÀEOwµB‚!J“uzŽ¢Œ";g‡Åãg|}Ï £G>î³yùºUe—G‘Ó=!6è•vi/ÂÕ›µLœgú³iWWék×÷–&.9À ËŒó8ùñt¤—À8''ü€º|Ÿ ë-£Éæ¯ÒΔ ‘Í÷€S<¢üÓÛòy…-µÒó^6ðoå’è~˜M8^…½–ŸXb„ƒïq? %›§·ekæòkøøÅò¹]…èø¸®ùE&ÐíýxðìöŠ Ì{"jb>ÅO`Z=ÉBBxêB슋?NU¯>ÙøY¸RÛ¤”ŽVÖ òH9^ÁœºœæÙ„¶"è™Ì‹@”öЯFò0 :ÈÛrw¢ÍŽÐdñ\ó[!Þé{¥3L’ù/#M§—{Ú~äUòx‡`#±™‹xþ”’Å … a–(ž¡¨s¿­¦AÚ–-(«O¹ÂÉr5\€ÁŽ÷¥t?‹"zš™â ¯ß=°f¯‹1ÁõÖiÉ×Hî=?ÔµUæosÆûlÑcÇêùÓ{+ßÇn ð6;íuõjRV ʳŽH£ç³k¥á0éœfÝ#®ŸôD†ÔÆk8Zš¸‡—3Cß‘R\ЏJ®ÛãmšÂ®Þrn ä2µ4€i`A²–S)ÞPm^ÍYzdާr£hÚ%q™µÆí 4‹Q›L%»Èz@ÉMMáL¤åbL‚$rœYê4Þ0ák¬%U"»7¼NÇ”ÔÓqvÆŠž²Pv:ÕŽì2«–׫ÇÐWóf>Éí–öoŸÒZvHÒ-ª™¡Í2’;®@£§Ž×ÇdétVÞªê eµüØÍ*ÀújüÍbSÒÈ8˜œŠ™Þn-Œ(Ò)|É'~`ýÁ÷6¹zA~ÓCGe—–2mÉV† ©èÑ´pX¤ŽáÔ²;¾zÜuÄñPX7I¥Óz´Ô±NyŸc‚Áa yBâJjÆs:lýŒÉ Ëú* Ñã–Û«áWè‡TVŒOO}Û¡œìä«t OíÄ5„òcë98öª$Ûê°Óô€ÞH­Ó<¥³ùɉMM˜^=€JàÖ„÷l­f#@C•kj»Úï FÕO§›ØÑàÄÃdÊÓ7Ø©¥¸Ò¤´%K v«ª¹¹–„AêQ÷•µ>ýcx¼yE^~A›ÍfÜ…‹ùNØcßëöè¾tñ†eïé¿j‹¿¢œåO¼`ÊjÀ±-(4è=9+{ò‡•‘5»þ ÆÅ–4Xˆ¶Ù¢1×~6µpú饉)×-sÔñNJ/–«›Þš( ·Ýç3ÛÑ5Ó)©ô!Ô6 Ó.ð%Ùxµ6m¶Æ‡©œŒz£¬J—Ž–6~G›ƒ~²v>þó97ukoÎØà [Õ ·[FL#‚ÇÕv:Û‡…M²æmpu% ¹=Š[á]òÒ.ÂaW ö)p¾ƒÑ3\}í|WìŸÌUÞ.¼ã¢ËQØKmj8§.Åœ»ulp+ÐOÓ…îJ¡;bœá‹’&½«ÙÀ‡KÓW§CΛhë’µf_^$öj:Îfyw6n$y‡àC9™mðr‡O(„\âÒ“ŒõñL%h 5J8s>'5‡Èßüzù‹þ ùMÍ:2(•†ŒêJŸXã‘[óïeâÛRnž2_I\ñˆenéû/ÁôæöâçUϨúbÄäXÐàêÙib;ßOˆ‹ù‘ ˜3oqÈ{ÐQ+QWùÅ2")$Ë&“Éú¼ÌŽÙ=Õ=•%ÒY‘mh΂i(c-áxyƒCÖ÷²`p#A…GA­öØ”ÐðDF«ÖÓFš ¬D=Ò“"OШd=Å<˜éÁ >¿~•Å#ñ¶ ?¿OÏû®Ÿuœÿmô»âþLâ„t æi[ÊÞBAnÒô;ŠÔd;·•¯n\Š®Ê**\¼.4ˆÅ4Y|‚Øhwø¢»Ò~ê×¶BÊ"ÃÁÊjþ@ÓÇHüæK¡ /7H—§Æù}êhçcwÅRõ!‡ñËe%ºªé»¾õã7¼Æâ@\p‘µxgÌi“ëÆ·¶M%ûι”Eþ'Y…,¸Õ²Ð´Û».xMég o ˜¹” Åû —ÞÝ;èé+Ó*âêè˜~òÏ^×FŽr=¶ÚÛ u)i/¢¼ÊM©¯¢0Âáþ:0TScúïßà.×6x÷1¶ÎÔÉnÔŒx»ˆ.DX9H£åÉ3ß¹«…çŒá®'?á. £ŽYP5¯ ØW#Ð3€+kyÜeîÐEÃu„•=9ÛIn\ÕŒ¬,NÑBÙÅal‘¾:ÛŠ^§a³M÷ˆÞM:q!¥í®)´U ¡¿¬Ìás€;j|ýê?”¥Mõâ°cV_ÕÆeŒ’õô”åÏEm°=ª}ˆ ]‡|XÀÅÈñ({çå„òººÂ0½rí•b? ?vAm_“›æi.Z2yÍîmsS¨!2½Ãà¨@/×4VA¤žDƒa£Ãðw±lïœ등Á€JèlËŠöOMrM,nŒîWO£Ýebq+ý^èƒÑCÍðÑÈGK­/ùk¸·ÜË\ Çß#v?¾¼y ·o{¡T„óÒ…”%}hzû2刼g§0йƒCAéÀ ÀâÕ[ôé}dÒøiÌr¹½Ñ¼¦˜B | A»i­!4§µ®ì‚!´Di1ŸiÇâ=ócWC§–1e§~7³Š»¤'³êî³]GòýKq,w ‚’N¶!Yœæ¨Ùã¤aZ^J L»64-fsy™DCgÇÃ…A!ÁP~(aÏÁn5¦Ò>,j ¡.ï Xañl£Í•7Ï!¼ßSŽRÈìKªqŽs¤#õ¶óS¶c¥;¸:/P¡›‰fa­ÏýV†²Éÿ6©=ñ®ñ0æ©»ÏJN_‘Ù,Byëö>ÍúÏ{3:«%>ŒZ2ÙÏÛÊ’'Ž»ÅX4Ìá\ ãÝåÜPhWnd1î ±'Þ%sæØwL7E­YR(§y#€ F…AºŒÓMÂð ̘ž˜§E_bÜß{$X‘öö&$G—©QÆ–UØÁ]nß+x¿3JY‡hÇììN´åžÐÍê ߀Æ{O 탫üÜ•quŽI Ï›zþý­ØxN-eMúÙÕrçêÅ'ÇC•°Ì<ב}ü*}]IöžŒ*¬ëŽñO±ïf9Öpª¾Á]ô±Û¾|7z'…NKR|û ¼-<:à Ô?;ÛûmÉÏòþ(+-†Çšq»/ëž“E­À@\ Ø ÷ôÌobzÍãfßÝr¥°O~¸B>uGõž5ÇÛ,²ý࿊l›yÐ&?še 2*]mæ)Á–•;~™ÔÐnBô´mqÐeŸ4ƒjªkw YŸsgîXç33]ô‘Q2â´¥õ‡©oH‘mOñ>J‚Ó³ܯ7è7ÔPýˆð†¹´‰ù9¢’´–¥¾p´×·olæú¥ßÃѲÞ5GñIq±C”ïùk9¤XÄûü I¼ ÆÚ›ñ¥…Î%ê·Ú«dNS’ø3ûöÈQô·±D>d*ï3äÈr› €Aõ¬;k^ Y?ciÄ¡½÷È+j$YÂB߬iJ¾=Sò8“#Œ^*qu!ð™³s£Ó’Á7÷b¥¦P^Ú¡eqcéõ:ØUiµrß–fö÷î€ylqvÎP&|Ã]X™¹š†nŒ|†Ÿ¾ö¤²k(³ ›ðE¸  ¢Û½mö?žÄ¿ZMc°™Æ{GŽœëþ)ð¸sû&á:rÐ)Uàg.TpîIdŸö²¤óÉ Ú8RÀ‚ ]̲™PnÄ~¤@RÇi [wÐ &Tx%[Þ¤ºÍPæï 0.mK‡ ~ŽŸŽ¿›ÑZuúýdAÁoóiŠöŸH§€+X›T¶ç&÷ísU5k[^”»¸Ë'ò/ÖFï‡$”{Ä‘ElÃ)PiSЖµ³·.ίãó}æûɇI¸ä‹ûö^š²crtÆÑÙ¡‰Ã™ ¢²‹*•ÓoÈFÈIBžsƒ’ àÛ9O/¼áãêû ãȸå@½â¸b)3{nv°Å¯ƒ%RJë’·¡¸±á)í¶8Vî£mí¤(gŸŒãÐøü ùÍîv»ABDĽRÝ6·‚µ˜ŸJ7Ö4^2¥èm­0GWÂQØ+ähöV/X–£“:)¾D™ofÿ½¾6 Óâ°™&]G¯În/,œŽŸ›˜!:ÿ˜M˜7Ö#J^Nתð9âé¦"ggÚøB.G ¹â+¹í<ÒÆttO‘ÑÈü6Ž ¬rج¤÷óâˆUQ]XÛZ²\‚¿¹£ú¼µÞáEþ[Íd5XtÛŸ_¹ñØ`ÏQ-wÇVßA5›àê*#Y69Às·å#+þ0¾ ª(œÀ@¨6».vTV{‰.…)b’¼ b“kŸ¼¯®ž±Dmì,±ùÒՖۥɜµUÇùew±óŒô­”"•ˆ˜%ãXÞƪxÊ« \ÆØ@v°Ú Þ"óÖ9åwG’^üôÈ¢H=™dV0üö`åjï<=D'ݤ|ü‚/&†Žä4Õïòô‹Ã‡UðPõÃèXæ…¿S¥ÿˆiY0ª¹q'w·¤‘06:¼ÑJ¤oGÄ(Sœ»÷­å/SV‹j󮣞 Õ•|#UÖ1Osv,Ý+5oL:|Ôèa¾‡q±0S]íñÌ׸ÍýÄàß é~Éãëòx.¼ÛêÛùB,MþÐ.‘äqzŒ†$réƒL?[cÝ=R8…ŽìÐp'JoT/>tBÄIÕ§ª=|ç;ÞzIÊ §Ïâð#{¦ïojî<Ã:nÆ&ê‚ÄÁ$4Ž™hšhþ}¹¾â×/**Ë£ÝCT…ä†A+º.Ȇº [À”"Ô|q˜Ã~*¤B€ù>K^Û èãŠKš3ymù O]ãQe·Êë•|Ëéñ-GþU<ÒýÙÀ¡M>娥ÛÍwÑHùG ?-~ü݇¢´»¾a%}Ž4Yˆè|û–§øûÏj\èö¯Ä>¡—õ?À„Nf­üƒ¾«¼îØñZD“s›©¯] 8j«~4yä7vã³+Àñàz†Øòlä_Ý׉èñK‰FÎ4ðfݦoLØìjÂaåLÃÌ`Zªì. I«‘ÙŽænÉØy ^WÓ:Ž”çElˆWC®/Ö»2ãXÍ઩Áýáh5®!Áx²ø£+®néVg âq¹ü6½(›ŠlZ Ÿ&êdL—5‹ è,‘w«ýƒ›3»ðj,Ô¶99cÝñR9=¤U’Ö~F: Z¤‰Èá1JMj;wÕïù8ׯœ4Ë<*N!Qж$°v nkËöîÍØqÚÅÄr)›%p…ËÕùjúÍ‘®e&þø>!4çÊìmÎDû!A „⯠V®*΂å!ÜÅ!ýã’ÄïçÎO…|€‹3óKKOºž—‘L¸~ƒz‚ÏoHT??m¤È¯³*”7âûW«qñ:  Á/»´0÷½÷]¯@£\‰‡Îz7±ç 1dÓ£“’á~¡r<º_  ;ž}ð#C Q&¯l6s¯EPÇ;$;·vðd/ŸÆ«žµ‰¾ä[;ªª…;¿QòIÀBä…i!g®‘,N¬~cd )©ÂSQÿ®.‚á’%:þæ!Ü'Ä»ÊkÓf4!*Û?XžÒ9y^LÏÝ<#5Ý.…$`‘²•²3Á1 é Cxë8ú©,kPÍñÆ5ë­ÏÆ“¾çTõ®óòXôÊë„»eÁ§5 Éìt&ÐôIì4ª—9ׯ2 {ÄÕD)¾¨yÎÒ´ó  §^ÂGípyPQoóY¦R?=ÛsúdœE,àHÿl1¾ÑúM~:Mëb½-аYy©:c#*£>öÍÅÛˆËØb¡•ÜäÞשY]ïSt|}Þo0Q»¶‡E˜^à¶@L¬[¦±˜¸§Ç¡$Hï;ÍsÕv%AhX>ÄFX½Èãe/>§ 4*XîŽ}yJFÖøZä-Á°£Õ‚`ó2ðM&{hï`Ÿ›Äà—\1ß[Ó >í_‰Z®µ$°ŒGáÒ¥W`Âî 2ˆñ0ÈŠK²/°¡³Ð ï ¾ôT‹ÙÛ #í¿¦ñܲ”™ïm{Â|P²Ÿ~u R–è@¯ ‡C¯ÿì3 æúõ¥;£ÌÉçV°[lËïËÈ ®ýõ3d®KÙB2] ,YD¶G<ꄊװ!ÞK"ƒó›ÇWÁ>Ý: ¨ 9}½ŽõÖÜÜÚ!_Ì‘G&EÏ}¡öÖEr‚:HÿAö«@×»Çô½±#ǸœÒæì³{WVÿ„²ƒ ÀUÏTœjs©.à ‹e¶Áׯö,ÒÍ%¢›žÜô±ý´9ø“À†t¤EN2¢6-÷ÌœÓÛà9êœjÍ·¦Õ'âðK*#ëÝÈÛ8œc;ש6Nsîæ¶¢ÊÑB»ãÂà ñRF=oµ÷¿J0 ‹¾¾¤˜µœô͈Mrï6~¬0þ¹#Z–¼Óз8 –u=Æð”“ƒç¡ÆY #™ù˜Ê´2‡ Wè§š¾ d¦èŒHV涪:ŽÓ{Ÿ»ñÖÓe‹8”‹YÒÒ#éñSèÏ'Q£›Â$$ ëfz_ t!îÎ5 =wDÀ㜧”ò­ƒqˆZ˜¤’,;­˜-|òµpäÚáè‰>vˆ»µËú™Ôo­µ¸>¨yŒ¿eÁ5"r¨(QÔ.m¢Ï§Êô±wô("‰´#z öí1­GºÓˆgkðöSV"Ë€8lÊÞâi}´¥g:ÃÁ~^Q)ACÎû­Š[‡¯pºíäy/‚7¹k$¦|4]fMô¼Õ©ìâ¦i2¹µ¬s :ÂÒ¬¡+m ø 3ÀxoÀŒÚî6êd ©“?…Ù›8uì©’,>­„]©£e£ìˆÜI+yÃÑ›çÇ`ÿ¦ÆhprAChˆü¬·òHÓ¢4YØY‚•d *ŽsQ9ºK+ýÈñCë•°÷vxß8š rm<¿ë!S´H×·±|§à„w9ðf¦ Õ´rÎï>b®Ù¹?~yý‹Æ®µNB¯àkf M….¡ÀA`• dP7Á%…†œ‘7A”ÚDT—æ6-]AÄCk&ó¼Žâÿmr66~'\(º–'+ë†Tq¹€9ØÃ*òVÇÿ£|ùÇ~ÉŒ« BÔÝ9e#ŽF¥,ìgƒWÉäg%%Ø›žWŽñK.K;¨… Å×´So6(-Ñ1áSjÆn”´6§ëɉúû^ºgÔ«,z áéÒh¬ïöå [š(׃©=„ÏY8ÜYì”—(©|BҦЂC˜’Æ~|ƒØhŠpº˜S­˜É6G„sÇöN‘†p^žD¬›ëíq‡3:þBÚ‰#úy«í+$·Yäãi?dP<{hqZø¬ƒ›zjxºÞbˆK׉»y«T_ä[wÜ3CàÄ‘Î}ºF±»¿ DT“`ykÃd­rÂØžâ½¹­ÿÙuŸ±^z ÂÇjÚáæŽ‚ö‰÷Á+÷\.ST_£‚B+ºà–ÿèíô>Û×{9ösNÅ—¯)ë-·3ÍL¹êfÈuƒw]ªø½á.`„¥að‰eü¤$pëyεœÝoYË"Œæ5ÕGÚÛ£ÊHÊî =ç%‚€ž& Ý)ˆ'ÞÉ'¦ãïÒ.¥ô|¢É×ËnÈ‚—…›Õd¾u~}O]çâfÝØömáŒù\ÀYöi[!gIw+v ø‰ºí@˜ÛÚ@Qxs:)ÿ] üÁ½¦~gÏwحƹnäýgzÿý"Ž¿ÜÃ5Ì^ð¯U»sæ‰Z Óo®Ðó“ɉ£º£DÛ ½RÝ´^ze’ÏE½d¬S+‚^à`ØRÏÀ©Äo°$ºï#‰€J¶Z[À i¦ú’tyíü)) skBñCŽÁ•6‘^DsSÌýå{;B ¥+Ûw+.ÃùwC1ʬ×áàxÔRšK:z_ТÑtË{ì‚'À¯ 5²¹˜}!÷Úó|hl\t5‡“ ‰‚å®gëIÚ²¥_yÄ>f[õYE1Ö"ÊôO†ÿŸz…ñìÁ‘¢_X oÆG&›Iq×"ùClÏ’gâA¤'Oüêw,œ Ÿ»®Á¿»9Ó°’’ƒtüžwU¦lÓ;S‚lŒ,û`Ef Ms z™s와(„'ÎÆò:²B”Ó{°VŠÕå ðûíêIÌÆ-1ç!Dl7ß½-°Í`­0í¶ø2ä™\B•/¿EwWüÅ[ZA»ÿÒZóÀLH{wæføq4åqrÌ骇Iìälÿ ­JÁ‘!Ьã6Ÿ ­¨ƒÕ—‡â¡†75¼pü²É´r‡Y8¾1 3XäêêÛyP#q¬`iRÏi|¹¦Xê‚-û1‡þ—_®7øÌ`¸¥Eö"ò0R¥#ûBß ka1hß "ç>vi}‹oŸí…™›a»ž¿wUz0þÛ š9Ô­ …:0Œ¢õ[PžžèôN°®ÝR8¯5=¤klçÀCê/:/­ß10ðî7~šA¿/¾×éó—c…!a£×6³7Ÿ.t*–}f£Ï4Á¾SQÇöÝ8–  {8U‚c–ôÖº¢A6{`ʬÞSôÀÝʬk#ç¯à–nÀ6JSRñèG¹ jèSãkÄvÇ< 6í1È í b!-³S.ìÉÊç;oP–úÈÍ¢KÏ`2²#h÷áUãÿùQ‹á¾ÏÝ+0µ‚ hJ˜jBó±Ã›Ã Ô$Á/™¬"I}\¹™ÅFOdDcnN/“±ÅÈ9Y¦x\½£câŠÙ> _”í©`ѧ<^Ê’÷¦M{²‘.œnÇ 0[§ê•IPsæq%^_ç…pƒ×žnŠ6óÜnÕÂÜ2zܳÓ×»±t,ÌROœõ®¿£ÁŽÄP=?ÉúK‡×hå~°žŽ=».Ýì'ji!-4I¼fŠíÈŸ÷V582¥ê?¢¿¶: ÉYÜ«³+.¶ ƒ€fü‡"–Ýe³C•Uµ²RõóÞ¢yB³YžbM©¢•´ê¾{W*Hii¢vÖÈV±û[œ@ F‰]C òé°Àˆ£ ܲ„)™~˜Šv¤÷¬hÚJM?̬¼ÑZµ65fuÛŸ‚E­#‚Ÿæ"¹È•í á²o ýñ´Z¦Z(5Oöû"wƒMaðzŒ£vC…ët ûÀ ÿIe›õ3OŒ˜éGýäy3Ü{¶b®ó»y†Ä. æ×úQë5Œñë#é¼H½hÒE,Tþ"‰XÃv÷ÿ–þ[öœCéõh:à9YOxm³7”Ò¡eeÁZQ%ÂÒ àî­[dR}uÍŠt#41i[¡á ΕN'iHÛîI¬F2Jý* ªƒ¸s‰®å®ÊQun‰»nèÆžÌ´Pe‘™Î§M÷a·ýSºxR`y5¬;Å*-£fKìá_“ªœv£€Ipܪv,ä(þßcÁ+ÿHDÛJXûrv©öl¡W¡!nŠŽB}_ ‚L(ÃÊsP‡~>l9?yMR™…nÜ‚W_g8N¦ô}×@ëzšÔ–h7D=TY{3"„|¶òÈŠCÞÜéà¡N€=Ý…ÑfäãƒWü<¬¶’V¡B —áJ…u¬fŒùÊ’¡±¿¤ílwv1'°rö¶øe´7»RõççSra§2ôédŽÃîÅÅ×(q^eHǤŒsaQí'FLR[Œ‰ Ý$G7¼‰JÉÍ-aU]›Ã©Wt¨Ü2´gÊ´¢”¹Üh•j‡ßû/GZÍ–U/dÞß}¸~ú‘Èù`βû”9c±“ý˜é|Þ'‘S²‹Ljõ2$p}™Yk==†>°´jfùèF]@²Ñ%Y‰ŸÅÆ)òí&B§Ï¹“á2*Rðµûy{^”<%(æM1#ÀÝ_Ç!ªAG§Œ$ä\µÒô†Ô–ˆéûy~k¹ˆQülUÉñk\Ég¦ÁÚÝäúžÑoD1ÃV ²@„(Ëõ‰«”»÷hj‡Øÿ=D MÁñ\¿(…êaõÔÍì¼ÏýLº/´x~ߨ¡íP-áÿL £þÎ0÷…ašD1¥õkÿÌEõ¸3´å]¨¿‡Õ¨À‰d…D¯ã}Tc•³€Ãó®uä…>â¶&Å›×€MX>°– ŸX.Ì®š³¢ËHìíùÆíÎ[û)Íô¾—9•&eÅ $ iCB"r&{Âk…Ö ý§;pû“'ÒÑ(1û 0¶ž†ã¨nÏ!‚„ã/_à¨u‡8³åGKŸI„K1|~[ÖƃÜ3¡«yAöThÞEEYùŸ›ð˜ðd^;ã%ÞúÔóâ‹úÔă5aBžCÇøå¦ÜLmr.HiÊ­7z¡¡rSI@Äg;Ücä=õe«èéd}h¶¤ˆ5‚ÀŸ‘Ϩ‰´$C2a×ÛNßXŒ#w}ºP8:£©LO`vIú¢BßÚ}M(ÜŠ1‹2-ßÅtƒ£ >x³¦ã3Pg©ÒöœÒݹ¦´oÅa(Ëgð/wW¤¼\Et+u h5lÌì.&–QÓåV5±s‹s@v¢þÄößpâ”ì/QPj»®´9º˜Î N Çpñ"Uâç„<‰ÙýWZRñÔq~áhE0½®Ø¢16Ʋ¬ÄɤÖ¨äK7ï`˜è”Rñ2ª¨gù§ê¢Ý¤!Å8ä2{¨&"&Ç÷ˆF´Ðh_‡ § ½AUÞs'Š•M~×Ö>`óÖÎMñKã?¸±ø÷†¾gÄ€Ó°r½b~Ç:&>¨ ba¬”MŒ‘ˆZûáªÀ[èTH¥ÃÏYmÚÐý'³ñ›DÀÒ˜ØÖ·RË0„?À¶†ódÖÈõÏCNú§bÃÓ)í`ÞÒXÔE¦[¿—ü(ä†kƒÄ÷L;›`ÖŽ;Þ¸`‡K öŽ¡;'ÍÛÆ'aýA„w•éüιZ(죞ðVg. ò¶ŽäzûåU]½çH…<ÇÕ+ ·½ëŒ Ú t莛ìyHævOÔ­äG„‡Âü@ÄYMlã§ú$ýÇèè"sNÉy†Õ™0ý|v•Cí¥ËÛ!ç/Ù5u ãI(2,{žýi;toGíËoh—E½'o6”i2¸KíðŠ3dúâðØDíí2F†ÞEN¤¨ÒÂ@M°}DŽp¨•ùg@Þ7°\èÙxHûîÆ÷*7k ¼£ËpÞÎ1£X“<9µèO'L Év½³qèOvy>R¥pÚ2­Á¸ñÛŒª÷‡¤¹÷áx/_½«ý·nàN² jèÔA3C4¦¬T« #Ë%Úx›Ž›€;KÞ+ªÚ‹“¶ƒë•€ë¶ArÂt님Ù*Ìm1¥€о¥‹ó‘_´ÂK° ©šÍ§U¶Dä* m2Z.’Uª¢R2PºõË•[S é¾ÃÛC'gç~¯HC_*L;`IêºSôèg˜ºn…H4w™Íw‹,d2TzVªjvrŒºîTŸv£»þÛø´^¯Âä¿\¹Hƒ endstream endobj 388 0 obj << /Length1 1631 /Length2 3636 /Length3 0 /Length 4656 /Filter /FlateDecode >> stream xÚt 8”oÔ>²5…›ìÛÌK¶kBd‰$Œ™×ÆÌ˜kQö­D‘%²µH…%kJ$DJY¢ìŠ¡Pú^Úÿÿu}ß5×53÷9÷9ç9ç¹Ï#±×ÒZ#»‚Fd]©ˆÐôÍmlJRD ”`6:üe‡I©4™¤ñCŸ bèÍC‡ˆædpȇ QRU©¦@J„ú/"™ª`| 8À\8D&4˜„>™@%àÝéP_i¬ €TWW“ßÐ^ •€Ås Ýô‚*b1DÀšŒ%€ô€RHk¹Óé 8ÜÏÏOãES$Sñdä?ݰi ÕÄë-‡1^àÏÖa€;öÃaMv£ûa¨ ˆ,H¢A!>$H ê€µ‰`AI?Èf?òÀÏáHEäït?£×HÁ,–ìEÁ$<àF ‚€…‘™"ÝŸ.`H¸u"†H#Cñ_ ˆq…GÇFè#êðg4,•@¡Óiâzðõ4И I8}²—H¢Ó`ëç3 PA,4÷øÏËõ$‘ýH'!7 ç¶Þ··%¼}@ƒŸÈûcÃt@@ìG¡Ðý±îðõ6pÉ\7C=¤)€ÔDp¡ØIÆèT0èäߎ ‰p,pñìOvÈ ºýÀÐýS þÀq$?$€XÿüþwRŽL"ü¡o\1ü ÚÚÒÒLîgË¿zzdà¤PPB)*JÊ€ªº ôoK áç)"MHnd@ýÇa¡)ý:°ïOHÿ\àß\‡ÉnA@úÌ*,ô…ü?‹}#äÿ§ñõ,ÿ«Ìÿ{"#"qÃ/ýƒðÿø1^bÀO¤[:´ædhHÿ¥Ú?×Ä|¼þë5¡c ]@“ðÄ߃$ÐŒþ Î’@Ǻohã‡Ùv}ψhI¦Ö_@‰@üÇ-Öz=h$7\ ´;ÿV4$aɸõ%SRQ0T*&†€”¤¤¢œDBÛˆý7D ÀId:@Ýnd*lýJÕÕ8fÝ´T•!Dÿ Õ÷p×ß éþQÿ„bÝCePÜ¡çã²þ‚PvâˆDð¿ÈÐ’ÀÉÒ©CˆôWqHàpÊ·*„ 5‘q1 óPÿ‚PqÚ_Š ÿ¡1ølÀ¦‹õ¡R¡'fc ÑÿÂïúƒXØë2V3Ü£$¼æK1ZÈOa¬CI™ëñ|,ƒÓnÔPÀ÷ÑP}­åT^\/ºáÅû¸å¡íSJùß+<íw"<O¥Åiì|]VÃææúNþTçví•)š™Ò{Óúz ‡ß9WiÕâÇÐí–Ù%ïýiìeÆ„±–deáç;îsRåÓŠ[Y:ÎÅqìÞ¿µ•%¼Q[¨wÝý¢ÎDœ6¯Û1sQØhb9­é©’ÊÈã¾yfÂpšÐä$Å”‘1y u¼QUÐÔ¥è–m4ܽš ʨ ‘v¥µY&\St³™¯˜ºæc!B­œ)=øìÖm¥wÏu6VÓjá²øã‰cŠ<}fzœ…÷G¨Jåœ –Ò5ZÇ £;ƒõð…íK×tö£éf›œ´¯ÿ$%ÒÑóʶSZ„ Ù¡â9cõ+MÈ»ð‰1›[Ì}vx~¥÷ÔJE7óqiù»VžhÅçç÷5´g¯¾•~î?Âæz,á6'zÞþsnnÜA¶xúº}™c÷r„o¬ÿn£Ž=Ó’¸äÌžPoª˜lª…ŸöYg­Ø"+>ä£-?ú5é%§¯\]%/tsìˆiHÏôSN|óéeÐ-õ©ó@e¤Óín‰Ê;\UýÉŒM¥ô†Ö¸ñͤø¥#ÁòÚ MG÷2ê·ö Þ­:4ÉØV=·i¯oùJæHñeû"¡¨g»ßlöŽºäèíàqmG–c©¾O!‹EWî»ø w¾ÇŽC¼d¼e™¡éÆ%ëX,檛*õ~6¥g­ë@ñ>´¸)Ò’™~ºî–î½åÌ+lt®õ[õq ‡%©ËU7º¹»°ƒ|›?ԙϿ¿÷qã(u±̇³GÐ,KýxˆOÐméÍ’ñÔŠ3fçCe¾šß†¯VaäBH~!6Ö0¦Ü®Yø•7¿J¾2,3X‹š0¹îÈ’OÍ}S¤éïý8eqåPïaóóœ®N’S0+×â/\޶H/?¦4d‡8Š6¡›’OÏ¥^xZ—Yí&9¨a¦rõnÓû™Z½T£ ý‡“9)V4¾o¡ ÷µe¿à2ÆàðžP­½Rõ™ æzßÏhÝ5|Z”G ye••dRçz~¼}ãNX‰Tûb@«]Ò!±ÚÛ¢~L¹@–®jãÀ>šÁX2л÷“ÄÀeýKóK:☠´:TE„X½[Ù.zy€µb2–©äÚƒóM¼šðÞ©VK¸’úQ8,¹4ê#)žù­ûÓâ¬Wr6µŸ'w¾eOàÅ鬇ÕÇûT&XíX"‹t“œ{=ZO¥NŽŽnН¨¸ªâ†Îà·-¹%p†h«ª~j•ÙªûMš‹BCŒDí}Óù¬ä“‘ ãÒduýý’Eé¶™°b#‰Ìš™´UxóÒ÷À1ª w!‡~·»hæÓ€ü72Î<‰\+uBmž›R´YŒ÷ ¥J%÷‹"ª½ÂLÅIÁk'çO} $gŠÄRn_Ȉs‹|5†ª‡·Š$Ø]›Ër€‰³gæþÝn¹¨†y‰ÅÕÞs ÿLÃvoZ¹îÙ0«'H5»³G½Ÿ£”¢,…øDM6KÎWQ3C“‡§yo¼ð¿5),K‚éTéÈ’-kOÊ¥·U“ÒY÷î´tÛ•‚ˆ Qn\ÈiÛ¾? zÓ-¦DãO¡/%¤Ë+¥ ÞÏÆKÆ[‡ÀUƒV $ômgͳV¸3Âyñ™é±Ã¿½æGz¹Î®^ÂÈ.¬<¯ÛzKýë4í‹«s~öi(x¹“hûéàò™;,¡ñ$o5/g4"dTË÷ËèÜ× R½”×ÇnÇ,1¸ëøsTK·f˜<1}4þÂz.>Z˜a0ù&²ÂHæqï@2ëRÔ]‘Á1öMéåΛS‹:¸ÎšòHOS®Ùï`ÇT¡B¯ÄŸù*CâY™"ÃvûjI“¯%5’|Ðï%~Ñ”TålÏ×mίÉ._rM¦+¾µÚWª|yßJFj©ÆWA`øCñ¢Ñ©Ûl5 q¹qÁ7Ådžˆ1X)y]T–+r¼Rù¯’£ÞÃ<#,[oÁ»³Ê½Éév\çªlœN ð…g¾žrãåȱhÌÆ£hßÌü/uDæ<…k‰îá«’õÌÀW»–¬uöñõмŸoÙ‘Q§ÿ}IãvãÝópvƒŽDÂtÇ7œõ2¼ ÊÖRŒlKìÞ)„Tbû>¬2«hW9«ñM±ŠmùEÙ¹ lÛùüꙇzö’µ:F•{Ê…-"ì=­AÛ[»q•qžíõ/m´(÷¯Äú±£²—?ëˆ_Lkík·9-ÖÍÁú]7ž©µ¹MÛzöЊNÓÛ".^¹¥;ƒœ 4[zû©F»;RÛç_ šµŽ¶'}‹òw¾<Áu÷|ô£4~dæù½jXó}Ÿ‹‡8Ÿüd¬%!Çzºgëg*5Š?ókò¦ó5Ø| Pï &hbû£Qß‹aS”1¤nʇ¬Žæsª¾»^(–ñŠ;¬¶Ës§MyuM2©¹ ž½™Ü,HX8ÞIM>>ª¬zMÈÃÐüo=Bæã’èÚŸJ'¥YÞ¾A%{ œ dM¿¯& ÒÆæc–riËñ§<¾„#~rÕeçµÄS—ë2öÚX±ŸQ/ Fï¹ ŠuÕ¶©g‘ãÖž~æ~ÙâjñL±ê`lˉ»JØëMµFæA"ßx|nh€¹W>zñ|JÆû$nNÙíÙÆ†=±xÌTº`jÍÇžºë0ÂæÆ&»g®9Šù{ÅÉÖke1&U5Êñȇ³í´èå¶vöúFá¼[G˜SÞÉq´_æS‹Î4z.*9‘s\3Ê8ÓåBÖõ4‘çÔ¾V€ÀÕ3+³v[òº˜pI„e¢jîË¡ô»¬ŠrÃâ t›/Ä\'‘¯‹»[²eUÙ'¥²»},u#ñiŸer袭-R l8P!ød/p4o0fª§õ•»Ç®£› oÑ‘F‡~Ñí€é7™‰,º¦l–•ãün ²³­-Ñ×vîÞ#õmo÷—.ôŠ¥ ›ÿÖ×9Lmz2Wß}â5T@ïJŸ:mÍvYýXøûPÞÒ¶e¹Ñûo@V©»Å4^¿;O*)ß_çµï2Í0‰ßÛö0áÕŒ¾Á1£1Qœz VÀkEnhÚlë6<˜;,¢g£tÆAB‹Ü hrhÿR¢ÔC‚ÉHÅE¾3KbÁ¢¡¶Lå_’®¡?²ENÀ½{†ø\¾f¿º¡§s’J=@¹²Æ¯ÍÁs¨…äËò‹ ¼Ø±ˆz9a-x™›ÕI3XéFVõçSÕý>NÍQg®ªé?ŠÄâ]JU ÏàVU_†g4¸–W„¸¸Zo+š4GÎö¤WØV±0o‹´ßäÈÞ*~t ågñaºž]©X»¨€Ç×-"¯ïÒ„›І_B]W`Tw‚d£ƒlE¸[Ë©3@Ç)¡—vå#XTaåKÄ…ÏŶ¸ÕrDÞbå[1*s§Ã3L¼ôø^úc G>ö£A}zóï= âuW‡n’ªVéCˆ°èÀ)?¹…«¤c‰GmŽìÚuPØvÏ]V.Ƙ'ñw¢ßìª>^.ÚÑÐáÞ÷æ±1OKè ˆ±Üyæ±ÐuÝÛWnÈKU»·òñ¢÷iãf; ²`Ló3’]ò¹Õ't(·`×8³¨úâÜ­áæ38ĶR)Õ¾Î}ý)-L}‹ÅæpÚ“—2c%GKc»‚5lPThËþ±ÌÉšŠõî‚ÐÚMíQ:Žƒ"ÕqŸ¹¯Îçå±×$î:åþáÌ•ë <Û׸@ÄÎÏ&wîæ×— te öœx^bëz-¹~çi¦ù’ε¾¸àÃ!Jõ¹Ù›ð¢é;m‹#yè,®oL&›—4 Á¿§Œ×DŸ×h 4,˜+EO:ËHKDñoÓ¶<¢_/+¶—½3/×P¨Å×òN_˜ETy{J5¯k÷ÿâ* endstream endobj 390 0 obj << /Length1 2157 /Length2 12876 /Length3 0 /Length 14174 /Filter /FlateDecode >> stream xÚµP\Û-Š»<@ãîîî,¸CM€Fw—@NîîwÜ% ÁÝCx}äžœ{ÿ¯z¯ºj÷SÆ”5çÚtTÚlRÖ`K <Ø ÂÆÅÎ) QÓÑprò°srr£ÑÑé€ À¿Åhtº@W7ØIø_2®@ T&kÚ©Êî.¿0—€0''€›“Sè?†`Wa€¬…È ÆP;ÝÐèdÀÎÞ® [;4Ì^ŒVL.!!Ö?ÝRŽ@W•…@Íbt„F´²phƒ­@@ˆ÷Q0ŠÚA ΞžžìŽnì`W[q&V€'bк]=€Ö€? ¨[8ÿªŒ crûK® ¶xZ¸PÈ èäõpw²º ÁÚJª€WÎ@§¿ŒUÿ2`üÝ;×?t{ÿArúÓÙÂÊ ìèláä r²Ø€€€Wòªì/+ÀÂÉúC 70ÔßÂÃä`a 5ø3s €¼”&ÀZàßå¹Y¹‚œ!nìn ‡?JäøƒÚe9'k°£#Ð â†öG~² W ´íÞì'°§“ïßÀädmóGÖîί@.î@%Ù¿M "´ß2[ ÀÇÉÉ)Èú€^VvÐëx;ÿTþ)†Vàïë vØ@‹úƒl€Ð?4_7  âêô÷ý·â¿ÀdXmANh¿Ù¡b Í_zø® /€'tö¸œüþy3Ž—5ØÉÁû·ùŸçË!#­ª«¬ËòWÅÿ褥Á^_6~7€—À/$ðÿo ÐßIpþöTr²„þÊÚ¤ÿäëñ÷ñ3þ½L€ÿæRCg`ü=âÆœ|œVÐ×ÿó ÿéòÿ7ß°üßFü’wwpøSÍø§þÿ£¶p9xÿmYwtüÕÀÐ%pú_S=à_+«´¹;þ¯V b])'[‡Úr“y­5@+»?ã/ñë?VÌäÔ»þ¸Sl\œœÿ£ƒî•Õè½áÇ?U@èÚüwD9'+°õûÅÍǰpuµðFㄎ7À— ºˆÖ@¯?'ÀÁî†@]Ðêü6`W´?”ŸÀ!õ‡è/Äàþ õ 8d#!‡Ü?H€À!ÿq8~#‡Òo úA9ÕÿA‚Pßê§ýñ8t~#hÖ¯#(§î?HšµÅo`ùA³¶úñB9¡”ãoë?N€Ãú_Z ð_Àaó/ÍÐö_Jg÷›𢷳ôêüm•þ¡™¾ù„¦êð/ÍÕñ7ä‚fö/*èÂþ j ý¾üK ÍÔù·êë ½ã€6ßR®¿¥mè?bh7¡{ þÝ!¨ÈÅ þ—?ÐßÒÿöçâ‚öÁõ_Z´Û?êätYÀ¿Ëá…vÂÍÁÂÍî_nИ¿I¡÷ÄÎø»DèBp@<Áÿr€r¸ÿNõϯ˜›Øõß6Ùã_šŽçoÈ %õú„Fõþþ×ÎY¹»B»ùóR„.äðŸ8 Ð h…¶¼¶ ³¯븫•"ódÛù"6K·£—ÎÄæ»ìÚéþ€…œÂT“òÕõF*e¤gí»ãµä å“ïak#rd[’fû£ßO³­év´¥)ÂÏ“…‡R ƒä¨/Ùt$wýž\ütƒßÀ·Âv+Ó庸 biäãßy(x5 –¯ŽG,ìhîÖð« ÿ,Ÿa‹{k\2G—g™5OLa#GaÆ;󞻾™ÅË™|¦TN`Aó?Šã)ò5Üä~w?ï³^©ÃíÖCBKbHL7>Mï+ý#U™hÑ·´8ö«Øb6';Ì’Soþ™´µé G7›Â"KÀE±å4Œ@@ýŽÞ!ô—5ŒÜuú˜¯ùŒG½åqb A£ÎJèä5k²Áa]'¢j}÷Í^Ý(Ë+©^kÑV,[—ãƒ*q¶ÝW¯Bi–ŸMú­ôk9LàúxhU]Jçæ°EÅR§ìcø½á`³AÀLH…uÖ“å£2I·4xgªþÕÅ4‘îûn–Ÿ›'«RµL¯ÌŽEÙ½3 ù¼,$`Ú|8ÊסrVÉrÌU?ÍàЮ F‘­Ù+Û_Ì MÞݬѤ›ì Ra¦iûsX¤•´VìSßPÎð ÊéŠbŠPÉ$ý4‹œ½¶sÓi$4F–DUD]øÆìíl-ŒÖô¬%Ñ|ú´íà% ƈû;¯ÒY]5»£9UZ ¸ôÕã3ËÞíX|™•/X»ÁÔS Q{mÌHÇr…a¢u†°Ï³û%Víçå–‚q®´æò=Û(%uY®7WÇáëw}&AIÂÒ×—ð;JÆ´ibs ùA“Q¡ÍùïÒ —Ç^Ü gwSm¤Ö÷Öiö4j3#˜©~ñÞÖµe‘‘·~áý „é!ÏÞæÕG¯·D4¹7c­b4³ßUõ`U…ºvŽYÿU'“Íξ%}¡'Ex¡þ`ÜÒjp6ß‹ì>`Ê–â 1g`†iaªÉ—ÒFúXÛØsžÝOGî[„žwÎÒ±™JãAˆXÑÂñ.•òX›û!Ñî¢ë¦Ä0gJrb“ÌÓÊSìU†ž3V'<Á¸ ‚dGu ì\8ö*Rnq"­EgíïnÍ¿h™ÎySÊhò¢x·G½ÛÆÚÁø4DïKâ¦i+6ERäáP¯‘wÚRV›?ÞÛƒ6 ÜSðvðDó2ñ(lÃA* èÆ Ù4¯€4;œû7¦½‘5ç\A(„öïÇäáW'z^#ãIø—£ »íï‘GV}ò8ÜÎGîˆÏÒbØÑéDŽnŸ‚›òµ vÍä8³<Šñ±q÷¾nÙøŒLÌf¦òd· p#¼I(¨l™­·`LóII}kãCEóTî±nèÞñÆp—Z·ÿµÜH΃gÕÝÛìKÉö@¤ï€}8ÂOË Àö£…K:ºÖÎxwFêsq—ˆ~‡ €ØyHþ±‡åÄ>¸8jÔÔ#pNtÃfjŸ›ÿÍèôÅ ©mô»Z¡·8Ѭz×(ˈ•ù $áÎA>$–‰‡èîò”:~x®"ê 9ËÓs.Žbùî°ßë´IÉc›[J#ðYxT3˜¸W²I#`†íÈ]r¶NöTטÌM»,Qä——Z¨ruå$f5ƒs|ìZ›·Äø¯xS™‘k¼‹{%ÌO´ï r!³æ¤˜a(ØûÆ«Dª™ötO6•™_ཆö´‘>"¯Äº­¯u•¾àü%"–í R»Ý”«6­$Èì7Q£¡:~Þhˆo¿*WJ1%xå×íÎnúmZwÏý’4ÓÓÒühZ¨O¼¾ðnÅZY9£vàŒóøêRÿ}ñÙ¹óM‚ÑÈåú&>âˆûJSº¥â sr†k4NÀ< %_TÊp~{±<’¸qϘ%ԑ΢î•h”ö±A’»áô§.¤ÉÕ#üÁûa߇âeØ×9m‘Š˜.Òöã_UÛæ;ê;±Æ4P¤}MÃÔÈ€ë~-˜èÓc¥K?zù’¦ó‘UÚ¼”ëŠÚ¨î’%ƒlîù,9yçI‡S >~‡° nóÆF!ü%ÀfÍu^¤Í—ô¢ò£8(åU àÅ;‰U(•ÙÌÍÿ8ÕWñB¦nDcw 63¸×ßÝçGŸ_Ö­m?.¬+a®0iî÷mØË<’«M£~ÙÆ"Qýë5sOÒYÎxŠè%;“Y¸Zuïï´?îÕ­æŸÏÎ[ôÄÒäh]ÎÔ1Ek4ó ÊV0¨òY7Ùà8”n©ôâ/ø³[%ÈcL‡ñO¶rÃwxVZÖi¶0m{—÷9¬fò8 À~øîÛF•ß^ÜÌi*±Yкդn"hÆ=–á$M°ï{^´šˆfeÜ(Mj—aë²¥³ÉÄØé yÉc¡¥¼„ІâOþ8IÔ:QË&]DæäæÙý¼áWkZð¦ZõA¸¢ ]•’qeŽZµã™"D,æ6[ÛÕþ'åýÉ^ØñÙ7vù+XÃ`Ë>;$Š' 0å³*«œjOü@ó¤Ð¤Ñ¼¾jÊk¤–j|Üü·öº**aÏÛ’?¤°ïýÐ÷©"/D»ùtô)€½Ð'ÛaöÃ}mßxå‰(·3 cò ‹V¿b%K < hû¿g$^ÜóëkñìÄ¥÷zMlðplj„ ¶DnMlN‡eRPE‘ EÖ<}¬â"Ÿ•šl˜õKvi™#GÈ$~æ£<씇mr»ˆ»ÃW1=û8|µñaœL!œjLúC –³i>,¾èÏôÏZ²¹~ù/éëáÖÃFÒÄœ‰Ï¬±tŠ­Ç ð ÙËî<{ì§V]®q¡}>´¸CÒ’p–-¹# $E ášì}îYàF«ˆQÞ“¦„˜´¾Á“_soè„È‹À·SVt‡ ÈF(m;N*NŽÛžÉ×ÌÍ>ÞB®e@ \ÉœRÈåB¬ Gæ¤êd;ºù +²éíqÕ]·ý$n(4·m½…ŸC,7\öë‹d’¢å/=.*yP—„ö¨zÜçÖV/Ç$ Ã?\W»s¹ƒnT›_lÊ.f˜»À6{D•ë RÍÁkg;ÃÞV!å´ðä1¯‚¾°OŒõFå–c6ÜqÍ/ó”Wõú$ý¬/}Øz*F³ù¶• iñƒë>2¬gôc¾Ø ÖO¤¥•“ƒmX'óÜi” wn= ~Gç°«1ÁfŸBÁnµ­lÍau-3H\¿ŒqìzÀϦ]¸L¶¼aÕ¬O°ë#£@ºä K(É¢’61­Kʲ»9¸#QDê—ÃééLô SyZ·¥­¶HÅøôu©\¨ ÅÈ_4ø…q[XÏd;},×_ÌYDCñ•2:®nSÈ0L§~Çž"­v‘Íèi]ûÊ®æsz¥+ÜR£Ö¼oøz2 '™¶XÒµcÀ(’ÜXÌÞ”;ÈÛ£SÒ˹×+íK \Ô¬iR$6«ñ(çóÆý6Ý™º½Äù×E)L­ÐØ}É@¿R•{^)Ž(œ‹ :6½­/Y)YÇ3'x¦ië/ ·•Ø„ ãr5jðI’AaI‰Jgß¿¹RV`½R«ã›Àq}® Š´†Ï±Øš òbõc½]%<ÎÏWt’ë¤hÎЧ¥¾ŸÅ2É ‡}r ¥ÇÄÛ\ôèd7÷ÆË­³|ý¨D¬íûa„[`Eì¾læC^úã›° ´â½ @$<{õÀpàÕ6$çø±Ö#vÌîr³á„QZZBýÌ÷;Ù_·~µRš_dÂÆ 1-æqÓ¡ß¹[o|ÅÀ¹âˆîSôï8ŸZ¿¶'‹#ª9¹Lt¿  r[•Þf¾k0ÏÈH’Pæ ÆãÈ™V­Ñû…™n`õf¤¾°0z ‘õºßߪDpVUƯ´nÐ6”®Ã ‚Rˆ=6á¢Iâã%ql;0º~Š%(d«_c&øæT‰—ÕŸ&×Fn)òà θøøSèÙ ž?k¯6j!U s`/ûe!jRºG:dgJ âö’œÈˆäUsAeÂ]…Á§Hüˆ¤£ëTíLí¹r¾ùlq¬‰w0u-Øü5;¯« ÚN˪JïÍòéOÅjš˜ ¿á [v#òÌÔ{¸Ãÿ O{C•Q½ç”õpÍ=þ6TR38†ßcڎχÇqs)ã‚ãóuiMCeI£vôe@÷þ”‚Í ‘ÂQyBorkQÕÛ±b¾Ç;º¼•V“m¹,ŧ‘Õ ¯·Ÿµ^6^<ä¨rP2´PØ3›¿Ÿo';KÂÞ×DF’YÌ(øï„ÿèÃv­ÏC ¸e¨0¥MA<«ávo*$}ò½XT×À÷Ë—þ©@ú¦pYàêóô,Å+‘ÒöNi­Ì—LUeàÊ}݃Úþ3í_»¢!é"ƒš\±î>œQ*täZ#°N¶" ¾Õ×o*ÉN¦¶–¢ÆLÑ£{%7ÚË nšç[—H«½Î–S!C”ôúlíUÌdœ§^ILãr'™nO[ j.¾#›vÔ͆q»…ãJ–ïl ßÏ»ynêÄÑW”Ž·<1Ɇ+V‘D@ÊŸÆùó[0úøn?Id’.Uç6N!>nõö!}µMþÒ•éSŠCãM^ʰ—Y=…D”f•Þ4w8r£Cé÷CLò˜Ýi¿àW‹–lò©{Ó&ì©/«µ²4d ’Eçê¾Ë>¾Ú”Elùh"ÛWݧŠH)†À±óa8¿ëºWåg躪¶Ð|asD>ÔVÓlT í¢Ó£‹FM{[s…cºí’™ ½ã@¤Å§oÿg•l9}Ñœ·Ä‡·-N…ëÍ©5¶[Ê{ÏRc/LÜDAøFÌ}oãZŸàÈò¿ÎM:ÀŒKÎQ­~ ¿\Ûíkj¤E(­9› y;BÖgÁÐì;òÔ€ â`?½£+}r~’äóº1CŸ C;oÛE¬å—½€ûe‚•né)³¹^žµŸ÷ß¶úLÃ?Bvá8#ëáàèE‡†çSügˆÏîì6šúßn?p†Z-ÏÔƧˆc‡Á|ºJóGu2}õÕ”N®Ô7¢ÙPâ±ý¼LŒâP‚Ïi{­ËRxH³`ù#:GÃÈøq&´m[J¿Í‚ÔTˆšŒ¡èTEù¦••´}V=A9Î̛ǷÑjâÎßÐB„Õ‰ú3ŽPþ›—G¢dÞ†/®ÜLeÅð6&FÆ‹ü^Ž ¹# ,2ó¦9>ò9Äô‘(Žüœ€îÄ|yàNlL³ÒÇK>&íj\ýeJõ˜F`hfRø0ªôLu·£w_ô€×/äçàùqîíœC§gê3Š šÎ·ûµÉ8¼ªñ~ãJØÙŸÓw‰/Ë#Mè,‹œŸl³Ö(PȘ:!ßj6u£§Õóº–~ ½2-ŽLß‹Ã$‡ó0©øéa>éˆ6¥Ÿk×Rú”&îJX×-*$ãÒ¾R—9Ú¤µÚ]º£ÃˆÆqMKÙW̪“§†Ä3)ójý§n0G,ånHN`˽ 8Å,> Ë×+3e…öH˜ÆðÔÅ5Yî‰îÙÿÉÔOó1;¯Vu2ʪ›ždJÑ)‘i u²tô~ØÏHÜO¼ŽÙãŽõQé®Mmò %(EoþŒ›…Ͱòð+«õF¹·M^©£ÇÜGê/r2óÜ`pã‰IrŒžb%^íñ¦üº?ƒ†ºy›¶»´ !-kÖé|ʬêÍÜöe³Øƒ'¶c§#™. ÎÜjªCðô(WN’þE5jý±Ðï/o‚]:vdßÙpŽ:º Idg˜eÄï::)š— —ZÄuœÉh#A[X«J²H<ÍO…ù{boã4þziõCl¿LöÇV‹H3GìÚÞÀn'Ì…ÇêÚâ× ——r´ê¦fËá!Ö÷?<êZnJ¨±ur`dŒ¿ºýJ;±Š=g‚¹üð®Ò¤éfŸ?ý° ¡, Ò«Š£¶îÙâGÑDV²è¼ÉŠÀ”cßíÒÎeÞ÷¦áÏ`ŸgiÊF§›D00AO‹©æ£ŠT«j·§©ÏS$ÞØiØmËž­|ÒJø@ÌÖVÝJª}±¿û6l¯]5ø¢xg¾P[ð2†ªÛý÷ ]Ö©Dêr:³÷eäïU¿„Róz¬µõ-—yõ·]S!¢íÌŸ<~5¼S‰~á8îñµ-%ùíuf¤1ÉÊ ‡©*ÓwŠ˜ÆòD2Gï¯\¤b—Q‘*Møï0?Ôø‚š ¾3N+ ‘ÜõÖ¤¬MÛ¿àN¹F@¾6ŒÜ&ß°uȯ…WãÅ"EÉ; «¢zGÃÛ|Þ•—Pûd–²ÎlÑ‹›KAÖº7ÐKÊ7ß¶=Û™ÒKÕ^]`]‚Éõöû—X ‡ROêI½ êwi¦(Õß9iqmÁa§5z—yŽì?'ò¥W{8¬$³}…»­©ƒ¤š‰=&ïL4üeϘé‘ßxŠ\å½ â_‹˜Áò …£k›Ç4ÕçžVµ5ÉK¼#» ×u¬i®‚-V³óºÝÎÑ ?eœòÍ!Û½±}ÌŸ2]( ~B(œKó;®kc<²~3¼CÚ}Ä‘÷e­-N1h.ÞeR™Á³Rú¤RÝIV”˜mûjÝüU]nÑW«¹«Ö$ŒjãLæKŽô ÜÇFœê”¶ïë… oD9=¶¥š¯(ôTÄÒ·5L,„pD'{tEÙªÔ€–¦~A.d=Ô¦“ã‹ôø¹~ûñn¶ çiM±O”=x¸û×®³;G#r’aXWUÆÙ–Ëð0 ý¾ÌŒ~%‡¦ `ÌÝìSççNÂix ÃjuÇ™×K˜?âSD‚z¬DLÅJÊo;8`Få‚i7Ã]hµçÉPÉtzψì.*Rrè»ü©ñØçUÅcýæš²DR“åSä NÅüȯJŸf¾Ón¡ÈN$^Qi¶ï º‰ªËò§Û ר§”úÇ ÆOtº'ùX  l´èZý¢ÊKÅ ¼€Ýw㮸wÒQkô·¹£E9# Jo+×âǾ¾~·Sá˜QÈ“yá$õaž~Ÿ¬¿Ä ¸ªeY”*YØŸœéàýºÙ¿’äô±©Âä[ÿvó“VgÞZ'’Á/Ÿö>/Å:!]ß)­—B‰·¤db<Õ>£ÈMŒü†;4Â_’²?³Zà·OF,æõëÂSñS“ö˂܉Ã?,F!KqI1§u¹‰?ò@ÇFS AæH;ö.Ñ¢š)ð¤Š}ˆÝž~.h•Þ@À³.¼7i…”Ý H 0ðfÛ^i—Z‘šg@šTáý‹cÞ³,È/P w‹~atmêð~OòØ.;µ„~öqÏÎ/ý‰Å¡z£®@âì¬àçÕrþ.mV'«³M£ñ‡GÛñð©e¹>TXm±HÄ-Z5šÒ„¹ÎZr’_!_óÞ»áμJ ¬­¦qdÈ~!Ab3ŒyiZÑF=îìq®¥`Ó+¹}ûJƒiOu §àkûÄ8(ðmu_ªo¼<ƒyU˜Ó:‡oOUQD;ärÜ­™øáJš&Sz†„ª]t .1Ÿ-.ÜSÄqnš^9¾—YžÂ4éf̉y§Qìa¼»i7#üf0ìXˆïÅN®ß™œqt ™FÂ¥²'ÿ˜À'1ÂÓá—?ž¬D?LÁ„ÒèXõD4ˆ*g,Áø«±ËM¬°#Åû¶Ç8ðk4lžßõÆgbÃH¬ÍZA®®WR¯ W[Yw£Ñ°ƒ˜¥‚2Õ /}*l¿âΞΟõK–pˇêkÀVÖä43n fQ¤B úpžZš‡j5ÎŒ!CýV9E•±Ï,/ ÈNw¥wO7:ñw:ÆV³6óxؾ t©‚ÒQ%F>:cüÊÃã==+†¡­ö@H>¥ýQ*Åž´w —Ì[~}t¾mTáùïé# ò lvO˱§æå xN˜Hª„¤ 9B^Äí3¢€„:flŸ¿N"Ú½zÕo´ƒžÊô\Ìþ£‘±Lo!«oNŽ7E=|.#Nã<È8|(.üåÝ"é6‰Ðühiƒ=Ué¦m~åP¬À/•»†Õû< ҙ샲h[NQÀħHJmlßͧO—á3¨¤tܸUé¬.Ãá³<ÚyÇAa7Z>¯˜½U?PIqÒäÇó6Øa©8xvèzÏfƒ{˜¿åe;ó Òç ” ¾ÙapW]õ—Õü¤é–š8 ÖÀ>Ûª.YbÇg&µgBéÚ»¯$•FÒÑ©¥¯H‰Ä&ÚãÞ„©ùÄ=Ò ½+qžÈ CÏÄS÷¸¥%éfk4°Ñ¶µnÊá#q®²6€ž`–'ÕÛ«ÉéÈ,Eé|ÞGiHHÚà .™9ƈøÀŒ£^ÉFuM ÃÍ?ªTw¥˜ l@Û¼”9¶·§K®MuÌM@6g6Ã\”OW6ûLùf§×;Ñkymw:3¶á$ˆ ÍÓ±2jÙ‡…§,ȲS ¾Œ²á¾WñÈ òíöcç‹x8ì§§X[‡dxÛ‡En-Z ÐáPÒ²³:¥s/¿á;ÆN#^dPJ±›xxøèÞäðì­8«W;Hd!Á¬©A'µó“«2T{Mv…P’Þºéš%¿¯Yz¼úqÛ¨H4Z¡Ã둆‡:èXÃù(ôdZ0â xÑvŠ’æŽïsŠzõdUTœP6Ù[·~Eá~+ÜN–N§-tù‹¡" âçùU/®ã©s ·5Ùê²ÍF@¯g³‹¾‹ÛS”Š>¹Ã v±x½vd‰þb›½î*Iž_„ÒËŽDÒ×B§·}Z¿v×!às ç9íÊ"Z‰1Û§ ~Õ “¼Üe‘¦ëû–1Ø÷lìËñ[ËLÌ»×=ÆÉì nõû?x±KŒ·‰¦d)PG¿¼á¢èˆ6g:Áfß¼Ô){ZöÙÓÇŽß÷Ì;/ÃCôJ컬déÙæB1 ¤çážN¿;ÐT]q$Ê¥\,é5Æš&ø“ßm—Ï´ªu¥ ”f’)…,ÔÑái—mo\Sµ|ïKÒ*Ö¥è¢}J¯óç³[ZJx±v¿’â<æÜðÈÖxä9Ógù“ršf$ƒE{ú{–jTh (¥uY¯'€Gõ`SïJø…'•ƒm aD¢+KWœh­GE·º—X÷ÚœÖÏÀä™eÔ‡N}0¸Ý¤>¯,¬—9Ì)iòWŸìÅ„ ໳9ù"‰L5,Al§…ƒ/m#ûÉÖX_mŽX\¼Iå°߃Úsõ3™„B*mG–xØLóaùO…iÔ±ɬí_ZÆ„…m§Ååfm~Âóp¥U”THÙJ–äçKPG¾8»AÛÊóX:úV z ¸æqÕ(cDûe¢d:ÝÀ{Ä„Vƒkc…„ô ûnû}ë)ü­²i™"Ÿ´:cA«·§æà•ûÙ{äaãRߪ Cêë±îöšOìÂMG¹×öš8kZyŸ°à?¼ðÌç3¯þ(΃s'èÝr™ÁOFm‰Dï9üöüq†¸Ü­:aʤ‘*²9Ri'Éa´Ùàá„ä«6üir(«+Sƒ°‡•Ù9ìZ“¨TÁXH…Æþ›—¹ì–÷6EÓà©#:¢•~q}­ÑµL›žÁ£¸,°¿kkkTÍükÃ/®tt?“ïV^9Ëù¡Î7 m ¾ÿ¨èNUatQÒßWX“vÅž·?k‹å®~] ½¶ÏAãË#½ŒFÙ¿{רZÇRGÑ!¢Lp9-ùÌ0ÔwÉÚÀ±$¤‚¤ªí™¬ôÞ©–¯6½@¶Õˆ·ÝÒBQiªù2IJµ+ªÓþé^„0®oZ´ž\ÎÐó‹Ùî`ºP ®Cƒ::d÷§²;Z±’ÔÁ¿&ºŸ¶â4„ínáqcãÒÏ«?~ì©>ßzÊ™fOgïÅ &ëÄv~!Ž3zr©q1Mª}a0·Q8 âÄ©h4 Ÿ œ›-ùIÚ”ÉúsÇá A±ì§QmœÍP‹ ßHaS”0V{À›|¤¸¼K.j–±8Ø x?Ÿ1{súà}Äþƒ^»’ fÛÌu©tyl?œ`ì‰ÊVœ!UQ°ªbÝ|)O¶×÷ÈùNr¢½f÷·÷ò˜³=|EïÖž:JÈXÆ»tÕCëñÞ¼MG^‰»­W#³a‘a{íûÉuÅ—ø1ºä€ÑÀübÿŠ Ysý‰LÖøÍWŸŠâøiKj-ü:F5¤…äÖ¥-B©RQü—?ßsBbLY¦Îé¥9Äᱦ™c 5³5;(Iû¨Ey§"<0ZÊ=¸ ¬¨‚‹//Pn3td'*°oúGì«ä ù·>Ž|)I^z3ABmGL¹tyXWíGþ¾ÕðÑKeŸî;lD¾ü‡|â´ôS1`ÉŒ¡É”Wõû®æö扩ñOáîÝ]5ÉŠýßFÖ6ä9ÉD×>ÕñZÄ‚¤JãnyéÁôv pBȉ#{ñ”è MzÊÀØŽgb)éHFuU`.½ë7‹{Q’ ™¹»c3mUÑ#‰ž]ñJTýÏŸi‡p§WŽÙ}ßcf÷\÷ô¿;޾6P-ÏvZj.Œ‹Bã˜r{kè­Ü]tw¡n¬Mšj-Ô¦³“KhéF–o]ØÚ«TÚtÜrøœ,\OòõCý/\ Z+_R äk ŸÐÔƒ~Òø…Ó‘öG„òrª¡~äò;ͱv‡I>+‘$šë¯ó"¼X[‡Ó¬ôÝ<…giì/‚`D¬2¬k>#ö‘ÌVWâádçŒ Î†ËZ¿åüj4=èòùJy'+ŠÖÆŠôs<Ã÷XâØ¬&G:®êt¯Üdן0¹w™Æš%㬟rŒjŽ\‹ÌA²/"ý¶^èÉDÅ ¸Öœª¬îS—»Œ_&T$tÖ¯Ö¯¿p#ºîŠ]Ï„1{{u·¯_XU–ÝiG&@4¥I£xøéx µÝQ®åDzf¿ì´Y1gøSóùséÌJ´‡R‘¡JÎù;?žVo õ0"éQ-åÚ1nÉ|BÉÜWƒ:ùuϸö²ÁoCê^!È/Q:{­µ„oÙ¬}¿5XJžE¬œ¶‰úœ-²íʹóiîBøÛåXÄ!÷€•ãëЃK}$o?£<‹#/›º3ÉFF%K$ BÕeÂF5“:…lsÙiSÛ}å~³ðö÷›_,ü^—›ùXO­YÌ}½Ff׆=Üë_ñkÑé"0j[=/@OûYj´,YY¡®hôë±&óEW(=¿¡t/e8³d`ê]~G KÄlæˆÍî[ø¹¡ýá·d„ª›¤•àÛµVœÖ 7„Xªþm»…¬©@i‚Á·.Ý/á_»må†sÆm¦Gf1(¶Ê»ß¶®Í…|i½áka–Súpùö»WmáÉvÐ>aXÔ¥EìÊ“Ê*µüaè$±H³igÛÝqÅêþ]9UgŸÝgqÁÅd÷«(Fñà¦ißs?¤øÑÑrËøùÁÚ’N­²ÌÇÅxŠŒ;§Ä¨.éx®Õ÷ˆ£oÈŠcÓ"È:+žêP¹Bbc£á ì«Z.¬ë:tðó#¶°PÌFõ"è™B%ËƽÜP™ðÜJ´H8=òÒS4h¿=”ͽ¼{¸…m _:˜½ÚXåä~Å÷ýвyt®e:ø.pî3æðñ«<’©âyóË_T&ÞdùÉ”r€ PZÛ-A¼Üí»0¾¼å»­<J&I;îªj~/×zÄ$~ÅWÜpT`2„È&•Ø"¡yÁ‹&;dÍow#mûÕYdµüF?ô!Ï0Nù)5x¼šÝϨäÞ¦&pÊàðì0.ñ`H·â°Ô¬@aŸ0K0XÆ‚o\LžÀà (Y_^–×|ÏâÞÐÒ‡]O¡Í&åTöíim“ï×…]¶¿ÍwˆqÌß›Iž¦kZ­ÿer ¶{!ÔÃ(ðzf0jO¾hÊ=Ýn!Öƒ xÅŽ8‡Ä>”‘ðZó oÓÉé¸-/!ÇspWªiżÑ¯þ1‚ÇRTQ ¡X6’ ·KV¾L÷œ$æ©w»vyq\äÑ.k„ºñ)WŸÄ SôË]Ië,~QÔ©Ìý’÷•ä—ý•/p»Àªxz[Ûj1(¿¼»”ôåØþºùŒ ÇÙl[°Ðm¼¿œ½ì7¾SãÙMÿ:0”†ž96ïpà‡›é;Yű‹@±ïÈÉ©ßüÕÓP¤v“LQB,‹zïëTäŸ/‘*4w-w&0ÕÕbbjè]ØŽIx6‚SÒ7ˆ´‡DúÙ'SŒ¬WT?Õl¦"cá]Å_œ¥)^Ò4òÎÅÝ ÞéýÞ[x¶ƒbRî„#í‘u#slñÖ‹I#Ð&§·§~#!ï<£žƒ©Ø´¾3Ý”Žj N©ÕD ¾EÍߊ°ST©Rí7 p”J®É Gik¬êS¾‰—[/mð­¸?ÿ°f«²º\ð^? \uËqäK'¥¼ï³õëBÜá¡fÂìYO…Ü—1Þïç 3t+XQhüûz‚ Ž*ð´vülÞÜh”oN»üLª[t•òÊ—êïˆy0gƒ ^ͦ{û¦'£—\y îÎì9W">©÷Ú…º$Ÿ‚Æ€‡çŒÃ8šëMK.¤±Çíng²Ö² 03 ˆÊ ®5—s¢Š«ÇT×Q}¯ûÞý,ÆQ¡µ¤~d쉀u>/ÁêìãÉ+5jýÓýo°p|R Çi·.z&Üéªý ö˜4·v¼954D±}E2•¨!åŸÃà:Ó+”Ú«ñ~p–,z­’°òËòë<%o|aJ×TlŠÔíÿVRPŹŸU‰!DéÌQú“úFBÑžõ1i]2\Ûý.µã€©ß‘eÿªqsIÙœ| x^Uï岇Û|¬¿âÿÍâ‡ÊØÕžÚ>0fˆ]ÏCqÌ6nû—œÎ¡z%‰‡3¢|%\ãf!iÞkéæpt›óér ‹’׋ÉÛðA;úwë|#¶ÔŸ÷Bôðf»¼±‚ÚW¾²L¤!m…´Î|ÄrAlÁùV¦u)6\¶/h‚8É^þV†b–…ѨB{ñÃ+³O¯Ãë2Winø:9'puâ(ÄÜ€Ls^Û¸oNm‚Ѻ]XGʾ;òÜxÑg«§vöx“b,–¾ÇJÚSÃÇH”•øœ‚Ìô]ˆÌè<‡•³‘Ö€ˆM±Ìü2påÙ¤)!…¸]°Ï©Êy&4‡À_r®©”fµ‘ä$›"UV£æyý$¢Ï­õ"¬r·‚þs_¬¦»FŠbvöMÖ)W¬ý1.i‰ðÀŽã–(É=ÑNp‚D"zºŒ…ÁϪÎëš KS•ç(Þ.—ÉXŒV…G'¹Ššh1âšó¨ôk©·ãÝjƒ‘ò #Y1Ç!«d…üE=o˜Þ*:“wÜ(ßH±ÇÂm§tc1 ‡ßêÁH xÚ>•Fµˆ~ôÈâÊ{Ô·jÂøªý© ɳß2ǵ‰ SYé?‰+oívŒŒÿ¼<™¼%‡'í»ug›&ƈZög}xMsìÞ/†$C\¤{|yœõ’Iƒ½dpØyÎ7SaС0˜à,7ö%ŒF¶ý¢X 3×X-ÎàÒ¸7P6ÍÀ gkHïØ.‰¦3N§A;hð%Þìi1ëŽÛU50)ÇçHŸUšv¼‹´4•ZPiÛ°_?»+Ë '?ËT=íêãåë\È6Ž3G¸#ºkn¸â`('ätŽø‚¹ˆ/8_l‰ÝãÒºMŒ~ ´Ü›f±ÁeF*K礆ý¶ñÂÓWKS®ò93Eùbl~¬Ìšœ…‡`ˉ»diÐ 1âGpðeϽÚBlîyœË;Ò?`žHÞw£s˜¯.FW¡¶Œ[Íz¶v”>ŸÞ3g´m‰=álwlE`Ó(꛾‘Wð‡ó—?²k¾¯ÔÁÙàíZ†›¬ê”—“͹r5ã«Ùe&»s}>ÆM¼ýÕn-/ßäïHÛîßA æ•Yá)Q€uAŽBGÆGfGÝ!ö[ùÆ08þÅÐ<”u¢Âèï?4ëG$ûÒn,Æî€ïœÏ%ŒaQ¢mõV<¸ŠWéÓˆåê—•;…o“û½þkøKÕQu3|EÇpTD,<#ý¸9%}1fÇ–HšÌèçœY0HU°È»Âf,gåÄ£ŒøžÄËèþ;qk@—€x<ÊÃË£v\>²‚}º+þ «³G¸±õ%\åÜòÛ¤cqÉuÒª¹]üg[Ƶa>©ä_x˜žq=ö¸îì½i.írØ$Y;œ™d§C"”™u(D±ÉZšÍ_áÞq“ââ«Ü] Û0j…ýêð¶U±­c#}¢bñÝZXÞÙ «>ßÔkô(m·Ñòî<¦ãLƒ(ëolnSÌTõyló™•«Íi¦“ú>F÷¾¡míìnJoøXüöl—³°ó:ÿ'þ»ÌÚâ¡Py:q#T?섞ävTíc· 2{˜¨–U¼«ýÚiâ^;1‰$ÿÕÒ• WÕvºQØÌ¶¶BŸO§ÅÙ˜µ´*à,Èx´ñ#!FÓK¶dDùw‹S ÷ÝÄ•Ñ Î¦ºá}ºËyÇD?^«v0ŽÝ¸~#˜qÉ”,8i‹¾˜ûšJ±°Œ¾;ïÈPŠLSF^˜3#ü³MÄ(H˜¯È:ôêÆX»!ós‘ÝÛÊÇ—kì\náž~0MuÏ’%¯ÅøÀ1‡ÊY‰¢È0k½ÑO³,U ®oüÚÆµE Ö <+l Ü.• ÂÔªWõîØñF¾ö Lqô se’ÃRxÏT´1}1*øt YŽþõÀn£`7áZ·ìò™(+ß³ÍçY†oO­CرÈ5OØ4G r¬®Ú¤D¡‘ù9>Qw^vÈž÷šJ´FQ¸.^“šdƒ¦BÐD^Ô%v8±S8ðŸ;ØW/²…p$Gιs¼íÛ@ŠáÆ «³Éb¤YAéÃ)Äz‚ØÒ]§Ôâl©y×ZNå»'†¥6<Þ‚"Ú‰°¥M*QW˜ó8ëÓXü²²ê­4(¢iÑ”Èyædl³ä&Ú^’DZÔúEáû*ѾP[—¹ 0â³5ÀÞÐÆEõ‰fâÌÍ7*&s±K*ؾ÷ãí¶âWtâ¼–0Q_òϤ¼p '`ëïMQ$g³ä‚x ŒœI«+ˆ²k[Ûy»Fsöö‚…þ°xÔs5xZXŠG¦\¬\*M‰jÖÙý"ßêI.óª-“qñwŠð ’ endstream endobj 275 0 obj << /Type /ObjStm /N 100 /First 897 /Length 3517 /Filter /FlateDecode >> stream xÚí[[s9~÷¯ÐãLmMë~Û¢¦*„ÍH`ÂP<˜¤I<˜8ØÎóë÷;’Ün'¶ƒIg·v‹*¢V«¥sùtnjÚÊK&˜òžYKdÒ\“Á0SÚãj˜ÖèÉ´Ãóà˜QWe×Àœ=,óÒ2󘫢bÁÓóÈ¢TL Ϥ -“2‚r'-iŒ¢‘À¤54aœõ=-“Þk,— ¼4‘‚F ´”N@Z¥¨öZ[fq5†¨ã‰ Ä‚X‰Õ¤¡®§%Ô JàÆ¡M¥i„46‹ŽFðØzÜIŒºH# ­ŠLGà¡•`FhPÆ‘T•R€ T™Ñ„#„4*iec¹š^ÓdÏL ¦*0əح´ ±§!œ% h?¬!yµ†²Š:†Y§Ip¨ï¡»ÆÞØ`i9ö7:ˆ©±SÛ¦udN’F0{ÚHæ é ð…PÚhæœ&Ä ö×`¹±Ì'梇Žy4`ØzòÀ“…( 0¬DÇ0ñ!RG³  ¤¶†dÇ‚­r,’kt “¶Å@[e#uÀDLîiìK P@;Ã"sÔ@MŠûÒŽlÌÒþ9Ø–ô> JB/ »—ŠѰ, 9©‡pì —€“Kh½5 ZêHûDú%¨‡Æøì×è0v°%‹¼0eMæ‹6Àüɸ#Ò‰hz÷îõøÎè|ÊîÝc|0Døã öë¯=¾?ÔSö†ñý;ŒÖ_¦ìmhÑá׋ú§uoƒ@}>Às-ïñõdt9>®'É™ÓГúdп?úÂÞ 8ؼê-ØôÇX —Èó ùì E’…½þƒ‘KüÏ/‡ÃF„å¤Wåò{åöÿ1¹ýu¹íFró­óóH½Iá”d¹Â2=ïñû£ñI=ÎÄÄ[âx Q¥U„K9å*r?eE>ätºÇ¼ƒËwÓDgopþԒ⌿|ñ07?M§ÿäüóçÏÕéùe5ŸòãÑÅ×aý~Ê&dÚк¡EaØø[áåuœã·á t®ØGß¡‚C(]M©M—l£ôê6ÊiqÍi)Ym¢\ˈb2¿”YóÕ—k(׬eÕ|•åªÊU—«)W»Æ(Œk•¢ ¨¨\p*VR§\_ d6§-l5`^c”¿G {ô“jÞ-XJWy#ç,•©¦–²´±®°Ž†¥4•pf)K× Kd”Šj†¥Ð’×h|$U¢Rf®¥µñF/ßKÙ‘š:V¨bæ<¯¬[®¦é†%ª0˜l‹¥PJŒ»`i¥¯PEÂD}%X¡t$>Þ%;T%‚+q³!T(Û—r“qÓä*³3ªrAÝ…ûÏØ™+E!Iìh+MÐ7k‡ A•µâ[æÜ”EèH2F),Å­rˆ‰×rˆñß™Cè`”b¿,9A–œ KN¶\]¹úr åZrŒ*9FzªÐS…ž*ôT¡§ =Uè©BOzºÐÓ…ž.ôt¡§ =]èéBOzºÐÓ…ž)ôL¡g =Sè™BÏzÆu– !´r¡U•µË­3t²)˜@¡†#ÜOÄåî';Ê”n£­Œ/+ü-wyÑO©«––JVÒ¯ˆi¢«Œ Sê<ã‹jËØQö%ξÅQP6^ž'dì(û½˜ C„‡;±ØK á휥b²tªR²ÅÒ…*8—~I¥|s¡”2ÂÝ©cZ#àf¡”ŠÆ.çé;â‰òßËOí‘—Ʋ+leDÐ*S]@ç¡Ýâ bWÔŒ]í§‰¡ÒZ¶êTÔ­BÝ©ž†®¾aipqFÞM š±ô¡²j÷L°• w”OfGDáZ<=2·º‹èn¥BDµMmNkê‚Û:fÃE9•h‰ßºªÀuÄOiÄÔÂoMEпT$n몮ÐÄ1êr~[] t¥Ü¬HìÖ•sŒ«K€Ž|aV$vkÒgê9 û/ê­Éý¾#v%÷'vkò~G¶9Kûùø½&åÇŽÔ+)?ñ[“î»2%*íËÛ…u™ÞtįdúÄo]–×Ýð31V¦˺/;b—|~y²&¹«ŽØ•äžøÝaboø•Äžø­Nê‹§DzñcÂÍ/‡nš³Ñ1Ìߵ߭S„šÉVðî7ÖÓAJ²`a ¥MÏÒë‹ÜW¶Þ#1ƒ5a6‚ú@3O†XF"-0)Œ*Ùxnó”Ì´ÝoÏÔèûÒ&í§ô–pÚmÚ¶l¹Í¼ÈÞtióHVÝC¹FiJîé™Ã³À‚Hš¤yôßɰÝJ¦Õ¹ŒÒôÙ3:y]¦œÛŒ Öêy^j¥ÀCµ0äñ6 ×û pÙ·Ôó•jï·—m€3¸C#Ö|f~nÜDXôÊV5O²¹ŸZ²:EqêÇ_@Syò±ÜjìƒUPß :R¥Í#Þ¦§R’)ª4îÙOwÉW}pô…œÆ^’ePòòeE$£/òGÏ5=oÓÎgZÑÐÞ»lÌ4"…ΓyR$}'dL22ô„`m…L'5iVé'Á³º´&¶A°jN%$ÞyÎ|vžaR«“À:Šù¼ G‚)÷Ë|’âÿÛˆI»ŒAj3z¹]@XˆkUO³SBÌÌ,­¢ûˆ%„’Aæ[¤š)e³š^{–ër›È·Ÿµ\&Úª?uMŠÕþ#èƒ&’©xiá‚ c¶*y!_±ô­·méén̾dg’çµ…ºž›z¡Ÿ¼JÐ×K {r¹ì7¢W{-®ûMêwá7:Ê”™½¼!ßä7­-ü‘ þ[é"]QÒ¾‘bî ´ÒÐþhÿ—ZÚ·ÐrÔƒ6•!ûGÈ^² 03Â#a¢}5k5NÌtÓTü9ê¯jƒ‰Ô'¡p¢Æ¡3­ ~ö&è"A+ÏhÓ)ÏY8æÙ¹?ŸeÒ½iÍhQhzë%ü–¶PlI–4Ð’`O-Ýg]é4fzºt’ÓJbA…u€åÑìH›,cÒ0:=:o±9R8O0¥ {³t!Iý c%Óvø@§«àLš†N•nn]˜ïñi£ÑÖÈGþ¡ò>¥«LGÖþÒè®GjóHÞ•´®™›ŸKr¬e—æÏ2B¹ŸÚ·­×7ô6äA=9.¦£q~;ò´ÿ‘^älï>>xöí'÷¥Àø°:a&O¸Ÿ>iù(ü¢’;JIŽH/q&Çôa N(=¾Ý¿Ø­§gSúp½Ç‰ =ûEÒÇÓþpp¼u~:¬ÈLë¯èóñ?*‹à qÖÓ[–Ÿø¿Ï·ùþ/þßåùŸògü?à‡ü%Íûü˜†£s~Âk~Ê|È?òs>æ>å—üô;ðÔnáÛÔ›Àxzôìùáq$Õr4¬&4$¬CǎЈkÐÈXì4<ö<úüÝïùûþý…Þèr xÎЇÑùà¼æ#>B{Á/èã¤ô rê‰?¿¨ÇƒÑIÂrRÿUŸÑéÙ¸®ùôóØþÅ?ó/ü+ÿ»av›À¼ýòÑîÓ€ùÉÃUF§£3á˜õ:˜‘f´W-œµlãœÕ^Ô(l¢Ñoû[O²F+ GË™FÊu¤‘³›häÅ&í?¸w¸›4ŠËRq¦buG[d6RHm¢ÐáÃGÈè^¬²9#f ‰x…×vq¥:ó87÷íÇM´ÛçÏÅçGˆ{À×û“)`˜|€Ó¿÷?ÔÓäÀ¥Ÿ]x ŽG?öNFÃaŒÐäàõÇ“þäŒ×Ÿ.ûC^9ö?RÐhÅáÚ;{7–Ré[…ŽØ`¹ÚÕ²“Q)ñδàDm(3ˆÃ‚ÞŸ¿tŸšú"!´ÏF©âõãg¯¶v<‡‡«RŠ4}ké‰ká#å>tÛࣔZ…» ŸŒ A’Á¸ C‚Ëó“z<9ë%h„ÒÌÎÎëÇG•VKIœ1RTŽ«m…n¿ÅíVWŸËâÙ¢r¥œ­ç‡;Û/I¹×+7A%:òIb;×nñ}IÔˆ•[ýî1)b0>Öô´ñõ6Š˜;ÏŽ’%¯¶c“ÍØê[™q× uY:EÍé…’iݤՒ‘¾;Û¦4û~!8ŸŽë>ø^O¯Ãz2Y:ëÒëÅðr²,ÇÞ˜G—äÐ.étÑ.6K[ûû{Ù.VÃäÒôkjEÿgkoo« aì2¶,[€Û(ϳ"‚Û¢ÞEöíû{¯½Jz¯(!\qúx ·V{mÑv‡œüöè_Ë} è|¸’üÖ–yßPÀ}“É-W$‘Ö(4•ï÷'uúÖãꛌ…mJ?VO¿ÁÙŒ'S‰Yä½~¹‘òéÙ$ýz>Í=½<‡'5“›‹sõ]ÂUyüUyhVK9—Çu!ÏÕC÷UyâZ|覧ñНh>” endstream endobj 416 0 obj << /Producer (pdfTeX-1.40.14) /Creator (TeX) /CreationDate (D:20131125201745+01'00') /ModDate (D:20131125201745+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2014/dev) kpathsea version 6.2.0dev) >> endobj 392 0 obj << /Type /ObjStm /N 61 /First 522 /Length 2122 /Filter /FlateDecode >> stream xÚ­YkSÛHýî_ÑMmeé÷£jjª!L Ù¤vS.a P±\²Ì†¿·’[RÛ Y¾ÐjÝÇ9÷ôU«-8E1‚¡DA Ä GD$˜„‘"©ÁCa¤Á‹€£4ˆp…6¹`fFÔ0D˜†?a…u¦03Êf¡ˆ2˜h{!ÁdìQ  ¢)6ÚASp‚\À‡r2"L@$¶Ù \(À¦ Q8sp&à,1°&àìèpV–gm‘!ÕÞ@ëgX*d h`Ž´‚ÑH500 @bLr¤À „ ¸!L(…$øI¸/ÀOq>b6¡I˜!öB!Ž)‡ 8a¶Nƒ8T·1â.`"´´Žˆka#„q¸à° 8|8À Í­àb£46¡ARW+"·VŽ[dXB#‰¥€€L ,Béˆ[g£ß~^?¯rtxZ.ëÑáds[»©½IF‡dëÜZÐáŸWG—×_þqüáá#ç~’¯gU±ªË ” ÐRŸà~Q­ë㇬£Ë,šü«˜×kÑ8×ßúÕ_g×ïºI€³ŸÇ/¿>{>9ðO'ÀEœœP¾E—Ôû^—7ËbVÎsD^NçÝñÑ×Ë÷–NJ 5`C;lH¤y 6“ó/×Àfr‘TÇü€øˆWàóõüãç£wŽÏõuŠ‘tªÔ;ñ>#örF§§_Ï¿Øö™L’|ÍËqÄ‡Ç &_A £¿®Oo,¯I:Ãvf±<"êæ_x–&§¿¸åÙ±8ƒöe¼³8¼P¯°8ïŽ&WWžOb[Óƒöå"æCT$y>Ç\|~ÿÙñI<Ýfлð ÞõtÓŸ s•ÝçëÑáq¹p9‚y•Õ}/»àób¾Fÿvmï~70f4Œ"Œîþ·_ÉOüsçFFåGhþë&ð5ž?Å<ŒaÊ£ÿ2¥ž'e!'aÔ~¾.*ÿ Ùä9 £×Šê0×òGl'†ñëÀ°ÏÉ<ÿ½¹X+tÐY„53 ¼dÐȤÖòã¦^K›Öµ8 g×âîlèfRµ¡E½€­ûíèðÃÖЖöñ«*Böd?>šÉm4ÛMCîËüû–R/msQÓÉÕDwý©Þú‹}ؘu°ã­Ú“c­H¬ÕÒ‡ä[Hҥ؀xH’*n¥&jo´ˆ S–ÈE¶Â¶7‰s%y‘­ðØìË…;‹HR ·‹‚E:Wˆ&©è­¾˜ìYRÝ!BUgE–~EƒzÍŠŠ>b»&¦»$ „Ã3‰RM»†í‰Œå7 õM+¾6É4>2A@·Rë}í/;²ãøÜÔ²sR™Î>ñ†õÐÚ¥ÑÝ•‘q‹¨D…º•X©=‘qÏëDË«VoÅö¤‰õN±Q­ÞÒìN#cñUB|ÙŠ/E2L4¹l…”ûZ¼Ùý—qƒë½ý-[íÅŽÍÝå—½/³Ç^Iã7ä…wñØ^òp‰àýÔLÀ@qãDíD† ƒ‰Ê¿×ⱨ›¤Öö­FøM"±”†‰´& &¬Ð0á,L ÄÓ>œÍjM8 Î`c …3Ƙ½p®S[Žlœl9 ‡ ·ÞkbÙr|3‚ƒ-G7¶j£¶œpàS[NÀh.`tœÐ‘Ùj‚@@“ûƒÄ¼Ãyj x ð"ÔàDé>ŠÍ¦ °#: M.ÿIþƒ9¾+òÅÜ]l–³º(—kð"¸çµž=äYß ÷“­ëj3«7Un'ÙrGœû$ißïyYgßÁÐ$Ø|/‹"«žûtÐPÅNÿAÉÇår–¯jëu¶œçI‰L«g`çMweõ˜ÙîK¡s8yûi Kˆ}[Ue×8p ËvîY;¸Úá$«³Ÿ„k•ßåðÈÏr+ò@aQ;‚rœnšÅ™çOù¢\=¾|ÃIzüçå5žV¹s:)gë‘5©/ŠY¾\[V,tÈÙ²®Êùf浺¹ûTþdÉÖKr\Î]#4;Pß~’Ï` \çØq_]5íJ1墸­B']–u¡*GªÙB&Åãjá VË›BE7u±(êÂF7˜ÅœfU•=Óµª‰,·E=Û’¨?îÄ5 )uc58+<£³¿§O9P³‹A…ŠàfÐîÓ%ü8¶/ª<«ói¾È­pv‹ˆÃæveòéÚUîùÑuXäÝp:´¶û‚µV0E~Gxºð¾µ0¤C£š6F)ïYæm÷QfvضR¾+dUýv9·N±Äð0EÔI¥ìÊ‘Ö"ÿ¾‚fš-ŸÁé~aΧ·Ï–PÜ•Á©œÕym±|ñÍ[Ź@è<ô ²ohùMïªòqZsÛVqü=dÞ¶x³Éµ¦E¾¼¯¦·ÞJ’Zì(%™$-Fä5Óãá%$UÏXg÷).­“‘ÄAËÍ#™–wM»ØwŽ1c<’n>é~`ºÔ•ÛݨÛoìV7i°…]HÆ|V¹}•¸ÿŒEw¡#êîS/ ì¾7¦OÙbc;„Ⱦ´³÷i²Ä.Ù^Tº>gnà0íÃ9ËÔ~j´æxM Š¶Æø¡üoUÔmÄÈ$ÑuÖ2õ߃XØW™Oæþ;æGF¯<Ç8yÂþá©ÆÃðptçAîºÿ¦ùQ„QþÄÉaïÃÔªP‡Ñ¼ q÷ÆÃ9““PѰ]œ0»óœäkpã$ñÁ÷ÎY‹ò~ä¿Þm?ü5Þ¢ŸS®Ï8i~Êÿûùðf·Ÿé ÷ÿŽ} endstream endobj 417 0 obj << /Type /XRef /Index [0 418] /Size 418 /W [1 3 1] /Root 415 0 R /Info 416 0 R /ID [<067E88833711D4D96CF18601E1DB9207> <067E88833711D4D96CF18601E1DB9207>] /Length 1005 /Filter /FlateDecode >> stream xÚ”KlVU…÷þoKß-å¶¥ú¢´P ¥´P -Phi }¥åÕ–Gb8p¦FMLÌI480š81q°M4N40!A£‰IèB€'š˜èLý¿5ù²ï:çž{îÚë3³ÿܬÎÜ ŸQº`³*PÔʾ(jžß)"@…ÛЛh©Š)% s«x$­ŒÇ-@U9¨•@oTƒP êÀVP¶4€Fжƒf°´€] Ô­¦MßÉ´Ý»<΀9p¬‚5Àhd`?8–ÀUÞmg™× γè^ª6ÐæÑz¨:@'X@ë¦Ú ºÀ%´=T‚FùFÒ¨ÐÊ×ÐôÚ>Ð ®£ie6YÕÖÑôÉà Ø@Ó®úÁ!p MÛ‡ù7µG4†ÐJÐdâp­m'ÃàZ9š?N @S+FÀ(Úšz4N¢É5ï8¦ÿUWÇÁ4ý¯Ú-ï'肪L‚sh $d \Ónù„"°fÝš_Öÿ*—Á’[ëÏšr¬€`Ù­ë¹&̘rè6¸éÖûŒ×B§âŽ[ÿWÅSñç¿ÒHvÜF>ÔãVd,N欜… ãQé69¨Éœ…Ð'9 ÁYÎBàUÔ»Ík"øßÀˆÀ¡Àº oÑì¶ò£æÑŠ G!×´(Q‰V·Û?h ‰¢Ä1:Ý^úVD/Èd¿èv{µED4ˆh«èu{{HÄ1È_ºPrÜÞ{K£ œF®BÙvûhS£ŠA i„íê÷•ƒ1·OÔËP|M(4D%¦ÁY·ÏžjÊ qˆX3n_7i ‰y@ãcÑíþ»àR²Ë€ë!HD¬¸=|QSÖA1›¯èqªGêê†Û£4ÀyËUòÛûªîzöýºŒ2àn¿®GnÑœ••¼ÄÝ[4 ¼T‚2÷êQi T¹7®I«fÌK[y¬ªêÁ6ƒÐšÀvÐ v€] ¶øíÇ ?›LŽÖÚAè»AغAØ ö^°ô®‡ü è‡À8 Á8Ž‚ap 'ÙÈGÁ8 NÓ`œ“ Õ½½\题Ó`pçÀ,àªÊ¹Çs.î|,‹à’{Ï„–ºì¾ú‡ªe÷§T]qÿæ5U+î›_ªZuÿ]×H~Õ óOU]ó½EU×½ðݧªnxá¯U7=«ýGÕšg}ÓªÖ={£AÕ†g÷åÙ¯?©Gô7Ñß„ã ÇŽ'Oºq<áxÂñ„ã ÇŽ'O8žp<áxÂñ„ã Ç“N#ާ1Ï~y`ž=yÇþ»~çw endstream endobj startxref 253574 %%EOF libtasn1-3.4/doc/TODO0000664000000000000000000000147212244720630011227 00000000000000If you want to contribute (implement something from the current list, or anything), contact the developer's mailing list ..., in order to avoid having people working on the same thing. Current list: + Audit the code + C structure generation instead of a single array - Add the checking of default value (e.g. 'INTEGER DEFAULT v1') - Check _asn1_objectid_der, crashes on "0" input, gives incorrect encoding? (+) Means high priority (*) Means medium priority (-) Means low priority (ie. nobody is interested to develop that) ---------------------------------------------------------------------- Copyright (C) 2002-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. libtasn1-3.4/doc/version.texi0000664000000000000000000000014112244721006013105 00000000000000@set UPDATED 25 November 2013 @set UPDATED-MONTH November 2013 @set EDITION 3.4 @set VERSION 3.4 libtasn1-3.4/doc/stamp-vti0000664000000000000000000000014112244722001012370 00000000000000@set UPDATED 25 November 2013 @set UPDATED-MONTH November 2013 @set EDITION 3.4 @set VERSION 3.4 libtasn1-3.4/doc/libtasn1.texi0000664000000000000000000002616312244720630013153 00000000000000\input texinfo @c -*-texinfo-*- @comment %**start of header @setfilename libtasn1.info @include version.texi @settitle GNU Libtasn1 @value{VERSION} @c Unify some of the indices. @syncodeindex tp fn @syncodeindex pg fn @comment %**end of header @copying This manual is for GNU Libtasn1 (version @value{VERSION}, @value{UPDATED}), which is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation. Copyright @copyright{} 2001-2013 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end quotation @end copying @dircategory Software libraries @direntry * libtasn1: (libtasn1). Library for Abstract Syntax Notation One (ASN.1). @end direntry @titlepage @title Libtasn1 @subtitle Abstract Syntax Notation One (ASN.1) library for the GNU system @subtitle for version @value{VERSION}, @value{UPDATED} @author Fabio Fiorina @author Simon Josefsson @author Nikos Mavrogiannopoulos (@email{help-libtasn1@@gnu.org}) @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @ifnottex @node Top @top Libtasn1 @insertcopying @end ifnottex @menu * Introduction:: * ASN.1 structure handling:: * Utilities:: * Function reference:: * Copying Information:: Indices * Concept Index:: Index of concepts and programs. * Function and Data Index:: Index of functions, variables and data types. @end menu @node Introduction @chapter Introduction This document describes the Libtasn1 library that provides Abstract Syntax Notation One (ASN.1, as specified by the X.680 ITU-T recommendation) parsing and structures management, and Distinguished Encoding Rules (DER, as per X.690) encoding and decoding functions. The main features of this library are: @itemize @bullet @item On-line ASN.1 structure management that doesn't require any C code file generation. @item Off-line ASN.1 structure management with C code file generation containing an array. @item Distinguished Encoding Rules (DER) encoding support. @item No limits for INTEGER and ENUMERATED values. @item It's Free Software. Anybody can use, modify, and redistribute the library under the terms of the GNU Lesser General Public License version 2.1 or later. The command line tools, self-tests and build infrastructure are licensed under the GNU General Public License version 3.0 or later. @item Thread-safety. @cindex threads No global variables are used and multiple library handles and session handles may be used in parallel. @item Portability. @cindex Porting The code should work on all Unix like operating systems, and Windows. The library itself should be portable to any C89 system, not even POSIX is required. @end itemize @node ASN.1 structure handling @chapter ASN.1 structure handling @menu * ASN.1 syntax:: * Naming:: * Simple parsing:: * Library Notes:: * Future developments:: @end menu @node ASN.1 syntax @section ASN.1 syntax @cindex ASN.1 schema The parser is case sensitive. The comments begin with @code{--} and end either with another @code{--}, or at the end of the respective line, whichever comes first. The C-style @code{/*}, @code{*/} comments are not supported. For an example of the syntax, check the @file{pkix.asn} file distributed with the library. ASN.1 definitions must follow the syntax below: @verbatim definitions_name {} DEFINITIONS TAGS ::= BEGIN END @end verbatim The @code{::=} token must be separate from other elements, so the following declaration is invalid: @example -- INCORRECT Version ::=INTEGER @end example The correct form is: @example Version ::= INTEGER @end example Here is the list of types that the parser can manage: @cindex Supported ASN.1 types, list of @itemize @bullet @item @code{INTEGER}; @item @code{ENUMERATED}; @item @code{BOOLEAN}; @item @code{OBJECT IDENTIFIER}; @item @code{NULL}; @item @code{BIT STRING}; @item @code{OCTET STRING}; @item @code{UTCTime}; @item @code{GeneralizedTime}; @item @code{GeneralString}; @item @code{NumericString}; @item @code{IA5String}; @item @code{TeletexString}; @item @code{PrintableString}; @item @code{UniversalString}; @item @code{BMPString}; @item @code{UTF8String}; @item @code{VisibleString}; @item @code{SEQUENCE}; @item @code{SEQUENCE OF}; @item @code{SET}; @item @code{SET OF}; @item @code{CHOICE}; @item @code{ANY}; @item @code{ANY DEFINED BY}. @end itemize This version doesn't handle the @code{REAL} type. It doesn't support the @code{AUTOMATIC TAGS} option, and the @code{EXPORT} and @code{IMPORT} sections, either. The @code{SIZE} constraints are allowed, but no check is done on them. @node Naming @section Naming Consider this definition: @verbatim Example { 1 2 3 4 } DEFINITIONS EXPLICIT TAGS ::= BEGIN Group ::= SEQUENCE { id OBJECT IDENTIFIER, value Value } Value ::= SEQUENCE { value1 INTEGER, value2 BOOLEAN } END @end verbatim The notation to access the @samp{Group} type of the @samp{Example} definition above is @samp{Example.Group} (as a NUL-terminated string.) Such strings are used in the functions described below. Others examples: @itemize @bullet @item field @samp{id} of the @samp{Group} type: @samp{Example.Group.id}; @item field @samp{value1} of the @samp{value} field of the @samp{Group} type: @samp{Example.Group.value.value1}. @end itemize Elements of structured types unnamed by the respective definition receive the names @code{?1}, @code{?2}, and so on. The @code{?LAST} name indicates the last element of a @code{SET OF} or @code{SEQUENCE OF}. @node Simple parsing @section Simple parsing For simple types like @code{OCTET STRING} the simple parsing functions listed below may be used instead. @itemize @item @ref{asn1_decode_simple_der} @item @ref{asn1_encode_simple_der} @end itemize @node Library Notes @section Library Notes @cindex Header file libtasn1.h The header file of this library is @file{libtasn1.h}. @cindex Main type asn1_node The main type used in it is @code{asn1_node}, and it's used to store the ASN.1 definitions and structures (instances). The @code{NULL} constant can be used for the variable initialization. For example: @example asn1_node definitions = NULL; @end example Some functions require an @code{errorDescription} argument of type @code{char *}, pointing to a pre-allocated buffer of at least @code{ASN1_MAX_ERROR_DESCRIPTION_SIZE} bytes size (e.g., as in @samp{char description[ASN1_MAX_ERROR_DESCRIPTION_SIZE];}). @code{ASN1_MAX_NAME_SIZE} is the maximum number of characters allowed for an ASN.1 identifier. @node Future developments @section Future developments @cindex Future developments @itemize @bullet @item Add functions for a C code file generation containing equivalent data structures (not a single array like now). @item The @code{REAL} type. @end itemize @node Utilities @chapter Utilities @menu * Invoking asn1Parser:: * Invoking asn1Coding:: * Invoking asn1Decoding:: @end menu @node Invoking asn1Parser @section Invoking asn1Parser @cindex asn1Parser program @command{asn1Parser} reads a single file with ASN.1 definitions and generates a file with an array to use with libtasn1 functions. @verbatim Usage: asn1Parser [options] file Options: -h : shows the help message. -v : shows version information and exit. -c : checks the syntax only. -o file : output file. -n name : array name. @end verbatim @node Invoking asn1Coding @section Invoking asn1Coding @cindex asn1Coding program @command{asn1Coding} generates a DER encoding from a file with ASN.1 definitions and another one with assignments. The file with assignments must have this syntax: @verbatim InstanceName Asn1Definition nameString value nameString value ... @end verbatim To specify the field of a @code{CHOICE} to be used, specify its name as a value to the @code{CHOICE} element itself. Use @code{''} to denote the root element itself. (as in the example below.) The output file is a binary file with the DER encoding. @verbatim Usage: asn1Coding [options] file1 file2 file1 : file with ASN1 definitions. file2 : file with assignments. Options: -h : shows the help message. -v : shows version information and exit. -c : checks the syntax only. -o file : output file. @end verbatim For example, consider an ASN.1 definitions file as follows: @verbatim PKIX1 { } DEFINITIONS IMPLICIT TAGS ::= BEGIN Dss-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER } END @end verbatim And a assignments file as follows: @verbatim dp PKIX1.Dss-Sig-Value r 42 s 47 @end verbatim Running the command below will generate a @file{assign.out} file, containing the DER encoding of @code{PKIX1.Dss-Sig-Value}. @verbatim $ asn1Coding pkix.asn assign.asn1 @end verbatim If the root element is of the @code{CHOICE} type, the assignment file may be like (using the types defined in @file{pkix.asn}): @verbatim elt PKIX1Implicit88.GeneralName '' dNSName dNSName example.org @end verbatim @node Invoking asn1Decoding @section Invoking asn1Decoding @cindex asn1Decoding program @command{asn1Decoding} generates an ASN.1 structure from a file with ASN.1 definitions and a binary file with a DER encoding. @verbatim Usage: asn1Decoding [options] file1 file2 type file1 : file with ASN1 definitions. file2 : binary file with a DER encoding. type : ASN1 definition name. Options: -h : shows the help message. -v : shows version information and exit. -o file : output file. @end verbatim For example, after generating the @file{assign.out} file from the example section of the @command{asn1Coding} command above, the following invocation will decode the DER data. @verbatim $ asn1Decoding pkix.asn assign.out PKIX1.Dss-Sig-Value @end verbatim @node Function reference @chapter Function reference @menu * ASN.1 schema functions:: * ASN.1 field functions:: * DER functions:: * Error handling functions:: * Auxilliary functions:: @end menu @node ASN.1 schema functions @section ASN.1 schema functions @include texi/ASN1.c.texi @node ASN.1 field functions @section ASN.1 field functions @include texi/structure.c.texi @include texi/element.c.texi @node DER functions @section DER functions @include texi/coding.c.texi @include texi/decoding.c.texi @node Error handling functions @section Error handling functions @include texi/errors.c.texi @node Auxilliary functions @section Auxilliary functions @include texi/parser_aux.c.texi @include texi/version.c.texi @node Copying Information @appendix Copying Information @menu * GNU Free Documentation License:: License for copying this manual. @end menu @node GNU Free Documentation License @appendixsec GNU Free Documentation License @cindex FDL, GNU Free Documentation License @include fdl-1.3.texi @node Concept Index @unnumbered Concept Index @printindex cp @node Function and Data Index @unnumbered Function and Data Index @printindex fn @bye libtasn1-3.4/doc/fdl-1.3.texi0000664000000000000000000005561012244720630012501 00000000000000@c The GNU Free Documentation License. @center Version 1.3, 3 November 2008 @c This file is intended to be included within another document, @c hence no sectioning command or @node. @display Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. @uref{http://fsf.org/} Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @end display @enumerate 0 @item PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document @dfn{free} in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of ``copyleft'', which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. @item APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The ``Document'', below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as ``you''. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A ``Modified Version'' of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A ``Secondary Section'' is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The ``Invariant Sections'' are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The ``Cover Texts'' are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A ``Transparent'' copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not ``Transparent'' is called ``Opaque''. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, La@TeX{} input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG@. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The ``Title Page'' means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, ``Title Page'' means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. The ``publisher'' means any person or entity that distributes copies of the Document to the public. A section ``Entitled XYZ'' means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as ``Acknowledgements'', ``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' of such a section when you modify the Document means that it remains a section ``Entitled XYZ'' according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. @item VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. @item COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. @item MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: @enumerate A @item Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. @item List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. @item State on the Title page the name of the publisher of the Modified Version, as the publisher. @item Preserve all the copyright notices of the Document. @item Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. @item Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. @item Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. @item Include an unaltered copy of this License. @item Preserve the section Entitled ``History'', Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled ``History'' in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. @item Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the ``History'' section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. @item For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. @item Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. @item Delete any section Entitled ``Endorsements''. Such a section may not be included in the Modified Version. @item Do not retitle any existing section to be Entitled ``Endorsements'' or to conflict in title with any Invariant Section. @item Preserve any Warranty Disclaimers. @end enumerate If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled ``Endorsements'', provided it contains nothing but endorsements of your Modified Version by various parties---for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. @item COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled ``History'' in the various original documents, forming one section Entitled ``History''; likewise combine any sections Entitled ``Acknowledgements'', and any sections Entitled ``Dedications''. You must delete all sections Entitled ``Endorsements.'' @item COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. @item AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an ``aggregate'' if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. @item TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled ``Acknowledgements'', ``Dedications'', or ``History'', the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. @item TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. @item FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation 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. See @uref{http://www.gnu.org/copyleft/}. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License ``or any later version'' applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. @item RELICENSING ``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A ``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the site means any set of copyrightable works thus published on the MMC site. ``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. ``Incorporate'' means to publish or republish a Document, in whole or in part, as part of another Document. An MMC is ``eligible for relicensing'' if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. @end enumerate @page @heading ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: @smallexample @group Copyright (C) @var{year} @var{your name}. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end group @end smallexample If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the ``with@dots{}Texts.''@: line with this: @smallexample @group with the Invariant Sections being @var{list their titles}, with the Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. @end group @end smallexample If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. @c Local Variables: @c ispell-local-pdict: "ispell-dict" @c End: libtasn1-3.4/doc/texinfo.css0000664000000000000000000000134612244720630012725 00000000000000body { margin: 2%; padding: 0 5%; background: #ffffff; } h1,h2,h3,h4,h5 { font-weight: bold; padding: 5px 5px 5px 5px; background-color: #c2e0ff; color: #336699; } h1 { padding: 2em 2em 2em 5%; color: white; background: #336699; text-align: center; letter-spacing: 3px; } h2 { text-decoration: underline; } pre { margin: 0 5%; padding: 0.5em; } pre.example { border: solid 1px; background: #eeeeff; padding-bottom: 1em; } pre.verbatim { border: solid 1px gray; background: white; padding-bottom: 1em; } div.node { margin: 0 -5% 0 -2%; padding: 0.5em 0.5em; margin-top: 0.5em; margin-bottom: 0.5em; font-weight: bold; } dd, li { padding-top: 0.1em; padding-bottom: 0.1em; } libtasn1-3.4/doc/asn1Coding.10000664000000000000000000000263712244722001012605 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.43.3. .TH ASN1CODING "1" "November 2013" "asn1Coding (libtasn1) 3.4" "User Commands" .SH NAME asn1Coding \- ASN.1 DER encoder .SH SYNOPSIS .B asn1Coding [\fIOPTION\fR] \fIDEFINITIONS ASSIGNMENTS\fR .SH DESCRIPTION Generates a DER encoding of ASN.1 DEFINITIONS file and ASSIGNMENTS file with value assignments. .PP Mandatory arguments to long options are mandatory for short options too. .TP \fB\-c\fR, \fB\-\-check\fR checks the syntax only .TP \fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR output file .TP \fB\-h\fR, \fB\-\-help\fR display this help and exit .TP \fB\-v\fR, \fB\-\-version\fR output version information and exit .SH AUTHOR Written by Fabio Fiorina. .SH "REPORTING BUGS" Report bugs to: help\-libtasn1@gnu.org .br GNU Libtasn1 home page: .br General help using GNU software: .SH COPYRIGHT Copyright \(co 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . .br This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B asn1Coding is maintained as a Texinfo manual. If the .B info and .B asn1Coding programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. libtasn1-3.4/doc/man/0000775000000000000000000000000012244722065011372 500000000000000libtasn1-3.4/doc/man/asn1_read_tag.30000664000000000000000000000276712244721010014067 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_read_tag" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_read_tag \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_read_tag(asn1_node " root ", const char * " name ", int * " tagValue ", int * " classValue ");" .SH ARGUMENTS .IP "asn1_node root" 12 pointer to a structure .IP "const char * name" 12 the name of the element inside a structure. .IP "int * tagValue" 12 variable that will contain the TAG value. .IP "int * classValue" 12 variable that will specify the TAG type. .SH "DESCRIPTION" Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: \fBASN1_CLASS_APPLICATION\fP, \fBASN1_CLASS_UNIVERSAL\fP, \fBASN1_CLASS_PRIVATE\fP or \fBASN1_CLASS_CONTEXT_SPECIFIC\fP. .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_print_structure.30000664000000000000000000000267012244721010015566 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_print_structure" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_print_structure \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_print_structure(FILE * " out ", asn1_node " structure ", const char * " name ", int " mode ");" .SH ARGUMENTS .IP "FILE * out" 12 pointer to the output file (e.g. stdout). .IP "asn1_node structure" 12 pointer to the structure that you want to visit. .IP "const char * name" 12 an element of the structure .IP "int mode" 12 specify how much of the structure to print, can be \fBASN1_PRINT_NAME\fP, \fBASN1_PRINT_NAME_TYPE\fP, \fBASN1_PRINT_NAME_TYPE_VALUE\fP, or \fBASN1_PRINT_ALL\fP. .SH "DESCRIPTION" Prints on the \fIout\fP file descriptor the structure's tree starting from the \fIname\fP element inside the structure \fIstructure\fP . .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_find_node.30000664000000000000000000000257012244721007014244 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_find_node" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_find_node \- API function .SH SYNOPSIS .B #include .sp .BI "asn1_node asn1_find_node(asn1_node " pointer ", const char * " name ");" .SH ARGUMENTS .IP "asn1_node pointer" 12 NODE_ASN element pointer. .IP "const char * name" 12 null terminated string with the element's name to find. .SH "DESCRIPTION" Searches for an element called \fIname\fP starting from \fIpointer\fP . The name is composed by differents identifiers separated by dots. When * \fIpointer\fP has a name, the first identifier must be the name of * \fIpointer\fP , otherwise it must be the name of one child of * \fIpointer\fP . .SH "RETURNS" the search result, or \fBNULL\fP if not found. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_octet_der.30000664000000000000000000000311712244721010014257 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_octet_der" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_octet_der \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_octet_der(const unsigned char * " str ", int " str_len ", unsigned char * " der ", int * " der_len ");" .SH ARGUMENTS .IP "const unsigned char * str" 12 the input data. .IP "int str_len" 12 STR length (str[0]..str[*str_len\-1]). .IP "unsigned char * der" 12 encoded string returned. .IP "int * der_len" 12 number of meaningful bytes of DER (der[0]..der[der_len\-1]). .SH "DESCRIPTION" Creates a length\-value DER encoding for the input data. The DER encoding of the input data will be placed in the \fIder\fP variable. Note that the OCTET STRING tag is not included in the output. This function does not return any value because it is expected that \fIder_len\fP will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using \fBasn1_length_der()\fP. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_expand_any_defined_by.30000664000000000000000000000306112244721007016611 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_expand_any_defined_by" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_expand_any_defined_by \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_expand_any_defined_by(asn1_node " definitions ", asn1_node * " element ");" .SH ARGUMENTS .IP "asn1_node definitions" 12 ASN1 definitions .IP "asn1_node * element" 12 pointer to an ASN1 structure .SH "DESCRIPTION" Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER. .SH "RETURNS" \fBASN1_SUCCESS\fP if Substitution OK, \fBASN1_ERROR_TYPE_ANY\fP if some "ANY DEFINED BY" element couldn't be expanded due to a problem in OBJECT_ID \-> TYPE association, or other error codes depending on DER decoding. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_get_length_ber.30000664000000000000000000000257012244721007015267 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_length_ber" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_get_length_ber \- API function .SH SYNOPSIS .B #include .sp .BI "long asn1_get_length_ber(const unsigned char * " ber ", int " ber_len ", int * " len ");" .SH ARGUMENTS .IP "const unsigned char * ber" 12 BER data to decode. .IP "int ber_len" 12 Length of BER data to decode. .IP "int * len" 12 Output variable containing the length of the BER length field. .SH "DESCRIPTION" Extract a length field from BER data. The difference to \fBasn1_get_length_der()\fP is that this function will return a length even if the value has indefinite encoding. .SH "RETURNS" Return the decoded length value, or negative value when the value was too big. .SH "SINCE" 2.0 .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_get_bit_der.30000664000000000000000000000277712244721007014577 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_bit_der" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_get_bit_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_get_bit_der(const unsigned char * " der ", int " der_len ", int * " ret_len ", unsigned char * " str ", int " str_size ", int * " bit_len ");" .SH ARGUMENTS .IP "const unsigned char * der" 12 DER data to decode containing the BIT SEQUENCE. .IP "int der_len" 12 Length of DER data to decode. .IP "int * ret_len" 12 Output variable containing the length of the DER data. .IP "unsigned char * str" 12 Pre\-allocated output buffer to put decoded BIT SEQUENCE in. .IP "int str_size" 12 Length of pre\-allocated output buffer. .IP "int * bit_len" 12 Output variable containing the size of the BIT SEQUENCE. .SH "DESCRIPTION" Extract a BIT SEQUENCE from DER data. .SH "RETURNS" Return \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_decode_simple_der.30000664000000000000000000000275512244721007015752 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_decode_simple_der" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_decode_simple_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_decode_simple_der(unsigned int " etype ", const unsigned char * " der ", unsigned int " der_len ", const unsigned char ** " str ", unsigned int * " str_len ");" .SH ARGUMENTS .IP "unsigned int etype" 12 The type of the string to be encoded (ASN1_ETYPE_) .IP "const unsigned char * der" 12 the encoded string .IP "unsigned int der_len" 12 the bytes of the encoded string .IP "const unsigned char ** str" 12 a pointer to the data .IP "unsigned int * str_len" 12 the length of the data .SH "DESCRIPTION" Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the \fIder\fP . .SH "RETURNS" \fBASN1_SUCCESS\fP if successful or an error value. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_der_decoding_startEnd.30000664000000000000000000000407712244721007016575 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_der_decoding_startEnd" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding_startEnd \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_der_decoding_startEnd(asn1_node " element ", const void * " ider ", int " len ", const char * " name_element ", int * " start ", int * " end ");" .SH ARGUMENTS .IP "asn1_node element" 12 pointer to an ASN1 element .IP "const void * ider" 12 vector that contains the DER encoding. .IP "int len" 12 number of bytes of * \fIider\fP : \fIider\fP [0].. \fIider\fP [len\-1] .IP "const char * name_element" 12 an element of NAME structure. .IP "int * start" 12 the position of the first byte of NAME_ELEMENT decoding ( \fIider\fP [*start]) .IP "int * end" 12 the position of the last byte of NAME_ELEMENT decoding ( \fIider\fP [*end]) .SH "DESCRIPTION" Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function \fBasn1_der_decoding()\fP to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure. One example is the sequence "tbsCertificate" inside an X509 certificate. .SH "RETURNS" \fBASN1_SUCCESS\fP if DER encoding OK, \fBASN1_ELEMENT_NOT_FOUND\fP if ELEMENT is \fBasn1_node\fP EMPTY or \fIname_element\fP is not a valid element, \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure ELEMENT. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_bit_der.30000664000000000000000000000310312244721010013712 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_bit_der" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_bit_der \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_bit_der(const unsigned char * " str ", int " bit_len ", unsigned char * " der ", int * " der_len ");" .SH ARGUMENTS .IP "const unsigned char * str" 12 BIT string. .IP "int bit_len" 12 number of meaningful bits in STR. .IP "unsigned char * der" 12 string returned. .IP "int * der_len" 12 number of meaningful bytes of DER (der[0]..der[ans_len\-1]). .SH "DESCRIPTION" Creates a length\-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in \fIder\fP . Note that the BIT STRING tag is not included in the output. This function does not return any value because it is expected that \fIder_len\fP will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using \fBasn1_length_der()\fP. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_get_octet_der.30000664000000000000000000000302112244721007015116 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_octet_der" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_get_octet_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_get_octet_der(const unsigned char * " der ", int " der_len ", int * " ret_len ", unsigned char * " str ", int " str_size ", int * " str_len ");" .SH ARGUMENTS .IP "const unsigned char * der" 12 DER data to decode containing the OCTET SEQUENCE. .IP "int der_len" 12 Length of DER data to decode. .IP "int * ret_len" 12 Output variable containing the length of the DER data. .IP "unsigned char * str" 12 Pre\-allocated output buffer to put decoded OCTET SEQUENCE in. .IP "int str_size" 12 Length of pre\-allocated output buffer. .IP "int * str_len" 12 Output variable containing the length of the OCTET SEQUENCE. .SH "DESCRIPTION" Extract an OCTET SEQUENCE from DER data. .SH "RETURNS" Returns \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_get_length_der.30000664000000000000000000000253012244721007015265 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_length_der" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_get_length_der \- API function .SH SYNOPSIS .B #include .sp .BI "long asn1_get_length_der(const unsigned char * " der ", int " der_len ", int * " len ");" .SH ARGUMENTS .IP "const unsigned char * der" 12 DER data to decode. .IP "int der_len" 12 Length of DER data to decode. .IP "int * len" 12 Output variable containing the length of the DER length field. .SH "DESCRIPTION" Extract a length field from DER data. .SH "RETURNS" Return the decoded length value, or \-1 on indefinite length, or \-2 when the value was too big to fit in a int, or \-4 when the decoded length value plus \fIlen\fP would exceed \fIder_len\fP . .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_perror.30000664000000000000000000000213712244721007013627 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_perror" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_perror \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_perror(int " error ");" .SH ARGUMENTS .IP "int error" 12 is an error returned by a libtasn1 function. .SH "DESCRIPTION" Prints a string to stderr with a description of an error. This function is like \fBperror()\fP. The only difference is that it accepts an error returned by a libtasn1 function. .SH "SINCE" 1.6 .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_read_value_type.30000664000000000000000000000631712244721010015464 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_read_value_type" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_read_value_type \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_read_value_type(asn1_node " root ", const char * " name ", void * " ivalue ", int * " len ", unsigned int * " etype ");" .SH ARGUMENTS .IP "asn1_node root" 12 pointer to a structure. .IP "const char * name" 12 the name of the element inside a structure that you want to read. .IP "void * ivalue" 12 vector that will contain the element's content, must be a pointer to memory cells already allocated. .IP "int * len" 12 number of bytes of *value: value[0]..value[len\-1]. Initialy holds the sizeof value. .IP "unsigned int * etype" 12 The type of the value read (ASN1_ETYPE) .SH "DESCRIPTION" Returns the value of one element inside a structure. If an element is OPTIONAL and the function "read_value" returns \fBASN1_ELEMENT_NOT_FOUND\fP, it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. .SH "INTEGER" VALUE will contain a two's complement form integer. integer=\-1 \-> value[0]=0xFF , len=1. integer=1 \-> value[0]=0x01 , len=1. .SH "ENUMERATED" As INTEGER (but only with not negative numbers). .SH "BOOLEAN" VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 .SH "UTCTIME" VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss\-hh'mm'". LEN=strlen(VALUE)+1. .SH "GENERALIZEDTIME" VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. .SH "GENERALSTRING" VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. .SH "CHOICE" If NAME indicates a choice type, VALUE will specify the alternative selected. .SH "ANY" If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. .SH "RETURNS" \fBASN1_SUCCESS\fP if value is returned, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element, \fBASN1_VALUE_NOT_FOUND\fP if there isn't any value for the element selected, and \fBASN1_MEM_ERROR\fP if The value vector isn't big enough to store the result, and in this case \fIlen\fP will contain the number of bytes needed. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_get_tag_der.30000664000000000000000000000257612244721007014571 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_get_tag_der" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_get_tag_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_get_tag_der(const unsigned char * " der ", int " der_len ", unsigned char * " cls ", int * " len ", unsigned long * " tag ");" .SH ARGUMENTS .IP "const unsigned char * der" 12 DER data to decode. .IP "int der_len" 12 Length of DER data to decode. .IP "unsigned char * cls" 12 Output variable containing decoded class. .IP "int * len" 12 Output variable containing the length of the DER TAG data. .IP "unsigned long * tag" 12 Output variable containing the decoded tag. .SH "DESCRIPTION" Decode the class and TAG from DER code. .SH "RETURNS" Returns \fBASN1_SUCCESS\fP on success, or an error. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_write_value.30000664000000000000000000001104312244721010014632 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_write_value" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_write_value \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_write_value(asn1_node " node_root ", const char * " name ", const void * " ivalue ", int " len ");" .SH ARGUMENTS .IP "asn1_node node_root" 12 pointer to a structure .IP "const char * name" 12 the name of the element inside the structure that you want to set. .IP "const void * ivalue" 12 vector used to specify the value to set. If len is >0, VALUE must be a two's complement form integer. if len=0 *VALUE must be a null terminated string with an integer value. .IP "int len" 12 number of bytes of *value to use to set the value: value[0]..value[len\-1] or 0 if value is a null terminated string .SH "DESCRIPTION" Set the value of one element inside a structure. If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0); Description for each type: .SH "INTEGER" VALUE must contain a two's complement form integer. value[0]=0xFF , len=1 \-> integer=\-1. value[0]=0xFF value[1]=0xFF , len=2 \-> integer=\-1. value[0]=0x01 , len=1 \-> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 \-> integer= 1. value="123" , len=0 \-> integer= 123. .SH "ENUMERATED" As INTEGER (but only with not negative numbers). .SH "BOOLEAN" VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0. value="TRUE" , len=1 \-> boolean=TRUE. value="FALSE" , len=1 \-> boolean=FALSE. OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0. value="1 2 840 10040 4 3" , len=1 \-> OID=dsa\-with\-sha. .SH "UTCTIME" VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh'mm'", "YYMMDDhhmmss\-hh'mm'", "YYMMDDhhmm+hh'mm'", or "YYMMDDhhmm\-hh'mm'". LEN != 0. value="9801011200Z" , len=1 \-> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time .SH "GENERALIZEDTIME" VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh'mm'", "YYYYMMDDhhmmss.s\-hh'mm'", "YYYYMMDDhhmm+hh'mm'", or "YYYYMMDDhhmm\-hh'mm'" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0 value="2001010112001.12\-0700" , len=1 \-> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time OCTET STRING: VALUE contains the octet string and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 \-> three bytes octet string .SH "GENERALSTRING" VALUE contains the generalstring and LEN is the number of octets. value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 \-> three bytes generalstring BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits. value="$\backslash$xCF" , len=6 \-> bit string="110011" (six bits) .SH "CHOICE" if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1); .SH "ANY" VALUE indicates the der encoding of a structure. LEN != 0. SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it's the first one, "?2" for the second and so on. Using "pkix.asn"\: result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1); SET OF: the same as SEQUENCE OF. Using "pkix.asn": result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1); .SH "RETURNS" \fBASN1_SUCCESS\fP if the value was set, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element, and \fBASN1_VALUE_NOT_VALID\fP if \fIivalue\fP has a wrong format. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_parser2tree.30000664000000000000000000000350312244721011014545 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_parser2tree" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_parser2tree \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_parser2tree(const char * " file ", asn1_node * " definitions ", char * " error_desc ");" .SH ARGUMENTS .IP "const char * file" 12 specify the path and the name of file that contains ASN.1 declarations. .IP "asn1_node * definitions" 12 return the pointer to the structure created from "file" ASN.1 declarations. .IP "char * error_desc" 12 return the error description or an empty string if success. .SH "DESCRIPTION" Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in \fIfile\fP file. .SH "RETURNS" \fBASN1_SUCCESS\fP if the file has a correct syntax and every identifier is known, \fBASN1_ELEMENT_NOT_EMPTY\fP if \fIdefinitions\fP not \fBNULL\fP, \fBASN1_FILE_NOT_FOUND\fP if an error occured while opening \fIfile\fP , \fBASN1_SYNTAX_ERROR\fP if the syntax is not correct, \fBASN1_IDENTIFIER_NOT_FOUND\fP if in the file there is an identifier that is not defined, \fBASN1_NAME_TOO_LONG\fP if in the file there is an identifier whith more than \fBASN1_MAX_NAME_SIZE\fP characters. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_array2tree.30000664000000000000000000000321712244721010014370 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_array2tree" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_array2tree \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_array2tree(const asn1_static_node * " array ", asn1_node * " definitions ", char * " errorDescription ");" .SH ARGUMENTS .IP "const asn1_static_node * array" 12 specify the array that contains ASN.1 declarations .IP "asn1_node * definitions" 12 return the pointer to the structure created by *ARRAY ASN.1 declarations .IP "char * errorDescription" 12 return the error description. .SH "DESCRIPTION" Creates the structures needed to manage the ASN.1 definitions. \fIarray\fP is a vector created by \fBasn1_parser2array()\fP. .SH "RETURNS" \fBASN1_SUCCESS\fP if structure was created correctly, \fBASN1_ELEMENT_NOT_EMPTY\fP if * \fIdefinitions\fP not NULL, \fBASN1_IDENTIFIER_NOT_FOUND\fP if in the file there is an identifier that is not defined (see \fIerrorDescription\fP for more information), \fBASN1_ARRAY_ERROR\fP if the array pointed by \fIarray\fP is wrong. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_find_structure_from_oid.30000664000000000000000000000243412244721011017227 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_find_structure_from_oid" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_find_structure_from_oid \- API function .SH SYNOPSIS .B #include .sp .BI "const char * asn1_find_structure_from_oid(asn1_node " definitions ", const char * " oidValue ");" .SH ARGUMENTS .IP "asn1_node definitions" 12 ASN1 definitions .IP "const char * oidValue" 12 value of the OID to search (e.g. "1.2.3.4"). .SH "DESCRIPTION" Search the structure that is defined just after an OID definition. .SH "RETURNS" \fBNULL\fP when \fIoidValue\fP not found, otherwise the pointer to a constant string that contains the element name defined just after the OID. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_encode_simple_der.30000664000000000000000000000330112244721010015742 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_encode_simple_der" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_encode_simple_der \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_encode_simple_der(unsigned int " etype ", const unsigned char * " str ", unsigned int " str_len ", unsigned char * " tl ", unsigned int * " tl_len ");" .SH ARGUMENTS .IP "unsigned int etype" 12 The type of the string to be encoded (ASN1_ETYPE_) .IP "const unsigned char * str" 12 the string data. .IP "unsigned int str_len" 12 the string length .IP "unsigned char * tl" 12 the encoded tag and length .IP "unsigned int * tl_len" 12 the bytes of the \fItl\fP field .SH "DESCRIPTION" Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in \fItl\fP , which should have space for at least \fBASN1_MAX_TL_SIZE\fP bytes. Initially \fItl_len\fP should contain the size of \fItl\fP . The complete DER encoding should consist of the value in \fItl\fP appended with the provided \fIstr\fP . .SH "RETURNS" \fBASN1_SUCCESS\fP if successful or an error value. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_read_value.30000664000000000000000000000614012244721010014415 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_read_value" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_read_value \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_read_value(asn1_node " root ", const char * " name ", void * " ivalue ", int * " len ");" .SH ARGUMENTS .IP "asn1_node root" 12 pointer to a structure. .IP "const char * name" 12 the name of the element inside a structure that you want to read. .IP "void * ivalue" 12 vector that will contain the element's content, must be a pointer to memory cells already allocated. .IP "int * len" 12 number of bytes of *value: value[0]..value[len\-1]. Initialy holds the sizeof value. .SH "DESCRIPTION" Returns the value of one element inside a structure. If an element is OPTIONAL and the function "read_value" returns \fBASN1_ELEMENT_NOT_FOUND\fP, it means that this element wasn't present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on. .SH "INTEGER" VALUE will contain a two's complement form integer. integer=\-1 \-> value[0]=0xFF , len=1. integer=1 \-> value[0]=0x01 , len=1. .SH "ENUMERATED" As INTEGER (but only with not negative numbers). .SH "BOOLEAN" VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6. OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1"). LEN = strlen(VALUE)+1 .SH "UTCTIME" VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh'mm'" or "YYMMDDhhmmss\-hh'mm'". LEN=strlen(VALUE)+1. .SH "GENERALIZEDTIME" VALUE will be a null terminated string in the same format used to set the value. OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets. .SH "GENERALSTRING" VALUE will contain the generalstring and LEN will be the number of octets. BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits. .SH "CHOICE" If NAME indicates a choice type, VALUE will specify the alternative selected. .SH "ANY" If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used. .SH "RETURNS" \fBASN1_SUCCESS\fP if value is returned, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element, \fBASN1_VALUE_NOT_FOUND\fP if there isn't any value for the element selected, and \fBASN1_MEM_ERROR\fP if The value vector isn't big enough to store the result, and in this case \fIlen\fP will contain the number of bytes needed. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_delete_structure.30000664000000000000000000000223312244721010015667 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_delete_structure" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_delete_structure \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_delete_structure(asn1_node * " structure ");" .SH ARGUMENTS .IP "asn1_node * structure" 12 pointer to the structure that you want to delete. .SH "DESCRIPTION" Deletes the structure * \fIstructure\fP . At the end, * \fIstructure\fP is set to NULL. .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if * \fIstructure\fP was NULL. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_strerror.30000664000000000000000000000227412244721007014202 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_strerror" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_strerror \- API function .SH SYNOPSIS .B #include .sp .BI "const char * asn1_strerror(int " error ");" .SH ARGUMENTS .IP "int error" 12 is an error returned by a libtasn1 function. .SH "DESCRIPTION" Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function. .SH "RETURNS" Pointer to static zero\-terminated string describing error code. .SH "SINCE" 1.6 .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_read_node_value.30000664000000000000000000000225612244721010015426 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_read_node_value" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_read_node_value \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_read_node_value(asn1_node " node ", asn1_data_node_st * " data ");" .SH ARGUMENTS .IP "asn1_node node" 12 pointer to a node. .IP "asn1_data_node_st * data" 12 a point to a asn1_data_node_st .SH "DESCRIPTION" Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values. .SH "RETURNS" \fBASN1_SUCCESS\fP if the node exists. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_der_decoding_element.30000664000000000000000000000372412244721007016440 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_der_decoding_element" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding_element \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_der_decoding_element(asn1_node * " structure ", const char * " elementName ", const void * " ider ", int " len ", char * " errorDescription ");" .SH ARGUMENTS .IP "asn1_node * structure" 12 pointer to an ASN1 structure .IP "const char * elementName" 12 name of the element to fill .IP "const void * ider" 12 vector that contains the DER encoding of the whole structure. .IP "int len" 12 number of bytes of *der: der[0]..der[len\-1] .IP "char * errorDescription" 12 null\-terminated string contains details when an error occurred. .SH "DESCRIPTION" Fill the element named \fIELEMENTNAME\fP with values of a DER encoding string. The structure must just be created with function \fBasn1_create_element()\fP. The DER vector must contain the encoding string of the whole \fISTRUCTURE\fP . If an error occurs during the decoding procedure, the * \fISTRUCTURE\fP is deleted and set equal to \fBNULL\fP. .SH "RETURNS" \fBASN1_SUCCESS\fP if DER encoding OK, \fBASN1_ELEMENT_NOT_FOUND\fP if ELEMENT is \fBNULL\fP or \fIelementName\fP == NULL, and \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure \fIstructure\fP (*ELEMENT deleted). .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_create_element.30000664000000000000000000000267312244721010015271 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_create_element" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_create_element \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_create_element(asn1_node " definitions ", const char * " source_name ", asn1_node * " element ");" .SH ARGUMENTS .IP "asn1_node definitions" 12 pointer to the structure returned by "parser_asn1" function .IP "const char * source_name" 12 the name of the type of the new structure (must be inside p_structure). .IP "asn1_node * element" 12 pointer to the structure created. .SH "DESCRIPTION" Creates a structure of type \fIsource_name\fP . Example using "pkix.asn": rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr); .SH "RETURNS" \fBASN1_SUCCESS\fP if creation OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIsource_name\fP is not known. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_length_der.30000664000000000000000000000261112244721007014426 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_length_der" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_length_der \- API function .SH SYNOPSIS .B #include .sp .BI "void asn1_length_der(unsigned long int " len ", unsigned char * " der ", int * " der_len ");" .SH ARGUMENTS .IP "unsigned long int len" 12 value to convert. .IP "unsigned char * der" 12 buffer to hold the returned encoding (may be \fBNULL\fP). .IP "int * der_len" 12 number of meaningful bytes of ANS (der[0]..der[der_len\-1]). .SH "DESCRIPTION" Creates the DER encoding of the provided length value. The \fIder\fP buffer must have enough room for the output. The maximum length this function will encode is \fBASN1_MAX_LENGTH_SIZE\fP. To know the size of the DER encoding use a \fBNULL\fP value for \fIder\fP . .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_delete_element.30000664000000000000000000000240712244721010015263 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_delete_element" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_delete_element \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_delete_element(asn1_node " structure ", const char * " element_name ");" .SH ARGUMENTS .IP "asn1_node structure" 12 pointer to the structure that contains the element you want to delete. .IP "const char * element_name" 12 element's name you want to delete. .SH "DESCRIPTION" Deletes the element named * \fIelement_name\fP inside * \fIstructure\fP . .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if the \fIelement_name\fP was not found. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_expand_octet_string.30000664000000000000000000000343612244721007016364 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_expand_octet_string" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_expand_octet_string \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_expand_octet_string(asn1_node " definitions ", asn1_node * " element ", const char * " octetName ", const char * " objectName ");" .SH ARGUMENTS .IP "asn1_node definitions" 12 ASN1 definitions .IP "asn1_node * element" 12 pointer to an ASN1 structure .IP "const char * octetName" 12 name of the OCTECT STRING field to expand. .IP "const char * objectName" 12 name of the OBJECT IDENTIFIER field to use to define the type for expansion. .SH "DESCRIPTION" Expands an "OCTET STRING" element of a structure created from a DER decoding process (the \fBasn1_der_decoding()\fP function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME. .SH "RETURNS" \fBASN1_SUCCESS\fP if substitution OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIobjectName\fP or \fIoctetName\fP are not correct, \fBASN1_VALUE_NOT_VALID\fP if it wasn't possible to find the type to use for expansion, or other errors depending on DER decoding. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_number_of_elements.30000664000000000000000000000260512244721011016161 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_number_of_elements" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_number_of_elements \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_number_of_elements(asn1_node " element ", const char * " name ", int * " num ");" .SH ARGUMENTS .IP "asn1_node element" 12 pointer to the root of an ASN1 structure. .IP "const char * name" 12 the name of a sub\-structure of ROOT. .IP "int * num" 12 pointer to an integer where the result will be stored .SH "DESCRIPTION" Counts the number of elements of a sub\-structure called NAME with names equal to "?1","?2", ... .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not known, \fBASN1_GENERIC_ERROR\fP if pointer \fInum\fP is \fBNULL\fP. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_delete_structure2.30000664000000000000000000000240012244721010015745 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_delete_structure2" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_delete_structure2 \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_delete_structure2(asn1_node * " structure ", unsigned int " flags ");" .SH ARGUMENTS .IP "asn1_node * structure" 12 pointer to the structure that you want to delete. .IP "unsigned int flags" 12 additional flags (see \fBASN1_DELETE_FLAG\fP) .SH "DESCRIPTION" Deletes the structure * \fIstructure\fP . At the end, * \fIstructure\fP is set to NULL. .SH "RETURNS" \fBASN1_SUCCESS\fP if successful, \fBASN1_ELEMENT_NOT_FOUND\fP if * \fIstructure\fP was NULL. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_check_version.30000664000000000000000000000263512244721011015136 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_check_version" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_check_version \- API function .SH SYNOPSIS .B #include .sp .BI "const char * asn1_check_version(const char * " req_version ");" .SH ARGUMENTS .IP "const char * req_version" 12 Required version number, or \fBNULL\fP. .SH "DESCRIPTION" Check that the version of the library is at minimum the requested one and return the version string; return \fBNULL\fP if the condition is not satisfied. If a \fBNULL\fP is passed to this function, no check is done, but the version string is simply returned. See \fBASN1_VERSION\fP for a suitable \fIreq_version\fP string. .SH "RETURNS" Version string of run\-time library, or \fBNULL\fP if the run\-time library does not meet the required version number. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_der_decoding.30000664000000000000000000000335312244721007014725 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_der_decoding" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_der_decoding \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_der_decoding(asn1_node * " element ", const void * " ider ", int " len ", char * " errorDescription ");" .SH ARGUMENTS .IP "asn1_node * element" 12 pointer to an ASN1 structure. .IP "const void * ider" 12 vector that contains the DER encoding. .IP "int len" 12 number of bytes of * \fIider\fP : \fIider\fP [0].. \fIider\fP [len\-1]. .IP "char * errorDescription" 12 null\-terminated string contains details when an error occurred. .SH "DESCRIPTION" Fill the structure * \fIELEMENT\fP with values of a DER encoding string. The structure must just be created with function \fBasn1_create_element()\fP. If an error occurs during the decoding procedure, the * \fIELEMENT\fP is deleted and set equal to \fBNULL\fP. .SH "RETURNS" \fBASN1_SUCCESS\fP if DER encoding OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIELEMENT\fP is \fBNULL\fP, and \fBASN1_TAG_ERROR\fP or \fBASN1_DER_ERROR\fP if the der encoding doesn't match the structure name (* \fIELEMENT\fP deleted). .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_parser2array.30000664000000000000000000000417112244721011014726 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_parser2array" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_parser2array \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_parser2array(const char * " inputFileName ", const char * " outputFileName ", const char * " vectorName ", char * " error_desc ");" .SH ARGUMENTS .IP "const char * inputFileName" 12 specify the path and the name of file that contains ASN.1 declarations. .IP "const char * outputFileName" 12 specify the path and the name of file that will contain the C vector definition. .IP "const char * vectorName" 12 specify the name of the C vector. .IP "char * error_desc" 12 return the error description or an empty string if success. .SH "DESCRIPTION" Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in \fIinputFileName\fP file. If \fIinputFileName\fP is "/aa/bb/xx.yy" and \fIoutputFileName\fP is \fBNULL\fP, the file created is "/aa/bb/xx_asn1_tab.c". If \fIvectorName\fP is \fBNULL\fP the vector name will be "xx_asn1_tab". .SH "RETURNS" \fBASN1_SUCCESS\fP if the file has a correct syntax and every identifier is known, \fBASN1_FILE_NOT_FOUND\fP if an error occured while opening \fIinputFileName\fP , \fBASN1_SYNTAX_ERROR\fP if the syntax is not correct, \fBASN1_IDENTIFIER_NOT_FOUND\fP if in the file there is an identifier that is not defined, \fBASN1_NAME_TOO_LONG\fP if in the file there is an identifier whith more than \fBASN1_MAX_NAME_SIZE\fP characters. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_copy_node.30000664000000000000000000000235312244721011014270 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_copy_node" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_copy_node \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_copy_node(asn1_node " dst ", const char * " dst_name ", asn1_node " src ", const char * " src_name ");" .SH ARGUMENTS .IP "asn1_node dst" 12 Destination asn1_node node. .IP "const char * dst_name" 12 Field name in destination node. .IP "asn1_node src" 12 Source asn1_node node. .IP "const char * src_name" 12 Field name in source node. .SH "DESCRIPTION" Create a deep copy of a asn1_node variable. .SH "RETURNS" Return \fBASN1_SUCCESS\fP on success. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/man/asn1_der_coding.30000664000000000000000000000347712244721010014415 00000000000000.\" DO NOT MODIFY THIS FILE! It was generated by gdoc. .TH "asn1_der_coding" 3 "3.4" "libtasn1" "libtasn1" .SH NAME asn1_der_coding \- API function .SH SYNOPSIS .B #include .sp .BI "int asn1_der_coding(asn1_node " element ", const char * " name ", void * " ider ", int * " len ", char * " ErrorDescription ");" .SH ARGUMENTS .IP "asn1_node element" 12 pointer to an ASN1 element .IP "const char * name" 12 the name of the structure you want to encode (it must be inside *POINTER). .IP "void * ider" 12 vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated. .IP "int * len" 12 number of bytes of * \fIider\fP : \fIider\fP [0].. \fIider\fP [len\-1], Initialy holds the sizeof of der vector. .IP "char * ErrorDescription" 12 return the error description or an empty string if success. .SH "DESCRIPTION" Creates the DER encoding for the NAME structure (inside *POINTER structure). .SH "RETURNS" \fBASN1_SUCCESS\fP if DER encoding OK, \fBASN1_ELEMENT_NOT_FOUND\fP if \fIname\fP is not a valid element, \fBASN1_VALUE_NOT_FOUND\fP if there is an element without a value, \fBASN1_MEM_ERROR\fP if the \fIider\fP vector isn't big enough and in this case \fIlen\fP will contain the length needed. .SH COPYRIGHT Copyright \(co 2006-2013 Free Software Foundation, Inc.. .br Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. .SH "SEE ALSO" The full documentation for .B libtasn1 is maintained as a Texinfo manual. If the .B info and .B libtasn1 programs are properly installed at your site, the command .IP .B info libtasn1 .PP should give you access to the complete manual. As an alternative you may obtain the manual from: .IP .B http://www.gnu.org/software/libtasn1/manual/ .PP libtasn1-3.4/doc/Makefile.in0000664000000000000000000017047312244721750012620 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ @ENABLE_GTK_DOC_TRUE@am__append_1 = reference subdir = doc DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(libtasn1_TEXINFOS) $(top_srcdir)/build-aux/mdate-sh \ $(srcdir)/version.texi $(srcdir)/stamp-vti \ $(top_srcdir)/build-aux/texinfo.tex $(dist_man_MANS) TODO ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/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_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; am__v_DVIPS_1 = AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; am__v_MAKEINFO_1 = AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) am__v_INFOHTML_0 = @echo " INFOHTML" $@; am__v_INFOHTML_1 = AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; am__v_TEXI2DVI_1 = AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; am__v_TEXI2PDF_1 = AM_V_texinfo = $(am__v_texinfo_@AM_V@) am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) am__v_texinfo_0 = -q am__v_texinfo_1 = AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) am__v_texidevnull_0 = > /dev/null am__v_texidevnull_1 = INFO_DEPS = $(srcdir)/libtasn1.info TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux DVIS = libtasn1.dvi PDFS = libtasn1.pdf PSS = libtasn1.ps HTMLS = libtasn1.html TEXINFOS = libtasn1.texi TEXI2PDF = $(TEXI2DVI) --pdf --batch MAKEINFOHTML = $(MAKEINFO) --html DVIPS = dvips 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 am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(man3dir)" 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 man3dir = $(mandir)/man3 NROFF = nroff MANS = $(dist_man_MANS) 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 \ distdir 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 DIST_SUBDIRS = cyclo reference DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 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" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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 = cyclo $(am__append_1) EXTRA_DIST = gdoc TODO libtasn1.html libtasn1.ps libtasn1.pdf info_TEXINFOS = libtasn1.texi libtasn1_TEXINFOS = fdl-1.3.texi texinfo.css $(gdoc_TEXINFOS) AM_MAKEINFOFLAGS = -I $(top_builddir)/doc TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS) AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \ --no-split --number-sections --css-include=texinfo.css dist_man_MANS = $(gdoc_MANS) asn1Parser.1 asn1Coding.1 asn1Decoding.1 HELP2MAN_OPTS = --info-page libtasn1 gdoc_MANS = man/asn1_get_length_der.3 man/asn1_get_tag_der.3 \ man/asn1_get_length_ber.3 man/asn1_get_octet_der.3 \ man/asn1_get_bit_der.3 man/asn1_der_decoding.3 \ man/asn1_der_decoding_element.3 \ man/asn1_der_decoding_startEnd.3 \ man/asn1_expand_any_defined_by.3 \ man/asn1_expand_octet_string.3 man/asn1_decode_simple_der.3 \ man/asn1_perror.3 man/asn1_strerror.3 man/asn1_find_node.3 \ man/asn1_length_der.3 man/asn1_octet_der.3 \ man/asn1_encode_simple_der.3 man/asn1_bit_der.3 \ man/asn1_der_coding.3 man/asn1_write_value.3 \ man/asn1_read_value.3 man/asn1_read_value_type.3 \ man/asn1_read_tag.3 man/asn1_read_node_value.3 \ man/asn1_array2tree.3 man/asn1_delete_structure.3 \ man/asn1_delete_structure2.3 man/asn1_delete_element.3 \ man/asn1_create_element.3 man/asn1_print_structure.3 \ man/asn1_number_of_elements.3 \ man/asn1_find_structure_from_oid.3 man/asn1_copy_node.3 \ man/asn1_parser2tree.3 man/asn1_parser2array.3 \ man/asn1_check_version.3 gdoc_TEXINFOS = texi/decoding.c.texi texi/errors.c.texi \ texi/parser_aux.c.texi texi/coding.c.texi texi/element.c.texi \ texi/gstr.c.texi texi/structure.c.texi texi/ASN1.c.texi \ texi/version.c.texi texi/asn1_get_length_der.texi \ texi/asn1_get_tag_der.texi texi/asn1_get_length_ber.texi \ texi/asn1_get_octet_der.texi texi/asn1_get_bit_der.texi \ texi/asn1_der_decoding.texi \ texi/asn1_der_decoding_element.texi \ texi/asn1_der_decoding_startEnd.texi \ texi/asn1_expand_any_defined_by.texi \ texi/asn1_expand_octet_string.texi \ texi/asn1_decode_simple_der.texi texi/asn1_perror.texi \ texi/asn1_strerror.texi texi/asn1_find_node.texi \ texi/asn1_length_der.texi texi/asn1_octet_der.texi \ texi/asn1_encode_simple_der.texi texi/asn1_bit_der.texi \ texi/asn1_der_coding.texi texi/asn1_write_value.texi \ texi/asn1_read_value.texi texi/asn1_read_value_type.texi \ texi/asn1_read_tag.texi texi/asn1_read_node_value.texi \ texi/asn1_array2tree.texi texi/asn1_delete_structure.texi \ texi/asn1_delete_structure2.texi texi/asn1_delete_element.texi \ texi/asn1_create_element.texi texi/asn1_print_structure.texi \ texi/asn1_number_of_elements.texi \ texi/asn1_find_structure_from_oid.texi \ texi/asn1_copy_node.texi texi/asn1_parser2tree.texi \ texi/asn1_parser2array.texi texi/asn1_check_version.texi GDOC_SRC = $(top_srcdir)/lib/decoding.c $(top_srcdir)/lib/errors.c \ $(top_srcdir)/lib/parser_aux.c $(top_srcdir)/lib/coding.c \ $(top_srcdir)/lib/element.c $(top_srcdir)/lib/gstr.c \ $(top_srcdir)/lib/structure.c $(top_srcdir)/lib/ASN1.c \ $(top_srcdir)/lib/version.c all: all-recursive .SUFFIXES: .SUFFIXES: .dvi .html .info .pdf .ps .texi $(srcdir)/Makefile.in: $(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 .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs .texi.info: $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ am__cwd=`pwd` && $(am__cd) $(srcdir) && \ rm -rf $$backupdir && mkdir $$backupdir && \ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ done; \ else :; fi && \ cd "$$am__cwd"; \ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $@ $<; \ then \ rc=0; \ $(am__cd) $(srcdir); \ else \ rc=$$?; \ $(am__cd) $(srcdir) && \ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ fi; \ rm -rf $$backupdir; exit $$rc .texi.dvi: $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ $< .texi.pdf: $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ $< .texi.html: $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $(@:.html=.htp) $<; \ then \ rm -rf $@; \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ else \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ exit 1; \ fi $(srcdir)/libtasn1.info: libtasn1.texi $(srcdir)/version.texi $(libtasn1_TEXINFOS) libtasn1.dvi: libtasn1.texi $(srcdir)/version.texi $(libtasn1_TEXINFOS) libtasn1.pdf: libtasn1.texi $(srcdir)/version.texi $(libtasn1_TEXINFOS) libtasn1.html: libtasn1.texi $(srcdir)/version.texi $(libtasn1_TEXINFOS) $(srcdir)/version.texi: $(srcdir)/stamp-vti $(srcdir)/stamp-vti: libtasn1.texi $(top_srcdir)/configure @(dir=.; test -f ./libtasn1.texi || dir=$(srcdir); \ set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/libtasn1.texi`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > vti.tmp @cmp -s vti.tmp $(srcdir)/version.texi \ || (echo "Updating $(srcdir)/version.texi"; \ cp vti.tmp $(srcdir)/version.texi) -@rm -f vti.tmp @cp $(srcdir)/version.texi $@ mostlyclean-vti: -rm -f vti.tmp maintainer-clean-vti: -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi .dvi.ps: $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ $(DVIPS) $(AM_V_texinfo) -o $@ $< uninstall-dvi-am: @$(NORMAL_UNINSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ rm -f "$(DESTDIR)$(dvidir)/$$f"; \ done uninstall-html-am: @$(NORMAL_UNINSTALL) @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ done uninstall-info-am: @$(PRE_UNINSTALL) @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ done; \ else :; fi @$(NORMAL_UNINSTALL) @list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done uninstall-pdf-am: @$(NORMAL_UNINSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ done uninstall-ps-am: @$(NORMAL_UNINSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ rm -f "$(DESTDIR)$(psdir)/$$f"; \ done dist-info: $(INFO_DEPS) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; \ for base in $$list; do \ case $$base in \ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$base; then d=.; else d=$(srcdir); fi; \ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ if test -f $$file; then \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ test -f "$(distdir)/$$relfile" || \ cp -p $$file "$(distdir)/$$relfile"; \ else :; fi; \ done; \ done mostlyclean-aminfo: -rm -rf libtasn1.t2d libtasn1.t2p clean-aminfo: -test -z "libtasn1.dvi libtasn1.pdf libtasn1.ps libtasn1.html" \ || rm -rf libtasn1.dvi libtasn1.pdf libtasn1.ps libtasn1.html maintainer-clean-aminfo: @list='$(INFO_DEPS)'; for i in $$list; do \ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_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='$(dist_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) install-man3: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man3dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || 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 '/\.3[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,^[^3][0-9a-z]*$$,3,;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)$(man3dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$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)$(man3dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ done; } uninstall-man3: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man3dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.3[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) # 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" 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 distdir: $(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 @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-info check-am: all-am check: check-recursive all-am: Makefile $(INFO_DEPS) $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done 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-aminfo clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: $(DVIS) html: html-recursive html-am: $(HTMLS) info: info-recursive info-am: $(INFO_DEPS) install-data-am: install-info-am install-man install-dvi: install-dvi-recursive install-dvi-am: $(DVIS) @$(NORMAL_INSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dvidir)" || 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)$(dvidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ done install-exec-am: install-html: install-html-recursive install-html-am: $(HTMLS) @$(NORMAL_INSTALL) @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ $(am__strip_dir) \ d2=$$d$$p; \ if test -d "$$d2"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ else \ list2="$$list2 $$d2"; \ fi; \ done; \ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ done; } install-info: install-info-recursive install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ fi; \ for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ if test -f $$ifile; then \ echo "$$ifile"; \ else : ; fi; \ done; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done @$(POST_INSTALL) @if $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ done; \ else : ; fi install-man: install-man1 install-man3 install-pdf: install-pdf-recursive install-pdf-am: $(PDFS) @$(NORMAL_INSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || 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)$(pdfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done install-ps: install-ps-recursive install-ps-am: $(PSS) @$(NORMAL_INSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(psdir)" || 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)$(psdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-vti mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ mostlyclean-libtool mostlyclean-vti pdf: pdf-recursive pdf-am: $(PDFS) ps: ps-recursive ps-am: $(PSS) uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ uninstall-man uninstall-pdf-am uninstall-ps-am uninstall-man: uninstall-man1 uninstall-man3 .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-aminfo clean-generic clean-libtool \ clean-local cscopelist-am ctags ctags-am dist-info distclean \ distclean-generic distclean-libtool distclean-tags 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-man1 \ install-man3 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-aminfo maintainer-clean-generic \ maintainer-clean-vti mostlyclean mostlyclean-aminfo \ mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \ pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-dvi-am uninstall-html-am uninstall-info-am \ uninstall-man uninstall-man1 uninstall-man3 uninstall-pdf-am \ uninstall-ps-am asn1Parser.1: $(top_srcdir)/src/asn1Parser.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 syntax tree generator for libtasn1" \ --output=$@ $(top_builddir)/src/asn1Parser$(EXEEXT) asn1Coding.1: $(top_srcdir)/src/asn1Coding.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER encoder" \ --output=$@ $(top_builddir)/src/asn1Coding$(EXEEXT) asn1Decoding.1: $(top_srcdir)/src/asn1Decoding.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER decoder" \ --output=$@ $(top_builddir)/src/asn1Decoding$(EXEEXT) compare-makefile: @MANS=""; \ TEXINFOS=""; \ for i in $(GDOC_SRC); do \ BASE=`basename $$i`; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$BASE.texi"; \ done; \ FUNCS=`$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; \ for i in $$FUNCS; do \ MANS="$$MANS\ngdoc_MANS += man/$$i.3"; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$i.texi"; \ done; \ grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \ perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \ perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \ > tmp-$@; diff -u $(srcdir)/Makefile.am tmp-$@ rm -f tmp-$@ $(gdoc_MANS) $(gdoc_TEXINFOS): stamp_docs clean-local: -rm -f stamp_docs stamp_docs: $(mkdir_p) man texi; \ for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ echo -n "Creating documentation for $$i... " && \ $(srcdir)/gdoc -man \ -module $(PACKAGE) \ -pkg-name "$(PACKAGE_NAME)" \ -sourceversion $(VERSION) \ -include libtasn1.h \ -seeinfo $(PACKAGE) -verbatimcopying \ -copyright "2006-2013 Free Software Foundation, Inc." \ -function $$i \ $(GDOC_SRC) > man/$$i.3 && \ $(srcdir)/gdoc -texinfo -function $$i \ $(GDOC_SRC) > texi/$$i.texi && \ echo "ok"; \ done; \ for i in $(GDOC_SRC); do \ BASE=`basename $$i`; \ echo -n "Creating documentation for $$i... " && \ $(srcdir)/gdoc -texinfo $$i > texi/$$BASE.texi && \ echo "ok"; \ done touch $@ .PHONY: compare-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: libtasn1-3.4/doc/gdoc0000775000000000000000000007201112244720630011376 00000000000000eval '(exit $?0)' && eval 'exec perl "$0" ${1+"$@"}' & eval 'exec perl "$0" $argv:q' if 0; ## Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Simon Josefsson ## added -texinfo, -listfunc, -pkg-name ## man page revamp ## various improvements ## Copyright (c) 2001, 2002 Nikos Mavrogiannopoulos ## added -tex ## Copyright (c) 1998 Michael Zucchi ## Copyright (c) 2013 Adam Sampson ## made highlighting not depend on hash order, for Perl 5.18 # 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 . # This will read a C source code file and scan for embedded comments # in the style of gnome comments (+minor extensions - see below). # usage: # gdoc [ -docbook | -html | -text | -man | -tex | -texinfo | -listfunc ] # [ -sourceversion verno ] [ -include file | -includefuncprefix ] # [ -bugsto address ] [ -pkg-name packagename ] # [ -seeinfo infonode ] [ -copyright notice ] [ -verbatimcopying ] # [ -function funcname [ -function funcname ...] ] c file(s)s > outputfile # # Set output format using one of -docbook, -html, -text, -man, -tex, # -texinfo, or -listfunc. Default is man. # # -sourceversion # Version number for source code, e.g. '1.0.4'. Used in 'man' headers. # Defaults to using current date. # # -include FILE # For man pages, mention #include in the synopsis. # # -includefuncprefix # For man pages, mention a #include in the synopsis. # The FILE derived from the function prefix. For example, a # function gss_init_sec_context will generate an include # statement of #include . # # -bugsto address # For man pages, include a section about reporting bugs and mention # the given e-mail address, e.g 'bug-libidn@gnu.org'. # # -pkg-name packagename # For man pages when -bugsto is used, also include help URLs to the # the project's home page. For example, "GNU Libidn". # # -seeinfo infonode # For man pages, include a section that point to an info manual # for more information. # # -copyright notice # For man pages, include a copyright section with the given # notice after a preamble. Use, e.g., '2002, 2003 Simon Josefsson'. # # -verbatimcopying # For man pages, and when the -copyright parameter is used, # add a licensing statement that say verbatim copying is permitted. # # -function funcname # If set, then only generate documentation for the given function(s). All # other functions are ignored. # # c files - list of 'c' files to process # # All output goes to stdout, with errors to stderr. # # format of comments. # In the following table, (...)? signifies optional structure. # (...)* signifies 0 or more structure elements # /** # * function_name(:)? (- short description)? # (* @parameterx: (description of parameter x)?)* # (* a blank line)? # * (Description:)? (Description of function)? # * (Section header: (section description)? )* # (*)?*/ # # So .. the trivial example would be: # # /** # * my_function # **/ # # If the Description: header tag is ommitted, then there must be a blank line # after the last parameter specification. # e.g. # /** # * my_function - does my stuff # * @my_arg: its mine damnit # * # * Does my stuff explained. # */ # # or, could also use: # /** # * my_function - does my stuff # * @my_arg: its mine damnit # * Description: Does my stuff explained. # */ # etc. # # All descriptions can be multiline, apart from the short function description. # # All descriptive text is further processed, scanning for the following special # patterns, which are highlighted appropriately. # # 'funcname()' - function # '$ENVVAR' - environmental variable OBSOLETE (?) # '#struct_name' - name of a structure # '@parameter' - name of a parameter # '%CONST' - name of a constant. # # Extensions for LaTeX: # # 1. the symbol '->' will be replaced with a rightarrow # 2. x^y with ${x}^{y}$. # 3. xxx\: with xxx: use POSIX qw(strftime); # match expressions used to find embedded type information $type_constant = "\\\%([A-Za-z0-9_]+)"; $type_func = "([A-Za-z0-9_]+\\(\\))"; $type_param = '\@([A-Za-z0-9_]+)\s*'; $type_struct = "\\\#([A-Za-z0-9_]+)"; $type_env = "(\\\$[A-Za-z0-9_]+)"; # Output conversion substitutions. # One for each output format # these work fairly well @highlights_html = ( [$type_constant, '"$1"'], [$type_func, '"$1"'], [$type_struct, '"$1"'], [$type_param, '" $1 "'] ); $blankline_html = "

"; @highlights_texinfo = ( [$type_param, '" \@code{$1} "'], [$type_constant, '"\@code{$1} "'], [$type_func, '"\@code{$1} "'], [$type_struct, '"\@code{$1} "'], ); $blankline_texinfo = ""; @highlights_tex = ( [$type_param, '" {\\\bf $1} "'], [$type_constant, '"{\\\it $1}"'], [$type_func, '"{\\\bf $1}"'], [$type_struct, '"{\\\it $1}"'], ); $blankline_tex = "\\\\"; # sgml, docbook format @highlights_sgml = ( [$type_constant, '"$1"'], [$type_func, '"$1"'], [$type_struct, '"$1"'], [$type_env, '"$1"'], [$type_param, '" $1 "'] ); $blankline_sgml = "\n"; # these are pretty rough @highlights_man = ( [$type_constant, '"\\\fB$1\\\fP"'], [$type_func, '"\\\fB$1\\\fP"'], [$type_struct, '"\\\fB$1\\\fP"'], [$type_param, '" \\\fI$1\\\fP "'] ); $blankline_man = ""; # text-mode @highlights_text = ( [$type_constant, '"$1"'], [$type_func, '"$1"'], [$type_struct, '"$1"'], [$type_param, '"$1 "'] ); $blankline_text = ""; my $lineprefix = ""; sub usage { print "Usage: $0 [ -v ] [ -docbook | -html | -text | -man | -tex | -texinfo -listfunc ]\n"; print " [ -sourceversion verno ] [ -include file | -includefuncprefix ]\n"; print " [ -bugsto address ] [ -seeinfo infonode ] [ -copyright notice]\n"; print " [ -verbatimcopying ] [ -pkg-name packagename ]\n"; print " [ -function funcname [ -function funcname ...] ]\n"; print " c source file(s) > outputfile\n"; exit 1; } # read arguments if ($#ARGV==-1) { usage(); } $verbose = 0; $output_mode = "man"; @highlights = @highlights_man; $blankline = $blankline_man; $modulename = "API Documentation"; $sourceversion = strftime "%Y-%m-%d", localtime; $function_only = 0; while ($ARGV[0] =~ m/^-(.*)/) { $cmd = shift @ARGV; if ($cmd eq "-html") { $output_mode = "html"; @highlights = @highlights_html; $blankline = $blankline_html; } elsif ($cmd eq "-man") { $output_mode = "man"; @highlights = @highlights_man; $blankline = $blankline_man; } elsif ($cmd eq "-tex") { $output_mode = "tex"; @highlights = @highlights_tex; $blankline = $blankline_tex; } elsif ($cmd eq "-texinfo") { $output_mode = "texinfo"; @highlights = @highlights_texinfo; $blankline = $blankline_texinfo; } elsif ($cmd eq "-text") { $output_mode = "text"; @highlights = @highlights_text; $blankline = $blankline_text; } elsif ($cmd eq "-docbook") { $output_mode = "sgml"; @highlights = @highlights_sgml; $blankline = $blankline_sgml; } elsif ($cmd eq "-listfunc") { $output_mode = "listfunc"; } elsif ($cmd eq "-module") { # not needed for sgml, inherits from calling document $modulename = shift @ARGV; } elsif ($cmd eq "-sourceversion") { $sourceversion = shift @ARGV; } elsif ($cmd eq "-include") { $include = shift @ARGV; } elsif ($cmd eq "-includefuncprefix") { $includefuncprefix = 1; } elsif ($cmd eq "-bugsto") { $bugsto = shift @ARGV; } elsif ($cmd eq "-pkg-name") { $pkgname = shift @ARGV; } elsif ($cmd eq "-copyright") { $copyright = shift @ARGV; } elsif ($cmd eq "-verbatimcopying") { $verbatimcopying = 1; } elsif ($cmd eq "-seeinfo") { $seeinfo = shift @ARGV; } elsif ($cmd eq "-function") { # to only output specific functions $function_only = 1; $function = shift @ARGV; $function_table{$function} = 1; } elsif ($cmd eq "-v") { $verbose = 1; } elsif (($cmd eq "-h") || ($cmd eq "--help")) { usage(); } } ## # dumps section contents to arrays/hashes intended for that purpose. # sub dump_section { my $name = shift @_; my $contents = join "\n", @_; $name = " $name"; if ($name =~ m/$type_constant/) { $name = $1; # print STDERR "constant section '$1' = '$contents'\n"; $constants{$name} = $contents; } elsif ($name =~ m/$type_param/) { # print STDERR "parameter def '$1' = '$contents'\n"; $name = $1; $parameters{$name} = $contents; } else { # print STDERR "other section '$name' = '$contents'\n"; $name =~ tr/ //d; $sections{$name} = $contents; push @sectionlist, $name; } } ## # output function # # parameters, a hash. # function => "function name" # parameterlist => @list of parameters # parameters => %parameter descriptions # sectionlist => @list of sections # sections => %descriont descriptions # sub just_highlight { my $contents = join "\n", @_; my $line; my $ret = ""; foreach $highlight (@highlights) { my ($pattern, $replace) = @$highlight; #print "scanning pattern $pattern ($replace)\n"; $contents =~ s/$pattern/$replace/gees; } foreach $line (split "\n", $contents) { if ($line eq ""){ $ret = $ret . $lineprefix . $blankline; } else { $ret = $ret . $lineprefix . $line; } $ret = $ret . "\n"; } return $ret; } sub output_highlight { print (just_highlight (@_)); } # output in texinfo sub output_texinfo { my %args = %{$_[0]}; my ($parameter, $section); my $count; print "\@subheading ".$args{'function'}."\n"; print "\@anchor{".$args{'function'}."}\n"; print "\@deftypefun {" . $args{'functiontype'} . "} "; print "{".$args{'function'}."} "; print "("; $count = 0; foreach $parameter (@{$args{'parameterlist'}}) { print $args{'parametertypes'}{$parameter}." \@var{".$parameter."}"; if ($count != $#{$args{'parameterlist'}}) { $count++; print ", "; } } print ")\n"; foreach $parameter (@{$args{'parameterlist'}}) { if ($args{'parameters'}{$parameter}) { print "\@var{".$parameter."}: "; output_highlight($args{'parameters'}{$parameter}); print "\n"; } } foreach $section (@{$args{'sectionlist'}}) { $section =~ s/\@//g; print "\n\@strong{$section:} " if $section ne $section_default; $args{'sections'}{$section} =~ s:([{}]):\@$1:gs; output_highlight($args{'sections'}{$section}); } print "\@end deftypefun\n\n"; } sub output_enum_texinfo { my %args = %{$_[0]}; my ($parameter, $section); my $count; my $name = $args{'enum'}; my $param; my $param2; my $sec; my $check; my $type; print "\n\@c $name\n"; print "\@table \@code\n"; $check=0; foreach $parameter (@{$args{'parameterlist'}}) { $param1 = $parameter; $param1 =~ s/_/_\@-/g; $check = 1; print "\@item ".$param1."\n"; # print "\n"; $param2 = $args{'parameters'}{$parameter}; $out = just_highlight($param2); chomp $out; print $out . "\n"; } print "\@end table\n"; } # output in html sub output_html { my %args = %{$_[0]}; my ($parameter, $section); my $count; print "\n\n 

Function

\n"; print "".$args{'functiontype'}."\n"; print "".$args{'function'}."\n"; print "("; $count = 0; foreach $parameter (@{$args{'parameterlist'}}) { print "".$args{'parametertypes'}{$parameter}." ".$parameter."\n"; if ($count != $#{$args{'parameterlist'}}) { $count++; print ", "; } } print ")\n"; print "

Arguments

\n"; print "
\n"; foreach $parameter (@{$args{'parameterlist'}}) { print "
".$args{'parametertypes'}{$parameter}." ".$parameter."\n"; print "
"; output_highlight($args{'parameters'}{$parameter}); } print "
\n"; foreach $section (@{$args{'sectionlist'}}) { print "

$section

\n"; print "
    \n"; output_highlight($args{'sections'}{$section}); print "
\n"; } print "
\n"; } # output in tex sub output_tex { my %args = %{$_[0]}; my ($parameter, $section); my $count; my $func = $args{'function'}; my $param; my $param2; my $sec; my $check; my $type; $func =~ s/_/\\_/g; print "\n\n\\begin{function}\n"; print "\\functionTitle{". $func . "}\n"; print "\\index{". $func . "}\n"; $type = $args{'functiontype'}; $type =~ s/_/\\_/g; print "{\\it ".$type."}\n"; print "{\\bf ".$func."}\n"; print "("; $count = 0; foreach $parameter (@{$args{'parameterlist'}}) { $param = $args{'parametertypes'}{$parameter}; $param2 = $parameter; $param =~ s/_/\\_/g; $param2 =~ s/_/\\_/g; print "{\\it ".$param."} {\\bf ".$param2."}"; if ($count != $#{$args{'parameterlist'}}) { $count++; print ", "; } } print ")\n"; print "\n\\begin{functionArguments}\n"; $check=0; foreach $parameter (@{$args{'parameterlist'}}) { $param1 = $args{'parametertypes'}{$parameter}; $param1 =~ s/_/\\_/g; $param2 = $parameter; $param2 =~ s/_/\\_/g; $check = 1; print "\\functionArgument {\\it ".$param1."} {\\bf ".$param2."}: \n"; # print "\n"; $param3 = $args{'parameters'}{$parameter}; $param3 =~ s/\#([a-zA-Z\_]+)/{\\it $1}/g; $param3 =~ s/\%([a-zA-Z\_]+)/{\\bf $1}/g; $out = just_highlight($param3); $out =~ s/_/\\_/g; print $out; } if ($check==0) { print "\\item void\n"; } print "\\end{functionArguments}\n"; foreach $section (@{$args{'sectionlist'}}) { $sec = $section; $sec =~ s/_/\\_/g; $sec =~ s/#([a-zA-Z\_]+)/{\\it $1}/g; print "\n\\begin{function${sec}}\n"; $out = $args{'sections'}{$section}; $out =~ s/\#([a-zA-Z\_]+)/{\\it $1}/g; $out =~ s/\%([a-zA-Z\_]+)/{\\bf $1}/g; $out =~ s/\@([a-zA-Z\_]+)/{\\bf $1}/g; $out =~ s/_/\\_\\-/g; $out =~ s/\$/\\\$/g; $out =~ s/#/\\#/g; $out =~ s/\n\n/\n/g; $out =~ s/\\:/:/g; $out =~ s/\-\>/\$\\rightarrow\$/g; $out =~ s/([0-9]+)\^([0-9]+)/\$\{$1\}\^\{$2\}\$/g; print $out; print "\\end{function${sec}}\n"; } print "\\end{function}\n\n"; } sub output_enum_tex { my %args = %{$_[0]}; my ($parameter, $section); my $count; my $name = $args{'enum'}; my $param; my $param2; my $sec; my $check; my $type; print "\n\n\\begin{enum}\n"; $name =~ s/_/\\_/g; print "\\enumTitle{". $name . "}\n"; print "\\index{". $name . "}\n"; print "\n\\begin{enumList}\n"; $check=0; foreach $parameter (@{$args{'parameterlist'}}) { $param1 = $parameter; $param1 =~ s/_/\\_\\-/g; $check = 1; print "\\enumElement{".$param1."}{"; # print "\n"; $param2 = $args{'parameters'}{$parameter}; $param2 =~ s/\#([a-zA-Z\_]+)/{\\it $1}/g; $param2 =~ s/\%([a-zA-Z\_]+)/{\\bf $1}/g; $out = just_highlight($param2); $out =~ s/_/\\_/g; chomp $out; print $out . "}\n"; } print "\\end{enumList}\n"; print "\\end{enum}\n\n"; } # output in sgml DocBook sub output_sgml { my %args = %{$_[0]}; my ($parameter, $section); my $count; my $id; $id = $args{'module'}."-".$args{'function'}; $id =~ s/[^A-Za-z0-9]/-/g; print "\n"; print "\n"; print "".$args{'function'}."\n"; print "\n"; print "\n"; print " ".$args{'function'}."\n"; print " \n"; print " ".$args{'purpose'}."\n"; print " \n"; print "\n"; print "\n"; print " Synopsis\n"; print " \n"; print " ".$args{'functiontype'}." "; print "".$args{'function'}." "; print "\n"; # print "\n"; # print " Synopsis\n"; # print " \n"; # print " ".$args{'functiontype'}." "; # print "".$args{'function'}." "; # print "\n"; $count = 0; if ($#{$args{'parameterlist'}} >= 0) { foreach $parameter (@{$args{'parameterlist'}}) { print " ".$args{'parametertypes'}{$parameter}; print " $parameter\n"; } } else { print " \n"; } print " \n"; print "\n"; # print "\n"; # print parameters print "\n Arguments\n"; # print "\nArguments\n"; if ($#{$args{'parameterlist'}} >= 0) { print " \n"; foreach $parameter (@{$args{'parameterlist'}}) { print " \n $parameter\n"; print " \n \n"; $lineprefix=" "; output_highlight($args{'parameters'}{$parameter}); print " \n \n \n"; } print " \n"; } else { print " \n None\n \n"; } print "\n"; # print out each section $lineprefix=" "; foreach $section (@{$args{'sectionlist'}}) { print "\n $section\n \n"; # print "\n$section\n"; if ($section =~ m/EXAMPLE/i) { print "\n"; } output_highlight($args{'sections'}{$section}); # print ""; if ($section =~ m/EXAMPLE/i) { print "\n"; } print " \n\n"; } print "\n\n"; } ## # output in man sub output_man { my %args = %{$_[0]}; my ($parameter, $section); my $count; print ".\\\" DO NOT MODIFY THIS FILE! It was generated by gdoc.\n"; print ".TH \"$args{'function'}\" 3 \"$args{'sourceversion'}\" \"". $args{'module'} . "\" \"". $args{'module'} . "\"\n"; print ".SH NAME\n"; print $args{'function'}; if ($args{'purpose'}) { print " \\- " . $args{'purpose'} . "\n"; } else { print " \\- API function\n"; } print ".SH SYNOPSIS\n"; print ".B #include <". $args{'include'} . ">\n" if $args{'include'}; print ".B #include <". lc((split /_/, $args{'function'})[0]) . ".h>\n" if $args{'includefuncprefix'}; print ".sp\n"; print ".BI \"".$args{'functiontype'}." ".$args{'function'}."("; $count = 0; foreach $parameter (@{$args{'parameterlist'}}) { print $args{'parametertypes'}{$parameter}." \" ".$parameter." \""; if ($count != $#{$args{'parameterlist'}}) { $count++; print ", "; } } print ");\"\n"; print ".SH ARGUMENTS\n"; foreach $parameter (@{$args{'parameterlist'}}) { print ".IP \"".$args{'parametertypes'}{$parameter}." ".$parameter."\" 12\n"; $param = $args{'parameters'}{$parameter}; $param =~ s/-/\\-/g; output_highlight($param); } foreach $section (@{$args{'sectionlist'}}) { print ".SH \"" . uc($section) . "\"\n"; $sec = $args{'sections'}{$section}; $sec =~ s/-/\\-/g; output_highlight($sec); } if ($args{'bugsto'}) { print ".SH \"REPORTING BUGS\"\n"; print "Report bugs to <". $args{'bugsto'} . ">.\n"; print ".br\n"; print "General guidelines for reporting bugs: http://www.gnu.org/gethelp/\n"; print ".br\n"; if ($args{'pkgname'}) { print $args{'pkgname'} . " home page: " . "http://www.gnu.org/software/" . $args{'module'} . "/\n"; } print "\n"; } if ($args{'copyright'}) { print ".SH COPYRIGHT\n"; print "Copyright \\(co ". $args{'copyright'} . ".\n"; if ($args{'verbatimcopying'}) { print ".br\n"; print "Copying and distribution of this file, with or without modification,\n"; print "are permitted in any medium without royalty provided the copyright\n"; print "notice and this notice are preserved.\n"; } } if ($args{'seeinfo'}) { print ".SH \"SEE ALSO\"\n"; print "The full documentation for\n"; print ".B " . $args{'module'} . "\n"; print "is maintained as a Texinfo manual. If the\n"; print ".B info\n"; print "and\n"; print ".B " . $args{'module'} . "\n"; print "programs are properly installed at your site, the command\n"; print ".IP\n"; print ".B info " . $args{'seeinfo'} . "\n"; print ".PP\n"; print "should give you access to the complete manual.\n"; print "As an alternative you may obtain the manual from:\n"; print ".IP\n"; print ".B http://www.gnu.org/software/" . $args{'module'} . "/manual/\n"; print ".PP\n"; } } sub output_listfunc { my %args = %{$_[0]}; print $args{'function'} . "\n"; } ## # output in text sub output_text { my %args = %{$_[0]}; my ($parameter, $section); print "Function = ".$args{'function'}."\n"; print " return type: ".$args{'functiontype'}."\n\n"; foreach $parameter (@{$args{'parameterlist'}}) { print " ".$args{'parametertypes'}{$parameter}." ".$parameter."\n"; print " -> ".$args{'parameters'}{$parameter}."\n"; } foreach $section (@{$args{'sectionlist'}}) { print " $section:\n"; print " -> "; output_highlight($args{'sections'}{$section}); } } ## # generic output function - calls the right one based # on current output mode. sub output_function { # output_html(@_); eval "output_".$output_mode."(\@_);"; } sub output_enum { eval "output_enum_".$output_mode."(\@_);"; } ## # takes a function prototype and spits out all the details # stored in the global arrays/hsahes. sub dump_function { my $prototype = shift @_; if ($prototype =~ m/^()([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || $prototype =~ m/^(\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || $prototype =~ m/^(\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || $prototype =~ m/^(\w+\s+\w+)\s+([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/ || $prototype =~ m/^(\w+\s+\w+\s*\*)\s*([a-zA-Z0-9_~:]+)\s*\(([^\)]*)\)/) { $return_type = $1; $function_name = $2; $args = $3; # print STDERR "ARGS = '$args'\n"; foreach $arg (split ',', $args) { # strip leading/trailing spaces $arg =~ s/^\s*//; $arg =~ s/\s*$//; # print STDERR "SCAN ARG: '$arg'\n"; @args = split('\s', $arg); # print STDERR " -> @args\n"; $param = pop @args; # print STDERR " -> @args\n"; if ($param =~ m/^(\*+)(.*)/) { $param = $2; push @args, $1; } if ($param =~ m/^(.*)(\[\])$/) { $param = $1; push @args, $2; } # print STDERR " :> @args\n"; $type = join " ", @args; if ((!defined($parameters{$param}) || $parameters{$param} eq "") && $param ne "void") { $parameters{$param} = "-- undescribed --"; print STDERR "warning: $lineno: Function parameter '$param' not described in '$function_name'\n"; } push @parameterlist, $param; $parametertypes{$param} = $type; # print STDERR "param = '$param', type = '$type'\n"; } } else { print STDERR "warning: $lineno: Cannot understand prototype: '$prototype'\n"; return; } if ($function_only==0 || defined($function_table{$function_name})) { output_function({'function' => $function_name, 'module' => $modulename, 'sourceversion' => $sourceversion, 'include' => $include, 'includefuncprefix' => $includefuncprefix, 'bugsto' => $bugsto, 'pkgname' => $pkgname, 'copyright' => $copyright, 'verbatimcopying' => $verbatimcopying, 'seeinfo' => $seeinfo, 'functiontype' => $return_type, 'parameterlist' => \@parameterlist, 'parameters' => \%parameters, 'parametertypes' => \%parametertypes, 'sectionlist' => \@sectionlist, 'sections' => \%sections, 'purpose' => $function_purpose }); } } sub dump_enum { my $prototype = shift @_; if (($prototype =~ m/^\s*typedef\s+enum\s*[a-zA-Z0-9_~:]*\s*\{([\-a-zA-Z0-9_~=,:\s\(\)\<]+)\s*\}\s*([a-zA-Z0-9_]+);.*/)) { # || $prototype =~ m/^\s*enum\s+([a-zA-Z0-9_~:]+).*/) { $args = $1; $name = $2; foreach $arg (split ',', $args) { # strip leading/trailing spaces $arg =~ s/^\s*//; $arg =~ s/\s*$//; $arg =~ s/([A-Za-z0-9_]+)\s*=.*/$1/g; # print STDERR "SCAN ARG: '$arg'\n"; next if $arg eq ''; if ((!defined($parameters{$arg}) || $parameters{$arg} eq "")) { $parameters{$arg} = "-- undescribed --"; print STDERR "warning: $lineno: Enumeration parameter '$arg' not described in '$name'\n"; } push @parameterlist, $arg; # print STDERR "param = '$arg'\n"; } } else { # print STDERR "warning: $lineno: Cannot understand enumeration: '$prototype'\n"; return; } output_enum({'enum' => $name, 'module' => $modulename, 'sourceversion' => $sourceversion, 'include' => $include, 'includefuncprefix' => $includefuncprefix, 'bugsto' => $bugsto, 'pkgname' => $pkgname, 'copyright' => $copyright, 'verbatimcopying' => $verbatimcopying, 'seeinfo' => $seeinfo, 'functiontype' => $return_type, 'parameterlist' => \@parameterlist, 'parameters' => \%parameters, 'parametertypes' => \%parametertypes, 'sectionlist' => \@sectionlist, 'sections' => \%sections, 'purpose' => $function_purpose }); } ###################################################################### # main # states # 0 - normal code # 1 - looking for function name # 2 - scanning field start. # 3 - scanning prototype. $state = 0; $section = ""; $doc_special = "\@\%\$\#"; $doc_start = "^/\\*\\*\$"; $doc_end = "\\*/"; $doc_com = "\\s*\\*\\s*"; $doc_func = $doc_com."(\\w+):?"; $doc_sect = $doc_com."([".$doc_special."[:upper:]][\\w]+):\\s*(.*)"; $doc_content = $doc_com."(.*)"; %constants = (); %parameters = (); @parameterlist = (); %sections = (); @sectionlist = (); $contents = ""; $section_default = "Description"; # default section $section = $section_default; $enum = 0; $lineno = 0; foreach $file (@ARGV) { if (!open(IN,"<$file")) { print STDERR "Error: Cannot open file $file\n"; next; } while ($line = ) { $lineno++; if ($state == 0) { if ($line =~ /$doc_start/o) { $state = 1; # next line is always the function name # print STDERR "XXX: start of doc comment\n"; } } elsif ($state == 1) { # this line is the function name (always) if ($line =~ /$doc_func/o) { $function = $1; $state = 2; # print STDERR "XXX: start of doc comment, looking for prototype\n"; if ($line =~ /-\s*(.*)/) { $function_purpose = $1; } else { $function_purpose = ""; } if ($verbose) { print STDERR "Info($lineno): Scanning doc for $function\n"; } } else { print STDERR "warning: $lineno: Cannot understand $_ on line $lineno", " - I thought it was a doc line\n"; $state = 0; } } elsif ($state == 2) { # look for head: lines, and include content if ($line =~ /$doc_sect/o) { $newsection = $1; $newcontents = $2; if ($contents ne '') { dump_section($section, $contents); $section = $section_default; } $contents = $newcontents; if ($contents ne "") { $contents .= "\n"; } $section = $newsection; } elsif ($line =~ /$doc_end/) { if ($contents ne "") { dump_section($section, $contents); $section = $section_default; $contents = ""; } $prototype = ''; $state = 3; } elsif ($line =~ /$doc_content/) { # miguel-style comment kludge, look for blank lines after # @parameter line to signify start of description if ($1 eq '' && $section =~ m/^@/) { dump_section($section, $contents); $section = $section_default; $contents = ""; } else { $contents .= $1."\n"; } } else { # i dont know - bad line? ignore. print STDERR "warning: $lineno: Bad line: $_"; } } elsif ($state == 3) { # scanning for function { (end of prototype) if ($line =~ /([a-zA-Z\s]+)enum(.*)$/) { $enum = 1; } if ($line =~ m#\s*/\*\s+MACDOC\s*#io) { # do nothing } elsif ($enum == 1 && $line =~ /(\s*\{).*/) { $prototype = "typedef enum {"; } elsif ($line =~ /([^\{]*)/) { $prototype .= $1; } if ($enum == 0 && $line =~ /;/) { $prototype =~ s@/\*.*?\*/@@gos; # strip comments. $prototype =~ s@[\r\n]+@ @gos; # strip newlines/cr's. $prototype =~ s@^ +@@gos; # strip leading spaces dump_function($prototype); $function = ""; %constants = (); %parameters = (); %parametertypes = (); @parameterlist = (); %sections = (); @sectionlist = (); $prototype = ""; $enum = 0; $state = 0; } elsif ($enum == 1 && $line =~ /\}/) { $prototype =~ s@/\*.*?\*/@@gos; # strip comments. $prototype =~ s@[\r\n]+@ @gos; # strip newlines/cr's. $prototype =~ s@^ +@@gos; # strip leading spaces dump_enum($prototype); $function = ""; %constants = (); %parameters = (); %parametertypes = (); @parameterlist = (); %sections = (); @sectionlist = (); $prototype = ""; $enum = 0; $state = 0; } } } } libtasn1-3.4/doc/libtasn1.html0000664000000000000000000033603412244721127013151 00000000000000 GNU Libtasn1 3.4

GNU Libtasn1 3.4

Table of Contents

Next: , Up: (dir)   [Contents][Index]

Libtasn1

This manual is for GNU Libtasn1 (version 3.4, 25 November 2013), which is a library for Abstract Syntax Notation One (ASN.1) and Distinguished Encoding Rules (DER) manipulation.

Copyright © 2001-2013 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.


Next: , Previous: Top, Up: Top   [Contents][Index]

1 Introduction

This document describes the Libtasn1 library that provides Abstract Syntax Notation One (ASN.1, as specified by the X.680 ITU-T recommendation) parsing and structures management, and Distinguished Encoding Rules (DER, as per X.690) encoding and decoding functions.

The main features of this library are:

  • On-line ASN.1 structure management that doesn’t require any C code file generation.
  • Off-line ASN.1 structure management with C code file generation containing an array.
  • Distinguished Encoding Rules (DER) encoding support.
  • No limits for INTEGER and ENUMERATED values.
  • It’s Free Software. Anybody can use, modify, and redistribute the library under the terms of the GNU Lesser General Public License version 2.1 or later. The command line tools, self-tests and build infrastructure are licensed under the GNU General Public License version 3.0 or later.
  • Thread-safety. No global variables are used and multiple library handles and session handles may be used in parallel.
  • Portability. The code should work on all Unix like operating systems, and Windows. The library itself should be portable to any C89 system, not even POSIX is required.

Next: , Previous: Introduction, Up: Top   [Contents][Index]

2 ASN.1 structure handling


2.1 ASN.1 syntax

The parser is case sensitive. The comments begin with -- and end either with another --, or at the end of the respective line, whichever comes first. The C-style /*, */ comments are not supported.

For an example of the syntax, check the pkix.asn file distributed with the library.

ASN.1 definitions must follow the syntax below:

      definitions_name {<object definition>}

      DEFINITIONS <EXPLICIT or IMPLICIT> TAGS ::=

      BEGIN

      <type and constants definitions>

      END

The ::= token must be separate from other elements, so the following declaration is invalid:

   -- INCORRECT
   Version ::=INTEGER

The correct form is:

   Version ::= INTEGER

Here is the list of types that the parser can manage:

  • INTEGER;
  • ENUMERATED;
  • BOOLEAN;
  • OBJECT IDENTIFIER;
  • NULL;
  • BIT STRING;
  • OCTET STRING;
  • UTCTime;
  • GeneralizedTime;
  • GeneralString;
  • NumericString;
  • IA5String;
  • TeletexString;
  • PrintableString;
  • UniversalString;
  • BMPString;
  • UTF8String;
  • VisibleString;
  • SEQUENCE;
  • SEQUENCE OF;
  • SET;
  • SET OF;
  • CHOICE;
  • ANY;
  • ANY DEFINED BY.

This version doesn’t handle the REAL type. It doesn’t support the AUTOMATIC TAGS option, and the EXPORT and IMPORT sections, either.

The SIZE constraints are allowed, but no check is done on them.


2.2 Naming

Consider this definition:

      Example { 1 2 3 4 }

      DEFINITIONS EXPLICIT TAGS ::=

      BEGIN

      Group ::= SEQUENCE {
         id   OBJECT IDENTIFIER,
         value  Value
      }

      Value ::= SEQUENCE {
         value1  INTEGER,
         value2  BOOLEAN
      }

      END

The notation to access the ‘Group’ type of the ‘Example’ definition above is ‘Example.Group’ (as a NUL-terminated string.) Such strings are used in the functions described below.

Others examples:

  • field ‘id’ of the ‘Group’ type: ‘Example.Group.id’;
  • field ‘value1’ of the ‘value’ field of the ‘Group’ type: ‘Example.Group.value.value1’.

Elements of structured types unnamed by the respective definition receive the names ?1, ?2, and so on.

The ?LAST name indicates the last element of a SET OF or SEQUENCE OF.


2.3 Simple parsing

For simple types like OCTET STRING the simple parsing functions listed below may be used instead.


2.4 Library Notes

The header file of this library is libtasn1.h.

The main type used in it is asn1_node, and it’s used to store the ASN.1 definitions and structures (instances).

The NULL constant can be used for the variable initialization. For example:

 asn1_node definitions = NULL;

Some functions require an errorDescription argument of type char *, pointing to a pre-allocated buffer of at least ASN1_MAX_ERROR_DESCRIPTION_SIZE bytes size (e.g., as in ‘char description[ASN1_MAX_ERROR_DESCRIPTION_SIZE];’).

ASN1_MAX_NAME_SIZE is the maximum number of characters allowed for an ASN.1 identifier.


2.5 Future developments

  • Add functions for a C code file generation containing equivalent data structures (not a single array like now).
  • The REAL type.

3 Utilities


3.1 Invoking asn1Parser

asn1Parser reads a single file with ASN.1 definitions and generates a file with an array to use with libtasn1 functions.

Usage:  asn1Parser [options] file

Options:
 -h : shows the help message.
 -v : shows version information and exit.
 -c : checks the syntax only.
 -o file : output file.
 -n name : array name.

3.2 Invoking asn1Coding

asn1Coding generates a DER encoding from a file with ASN.1 definitions and another one with assignments.

The file with assignments must have this syntax:

InstanceName  Asn1Definition

nameString  value

nameString  value
...

To specify the field of a CHOICE to be used, specify its name as a value to the CHOICE element itself. Use '' to denote the root element itself. (as in the example below.)

The output file is a binary file with the DER encoding.

Usage:  asn1Coding [options] file1 file2
 file1 : file with ASN1 definitions.
 file2 : file with assignments.
Options:
 -h : shows the help message.
 -v : shows version information and exit.
 -c : checks the syntax only.
 -o file : output file.

For example, consider an ASN.1 definitions file as follows:

PKIX1 { }

DEFINITIONS IMPLICIT TAGS ::=

BEGIN

Dss-Sig-Value ::= SEQUENCE {
     r       INTEGER,
     s       INTEGER
}

END

And a assignments file as follows:

dp PKIX1.Dss-Sig-Value

r 42
s 47

Running the command below will generate a assign.out file, containing the DER encoding of PKIX1.Dss-Sig-Value.

$ asn1Coding pkix.asn assign.asn1

If the root element is of the CHOICE type, the assignment file may be like (using the types defined in pkix.asn):

elt PKIX1Implicit88.GeneralName

''      dNSName
dNSName example.org

3.3 Invoking asn1Decoding

asn1Decoding generates an ASN.1 structure from a file with ASN.1 definitions and a binary file with a DER encoding.

Usage:  asn1Decoding [options] file1 file2 type
 file1 : file with ASN1 definitions.
 file2 : binary file with a DER encoding.
 type : ASN1 definition name.
Options:
 -h : shows the help message.
 -v : shows version information and exit.
 -o file : output file.

For example, after generating the assign.out file from the example section of the asn1Coding command above, the following invocation will decode the DER data.

$ asn1Decoding pkix.asn assign.out PKIX1.Dss-Sig-Value

Next: , Previous: Utilities, Up: Top   [Contents][Index]

4 Function reference


4.1 ASN.1 schema functions

asn1_parser2tree

Function: int asn1_parser2tree (const char * file, asn1_node * definitions, char * error_desc)

file: specify the path and the name of file that contains ASN.1 declarations.

definitions: return the pointer to the structure created from "file" ASN.1 declarations.

error_desc: return the error description or an empty string if success.

Function used to start the parse algorithm. Creates the structures needed to manage the definitions included in file file.

Returns: ASN1_SUCCESS if the file has a correct syntax and every identifier is known, ASN1_ELEMENT_NOT_EMPTY if definitions not NULL , ASN1_FILE_NOT_FOUND if an error occured while opening file , ASN1_SYNTAX_ERROR if the syntax is not correct, ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier that is not defined, ASN1_NAME_TOO_LONG if in the file there is an identifier whith more than ASN1_MAX_NAME_SIZE characters.

asn1_parser2array

Function: int asn1_parser2array (const char * inputFileName, const char * outputFileName, const char * vectorName, char * error_desc)

inputFileName: specify the path and the name of file that contains ASN.1 declarations.

outputFileName: specify the path and the name of file that will contain the C vector definition.

vectorName: specify the name of the C vector.

error_desc: return the error description or an empty string if success.

Function that generates a C structure from an ASN1 file. Creates a file containing a C vector to use to manage the definitions included in inputFileName file. If inputFileName is "/aa/bb/xx.yy" and outputFileName is NULL , the file created is "/aa/bb/xx_asn1_tab.c". If vectorName is NULL the vector name will be "xx_asn1_tab".

Returns: ASN1_SUCCESS if the file has a correct syntax and every identifier is known, ASN1_FILE_NOT_FOUND if an error occured while opening inputFileName , ASN1_SYNTAX_ERROR if the syntax is not correct, ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier that is not defined, ASN1_NAME_TOO_LONG if in the file there is an identifier whith more than ASN1_MAX_NAME_SIZE characters.


4.2 ASN.1 field functions

asn1_array2tree

Function: int asn1_array2tree (const asn1_static_node * array, asn1_node * definitions, char * errorDescription)

array: specify the array that contains ASN.1 declarations

definitions: return the pointer to the structure created by *ARRAY ASN.1 declarations

errorDescription: return the error description.

Creates the structures needed to manage the ASN.1 definitions. array is a vector created by asn1_parser2array() .

Returns: ASN1_SUCCESS if structure was created correctly, ASN1_ELEMENT_NOT_EMPTY if * definitions not NULL, ASN1_IDENTIFIER_NOT_FOUND if in the file there is an identifier that is not defined (see errorDescription for more information), ASN1_ARRAY_ERROR if the array pointed by array is wrong.

asn1_delete_structure

Function: int asn1_delete_structure (asn1_node * structure)

structure: pointer to the structure that you want to delete.

Deletes the structure * structure . At the end, * structure is set to NULL.

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if * structure was NULL.

asn1_delete_structure2

Function: int asn1_delete_structure2 (asn1_node * structure, unsigned int flags)

structure: pointer to the structure that you want to delete.

flags: additional flags (see ASN1_DELETE_FLAG )

Deletes the structure * structure . At the end, * structure is set to NULL.

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if * structure was NULL.

asn1_delete_element

Function: int asn1_delete_element (asn1_node structure, const char * element_name)

structure: pointer to the structure that contains the element you want to delete.

element_name: element’s name you want to delete.

Deletes the element named * element_name inside * structure .

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if the element_name was not found.

asn1_create_element

Function: int asn1_create_element (asn1_node definitions, const char * source_name, asn1_node * element)

definitions: pointer to the structure returned by "parser_asn1" function

source_name: the name of the type of the new structure (must be inside p_structure).

element: pointer to the structure created.

Creates a structure of type source_name . Example using "pkix.asn":

rc = asn1_create_element(cert_def, "PKIX1.Certificate", certptr);

Returns: ASN1_SUCCESS if creation OK, ASN1_ELEMENT_NOT_FOUND if source_name is not known.

asn1_print_structure

Function: void asn1_print_structure (FILE * out, asn1_node structure, const char * name, int mode)

out: pointer to the output file (e.g. stdout).

structure: pointer to the structure that you want to visit.

name: an element of the structure

mode: specify how much of the structure to print, can be ASN1_PRINT_NAME , ASN1_PRINT_NAME_TYPE , ASN1_PRINT_NAME_TYPE_VALUE , or ASN1_PRINT_ALL .

Prints on the out file descriptor the structure’s tree starting from the name element inside the structure structure .

asn1_number_of_elements

Function: int asn1_number_of_elements (asn1_node element, const char * name, int * num)

element: pointer to the root of an ASN1 structure.

name: the name of a sub-structure of ROOT.

num: pointer to an integer where the result will be stored

Counts the number of elements of a sub-structure called NAME with names equal to "?1","?2", ...

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if name is not known, ASN1_GENERIC_ERROR if pointer num is NULL .

asn1_find_structure_from_oid

Function: const char * asn1_find_structure_from_oid (asn1_node definitions, const char * oidValue)

definitions: ASN1 definitions

oidValue: value of the OID to search (e.g. "1.2.3.4").

Search the structure that is defined just after an OID definition.

Returns: NULL when oidValue not found, otherwise the pointer to a constant string that contains the element name defined just after the OID.

asn1_copy_node

Function: int asn1_copy_node (asn1_node dst, const char * dst_name, asn1_node src, const char * src_name)

dst: Destination asn1_node node.

dst_name: Field name in destination node.

src: Source asn1_node node.

src_name: Field name in source node.

Create a deep copy of a asn1_node variable.

Returns: Return ASN1_SUCCESS on success.

asn1_write_value

Function: int asn1_write_value (asn1_node node_root, const char * name, const void * ivalue, int len)

node_root: pointer to a structure

name: the name of the element inside the structure that you want to set.

ivalue: vector used to specify the value to set. If len is >0, VALUE must be a two’s complement form integer. if len=0 *VALUE must be a null terminated string with an integer value.

len: number of bytes of *value to use to set the value: value[0]..value[len-1] or 0 if value is a null terminated string

Set the value of one element inside a structure.

If an element is OPTIONAL and you want to delete it, you must use the value=NULL and len=0. Using "pkix.asn":

result=asn1_write_value(cert, "tbsCertificate.issuerUniqueID", NULL, 0);

Description for each type:

INTEGER: VALUE must contain a two’s complement form integer.

value[0]=0xFF , len=1 -> integer=-1. value[0]=0xFF value[1]=0xFF , len=2 -> integer=-1. value[0]=0x01 , len=1 -> integer= 1. value[0]=0x00 value[1]=0x01 , len=2 -> integer= 1. value="123" , len=0 -> integer= 123.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE must be the null terminated string "TRUE" or "FALSE" and LEN != 0.

value="TRUE" , len=1 -> boolean=TRUE. value="FALSE" , len=1 -> boolean=FALSE.

OBJECT IDENTIFIER: VALUE must be a null terminated string with each number separated by a dot (e.g. "1.2.3.543.1"). LEN != 0.

value="1 2 840 10040 4 3" , len=1 -> OID=dsa-with-sha.

UTCTime: VALUE must be a null terminated string in one of these formats: "YYMMDDhhmmssZ", "YYMMDDhhmmssZ", "YYMMDDhhmmss+hh’mm’", "YYMMDDhhmmss-hh’mm’", "YYMMDDhhmm+hh’mm’", or "YYMMDDhhmm-hh’mm’". LEN != 0.

value="9801011200Z" , len=1 -> time=Jannuary 1st, 1998 at 12h 00m Greenwich Mean Time

GeneralizedTime: VALUE must be in one of this format: "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.sZ", "YYYYMMDDhhmmss.s+hh’mm’", "YYYYMMDDhhmmss.s-hh’mm’", "YYYYMMDDhhmm+hh’mm’", or "YYYYMMDDhhmm-hh’mm’" where ss.s indicates the seconds with any precision like "10.1" or "01.02". LEN != 0

value="2001010112001.12-0700" , len=1 -> time=Jannuary 1st, 2001 at 12h 00m 01.12s Pacific Daylight Time

OCTET STRING: VALUE contains the octet string and LEN is the number of octets.

value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes octet string

GeneralString: VALUE contains the generalstring and LEN is the number of octets.

value="$\backslash$x01$\backslash$x02$\backslash$x03" , len=3 -> three bytes generalstring

BIT STRING: VALUE contains the bit string organized by bytes and LEN is the number of bits.

value="$\backslash$xCF" , len=6 -> bit string="110011" (six bits)

CHOICE: if NAME indicates a choice type, VALUE must specify one of the alternatives with a null terminated string. LEN != 0. Using "pkix.asn"\:

result=asn1_write_value(cert, "certificate1.tbsCertificate.subject", "rdnSequence", 1);

ANY: VALUE indicates the der encoding of a structure. LEN != 0.

SEQUENCE OF: VALUE must be the null terminated string "NEW" and LEN != 0. With this instruction another element is appended in the sequence. The name of this element will be "?1" if it’s the first one, "?2" for the second and so on.

Using "pkix.asn"\:

result=asn1_write_value(cert, "certificate1.tbsCertificate.subject.rdnSequence", "NEW", 1);

SET OF: the same as SEQUENCE OF. Using "pkix.asn":

result=asn1_write_value(cert, "tbsCertificate.subject.rdnSequence.?LAST", "NEW", 1);

Returns: ASN1_SUCCESS if the value was set, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, and ASN1_VALUE_NOT_VALID if ivalue has a wrong format.

asn1_read_value

Function: int asn1_read_value (asn1_node root, const char * name, void * ivalue, int * len)

root: pointer to a structure.

name: the name of the element inside a structure that you want to read.

ivalue: vector that will contain the element’s content, must be a pointer to memory cells already allocated.

len: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value.

Returns the value of one element inside a structure.

If an element is OPTIONAL and the function "read_value" returns ASN1_ELEMENT_NOT_FOUND , it means that this element wasn’t present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on.

INTEGER: VALUE will contain a two’s complement form integer.

integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6.

OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1").

LEN = strlen(VALUE)+1

UTCTime: VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh’mm’" or "YYMMDDhhmmss-hh’mm’". LEN=strlen(VALUE)+1.

GeneralizedTime: VALUE will be a null terminated string in the same format used to set the value.

OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets.

GeneralString: VALUE will contain the generalstring and LEN will be the number of octets.

BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits.

CHOICE: If NAME indicates a choice type, VALUE will specify the alternative selected.

ANY: If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used.

Returns: ASN1_SUCCESS if value is returned, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, ASN1_VALUE_NOT_FOUND if there isn’t any value for the element selected, and ASN1_MEM_ERROR if The value vector isn’t big enough to store the result, and in this case len will contain the number of bytes needed.

asn1_read_value_type

Function: int asn1_read_value_type (asn1_node root, const char * name, void * ivalue, int * len, unsigned int * etype)

root: pointer to a structure.

name: the name of the element inside a structure that you want to read.

ivalue: vector that will contain the element’s content, must be a pointer to memory cells already allocated.

len: number of bytes of *value: value[0]..value[len-1]. Initialy holds the sizeof value.

etype: The type of the value read (ASN1_ETYPE)

Returns the value of one element inside a structure.

If an element is OPTIONAL and the function "read_value" returns ASN1_ELEMENT_NOT_FOUND , it means that this element wasn’t present in the der encoding that created the structure. The first element of a SEQUENCE_OF or SET_OF is named "?1". The second one "?2" and so on.

INTEGER: VALUE will contain a two’s complement form integer.

integer=-1 -> value[0]=0xFF , len=1. integer=1 -> value[0]=0x01 , len=1.

ENUMERATED: As INTEGER (but only with not negative numbers).

BOOLEAN: VALUE will be the null terminated string "TRUE" or "FALSE" and LEN=5 or LEN=6.

OBJECT IDENTIFIER: VALUE will be a null terminated string with each number separated by a dot (i.e. "1.2.3.543.1").

LEN = strlen(VALUE)+1

UTCTime: VALUE will be a null terminated string in one of these formats: "YYMMDDhhmmss+hh’mm’" or "YYMMDDhhmmss-hh’mm’". LEN=strlen(VALUE)+1.

GeneralizedTime: VALUE will be a null terminated string in the same format used to set the value.

OCTET STRING: VALUE will contain the octet string and LEN will be the number of octets.

GeneralString: VALUE will contain the generalstring and LEN will be the number of octets.

BIT STRING: VALUE will contain the bit string organized by bytes and LEN will be the number of bits.

CHOICE: If NAME indicates a choice type, VALUE will specify the alternative selected.

ANY: If NAME indicates an any type, VALUE will indicate the DER encoding of the structure actually used.

Returns: ASN1_SUCCESS if value is returned, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, ASN1_VALUE_NOT_FOUND if there isn’t any value for the element selected, and ASN1_MEM_ERROR if The value vector isn’t big enough to store the result, and in this case len will contain the number of bytes needed.

asn1_read_tag

Function: int asn1_read_tag (asn1_node root, const char * name, int * tagValue, int * classValue)

root: pointer to a structure

name: the name of the element inside a structure.

tagValue: variable that will contain the TAG value.

classValue: variable that will specify the TAG type.

Returns the TAG and the CLASS of one element inside a structure. CLASS can have one of these constants: ASN1_CLASS_APPLICATION , ASN1_CLASS_UNIVERSAL , ASN1_CLASS_PRIVATE or ASN1_CLASS_CONTEXT_SPECIFIC .

Returns: ASN1_SUCCESS if successful, ASN1_ELEMENT_NOT_FOUND if name is not a valid element.

asn1_read_node_value

Function: int asn1_read_node_value (asn1_node node, asn1_data_node_st * data)

node: pointer to a node.

data: a point to a asn1_data_node_st

Returns the value a data node inside a asn1_node structure. The data returned should be handled as constant values.

Returns: ASN1_SUCCESS if the node exists.


4.3 DER functions

asn1_length_der

Function: void asn1_length_der (unsigned long int len, unsigned char * der, int * der_len)

len: value to convert.

der: buffer to hold the returned encoding (may be NULL ).

der_len: number of meaningful bytes of ANS (der[0]..der[der_len-1]).

Creates the DER encoding of the provided length value. The der buffer must have enough room for the output. The maximum length this function will encode is ASN1_MAX_LENGTH_SIZE .

To know the size of the DER encoding use a NULL value for der .

asn1_octet_der

Function: void asn1_octet_der (const unsigned char * str, int str_len, unsigned char * der, int * der_len)

str: the input data.

str_len: STR length (str[0]..str[*str_len-1]).

der: encoded string returned.

der_len: number of meaningful bytes of DER (der[0]..der[der_len-1]).

Creates a length-value DER encoding for the input data. The DER encoding of the input data will be placed in the der variable.

Note that the OCTET STRING tag is not included in the output.

This function does not return any value because it is expected that der_len will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using asn1_length_der() .

asn1_encode_simple_der

Function: int asn1_encode_simple_der (unsigned int etype, const unsigned char * str, unsigned int str_len, unsigned char * tl, unsigned int * tl_len)

etype: The type of the string to be encoded (ASN1_ETYPE_)

str: the string data.

str_len: the string length

tl: the encoded tag and length

tl_len: the bytes of the tl field

Creates the DER encoding for various simple ASN.1 types like strings etc. It stores the tag and length in tl , which should have space for at least ASN1_MAX_TL_SIZE bytes. Initially tl_len should contain the size of tl .

The complete DER encoding should consist of the value in tl appended with the provided str .

Returns: ASN1_SUCCESS if successful or an error value.

asn1_bit_der

Function: void asn1_bit_der (const unsigned char * str, int bit_len, unsigned char * der, int * der_len)

str: BIT string.

bit_len: number of meaningful bits in STR.

der: string returned.

der_len: number of meaningful bytes of DER (der[0]..der[ans_len-1]).

Creates a length-value DER encoding for the input data as it would have been for a BIT STRING. The DER encoded data will be copied in der .

Note that the BIT STRING tag is not included in the output.

This function does not return any value because it is expected that der_len will contain enough bytes to store the string plus the DER encoding. The DER encoding size can be obtained using asn1_length_der() .

asn1_der_coding

Function: int asn1_der_coding (asn1_node element, const char * name, void * ider, int * len, char * ErrorDescription)

element: pointer to an ASN1 element

name: the name of the structure you want to encode (it must be inside *POINTER).

ider: vector that will contain the DER encoding. DER must be a pointer to memory cells already allocated.

len: number of bytes of * ider : ider [0].. ider [len-1], Initialy holds the sizeof of der vector.

ErrorDescription: return the error description or an empty string if success.

Creates the DER encoding for the NAME structure (inside *POINTER structure).

Returns: ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if name is not a valid element, ASN1_VALUE_NOT_FOUND if there is an element without a value, ASN1_MEM_ERROR if the ider vector isn’t big enough and in this case len will contain the length needed.

asn1_get_length_der

Function: long asn1_get_length_der (const unsigned char * der, int der_len, int * len)

der: DER data to decode.

der_len: Length of DER data to decode.

len: Output variable containing the length of the DER length field.

Extract a length field from DER data.

Returns: Return the decoded length value, or -1 on indefinite length, or -2 when the value was too big to fit in a int, or -4 when the decoded length value plus len would exceed der_len .

asn1_get_tag_der

Function: int asn1_get_tag_der (const unsigned char * der, int der_len, unsigned char * cls, int * len, unsigned long * tag)

der: DER data to decode.

der_len: Length of DER data to decode.

cls: Output variable containing decoded class.

len: Output variable containing the length of the DER TAG data.

tag: Output variable containing the decoded tag.

Decode the class and TAG from DER code.

Returns: Returns ASN1_SUCCESS on success, or an error.

asn1_get_length_ber

Function: long asn1_get_length_ber (const unsigned char * ber, int ber_len, int * len)

ber: BER data to decode.

ber_len: Length of BER data to decode.

len: Output variable containing the length of the BER length field.

Extract a length field from BER data. The difference to asn1_get_length_der() is that this function will return a length even if the value has indefinite encoding.

Returns: Return the decoded length value, or negative value when the value was too big.

Since: 2.0

asn1_get_octet_der

Function: int asn1_get_octet_der (const unsigned char * der, int der_len, int * ret_len, unsigned char * str, int str_size, int * str_len)

der: DER data to decode containing the OCTET SEQUENCE.

der_len: Length of DER data to decode.

ret_len: Output variable containing the length of the DER data.

str: Pre-allocated output buffer to put decoded OCTET SEQUENCE in.

str_size: Length of pre-allocated output buffer.

str_len: Output variable containing the length of the OCTET SEQUENCE.

Extract an OCTET SEQUENCE from DER data.

Returns: Returns ASN1_SUCCESS on success, or an error.

asn1_get_bit_der

Function: int asn1_get_bit_der (const unsigned char * der, int der_len, int * ret_len, unsigned char * str, int str_size, int * bit_len)

der: DER data to decode containing the BIT SEQUENCE.

der_len: Length of DER data to decode.

ret_len: Output variable containing the length of the DER data.

str: Pre-allocated output buffer to put decoded BIT SEQUENCE in.

str_size: Length of pre-allocated output buffer.

bit_len: Output variable containing the size of the BIT SEQUENCE.

Extract a BIT SEQUENCE from DER data.

Returns: Return ASN1_SUCCESS on success, or an error.

asn1_der_decoding

Function: int asn1_der_decoding (asn1_node * element, const void * ider, int len, char * errorDescription)

element: pointer to an ASN1 structure.

ider: vector that contains the DER encoding.

len: number of bytes of * ider : ider [0].. ider [len-1].

errorDescription: null-terminated string contains details when an error occurred.

Fill the structure * ELEMENT with values of a DER encoding string. The structure must just be created with function asn1_create_element() . If an error occurs during the decoding procedure, the * ELEMENT is deleted and set equal to NULL .

Returns: ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is NULL , and ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn’t match the structure name (* ELEMENT deleted).

asn1_der_decoding_element

Function: int asn1_der_decoding_element (asn1_node * structure, const char * elementName, const void * ider, int len, char * errorDescription)

structure: pointer to an ASN1 structure

elementName: name of the element to fill

ider: vector that contains the DER encoding of the whole structure.

len: number of bytes of *der: der[0]..der[len-1]

errorDescription: null-terminated string contains details when an error occurred.

Fill the element named ELEMENTNAME with values of a DER encoding string. The structure must just be created with function asn1_create_element() . The DER vector must contain the encoding string of the whole STRUCTURE . If an error occurs during the decoding procedure, the * STRUCTURE is deleted and set equal to NULL .

Returns: ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is NULL or elementName == NULL, and ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn’t match the structure structure (*ELEMENT deleted).

asn1_der_decoding_startEnd

Function: int asn1_der_decoding_startEnd (asn1_node element, const void * ider, int len, const char * name_element, int * start, int * end)

element: pointer to an ASN1 element

ider: vector that contains the DER encoding.

len: number of bytes of * ider : ider [0].. ider [len-1]

name_element: an element of NAME structure.

start: the position of the first byte of NAME_ELEMENT decoding ( ider [*start])

end: the position of the last byte of NAME_ELEMENT decoding ( ider [*end])

Find the start and end point of an element in a DER encoding string. I mean that if you have a der encoding and you have already used the function asn1_der_decoding() to fill a structure, it may happen that you want to find the piece of string concerning an element of the structure.

One example is the sequence "tbsCertificate" inside an X509 certificate.

Returns: ASN1_SUCCESS if DER encoding OK, ASN1_ELEMENT_NOT_FOUND if ELEMENT is asn1_node EMPTY or name_element is not a valid element, ASN1_TAG_ERROR or ASN1_DER_ERROR if the der encoding doesn’t match the structure ELEMENT.

asn1_expand_any_defined_by

Function: int asn1_expand_any_defined_by (asn1_node definitions, asn1_node * element)

definitions: ASN1 definitions

element: pointer to an ASN1 structure

Expands every "ANY DEFINED BY" element of a structure created from a DER decoding process (asn1_der_decoding function). The element ANY must be defined by an OBJECT IDENTIFIER. The type used to expand the element ANY is the first one following the definition of the actual value of the OBJECT IDENTIFIER.

Returns: ASN1_SUCCESS if Substitution OK, ASN1_ERROR_TYPE_ANY if some "ANY DEFINED BY" element couldn’t be expanded due to a problem in OBJECT_ID -> TYPE association, or other error codes depending on DER decoding.

asn1_expand_octet_string

Function: int asn1_expand_octet_string (asn1_node definitions, asn1_node * element, const char * octetName, const char * objectName)

definitions: ASN1 definitions

element: pointer to an ASN1 structure

octetName: name of the OCTECT STRING field to expand.

objectName: name of the OBJECT IDENTIFIER field to use to define the type for expansion.

Expands an "OCTET STRING" element of a structure created from a DER decoding process (the asn1_der_decoding() function). The type used for expansion is the first one following the definition of the actual value of the OBJECT IDENTIFIER indicated by OBJECTNAME.

Returns: ASN1_SUCCESS if substitution OK, ASN1_ELEMENT_NOT_FOUND if objectName or octetName are not correct, ASN1_VALUE_NOT_VALID if it wasn’t possible to find the type to use for expansion, or other errors depending on DER decoding.

asn1_decode_simple_der

Function: int asn1_decode_simple_der (unsigned int etype, const unsigned char * der, unsigned int der_len, const unsigned char ** str, unsigned int * str_len)

etype: The type of the string to be encoded (ASN1_ETYPE_)

der: the encoded string

der_len: the bytes of the encoded string

str: a pointer to the data

str_len: the length of the data

Decodes a simple DER encoded type (e.g. a string, which is not constructed). The output is a pointer inside the der .

Returns: ASN1_SUCCESS if successful or an error value.


4.4 Error handling functions

asn1_perror

Function: void asn1_perror (int error)

error: is an error returned by a libtasn1 function.

Prints a string to stderr with a description of an error. This function is like perror() . The only difference is that it accepts an error returned by a libtasn1 function.

Since: 1.6

asn1_strerror

Function: const char * asn1_strerror (int error)

error: is an error returned by a libtasn1 function.

Returns a string with a description of an error. This function is similar to strerror. The only difference is that it accepts an error (number) returned by a libtasn1 function.

Returns: Pointer to static zero-terminated string describing error code.

Since: 1.6


4.5 Auxilliary functions

asn1_find_node

Function: asn1_node asn1_find_node (asn1_node pointer, const char * name)

pointer: NODE_ASN element pointer.

name: null terminated string with the element’s name to find.

Searches for an element called name starting from pointer . The name is composed by differents identifiers separated by dots. When * pointer has a name, the first identifier must be the name of * pointer , otherwise it must be the name of one child of * pointer .

Returns: the search result, or NULL if not found.

asn1_check_version

Function: const char * asn1_check_version (const char * req_version)

req_version: Required version number, or NULL .

Check that the version of the library is at minimum the requested one and return the version string; return NULL if the condition is not satisfied. If a NULL is passed to this function, no check is done, but the version string is simply returned.

See ASN1_VERSION for a suitable req_version string.

Returns: Version string of run-time library, or NULL if the run-time library does not meet the required version number.


Next: , Previous: Function reference, Up: Top   [Contents][Index]

Appendix A Copying Information


A.1 GNU Free Documentation License

Version 1.3, 3 November 2008
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
http://fsf.org/

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
  1. PREAMBLE

    The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

    This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

    We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

  2. APPLICABILITY AND DEFINITIONS

    This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

    A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

    A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

    The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

    The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

    A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not “Transparent” is called “Opaque”.

    Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

    The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.

    The “publisher” means any person or entity that distributes copies of the Document to the public.

    A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as “Acknowledgements”, “Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a section “Entitled XYZ” according to this definition.

    The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

  3. VERBATIM COPYING

    You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

    You may also lend copies, under the same conditions stated above, and you may publicly display copies.

  4. COPYING IN QUANTITY

    If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

    If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

    If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

    It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

  5. MODIFICATIONS

    You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

    1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
    2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
    3. State on the Title page the name of the publisher of the Modified Version, as the publisher.
    4. Preserve all the copyright notices of the Document.
    5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
    6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
    7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice.
    8. Include an unaltered copy of this License.
    9. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
    10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
    12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
    13. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version.
    14. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section.
    15. Preserve any Warranty Disclaimers.

    If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles.

    You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

    You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

    The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

  6. COMBINING DOCUMENTS

    You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

    The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

    In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled “History”; likewise combine any sections Entitled “Acknowledgements”, and any sections Entitled “Dedications”. You must delete all sections Entitled “Endorsements.”

  7. COLLECTIONS OF DOCUMENTS

    You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

    You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

  8. AGGREGATION WITH INDEPENDENT WORKS

    A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

    If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

  9. TRANSLATION

    Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

    If a section in the Document is Entitled “Acknowledgements”, “Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

  10. TERMINATION

    You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.

    However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

    Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

    Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

  11. FUTURE REVISIONS OF THIS LICENSE

    The Free Software Foundation may publish new, revised versions of the GNU Free Documentation 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. See http://www.gnu.org/copyleft/.

    Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

  12. RELICENSING

    “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A “Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site.

    “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.

    “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document.

    An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.

    The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

  Copyright (C)  year  your name.
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3
  or any later version published by the Free Software Foundation;
  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
  Texts.  A copy of the license is included in the section entitled ``GNU
  Free Documentation License''.

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the “with…Texts.” line with this:

    with the Invariant Sections being list their titles, with
    the Front-Cover Texts being list, and with the Back-Cover Texts
    being list.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.


Concept Index

Jump to:   A   F   H   M   P   S   T  
Index Entry  Section

A
ASN.1 schema: ASN.1 syntax
asn1Coding program: Invoking asn1Coding
asn1Decoding program: Invoking asn1Decoding
asn1Parser program: Invoking asn1Parser

F
FDL, GNU Free Documentation License: GNU Free Documentation License
Future developments: Future developments

H
Header file libtasn1.h: Library Notes

M
Main type asn1_node: Library Notes

P
Porting: Introduction

S
Supported ASN.1 types, list of: ASN.1 syntax

T
threads: Introduction

Jump to:   A   F   H   M   P   S   T  

Previous: Concept Index, Up: Top   [Contents][Index]

Function and Data Index

Jump to:   A  
Index Entry  Section

A
asn1_array2tree: ASN.1 field functions
asn1_bit_der: DER functions
asn1_check_version: Auxilliary functions
asn1_copy_node: ASN.1 field functions
asn1_create_element: ASN.1 field functions
asn1_decode_simple_der: DER functions
asn1_delete_element: ASN.1 field functions
asn1_delete_structure: ASN.1 field functions
asn1_delete_structure2: ASN.1 field functions
asn1_der_coding: DER functions
asn1_der_decoding: DER functions
asn1_der_decoding_element: DER functions
asn1_der_decoding_startEnd: DER functions
asn1_encode_simple_der: DER functions
asn1_expand_any_defined_by: DER functions
asn1_expand_octet_string: DER functions
asn1_find_node: Auxilliary functions
asn1_find_structure_from_oid: ASN.1 field functions
asn1_get_bit_der: DER functions
asn1_get_length_ber: DER functions
asn1_get_length_der: DER functions
asn1_get_octet_der: DER functions
asn1_get_tag_der: DER functions
asn1_length_der: DER functions
asn1_number_of_elements: ASN.1 field functions
asn1_octet_der: DER functions
asn1_parser2array: ASN.1 schema functions
asn1_parser2tree: ASN.1 schema functions
asn1_perror: Error handling functions
asn1_print_structure: ASN.1 field functions
asn1_read_node_value: ASN.1 field functions
asn1_read_tag: ASN.1 field functions
asn1_read_value: ASN.1 field functions
asn1_read_value_type: ASN.1 field functions
asn1_strerror: Error handling functions
asn1_write_value: ASN.1 field functions

Jump to:   A  

libtasn1-3.4/doc/cyclo/0000775000000000000000000000000012244722065011730 500000000000000libtasn1-3.4/doc/cyclo/Makefile.in0000664000000000000000000010244312244721750013721 00000000000000# Makefile.in generated by automake 1.13.4 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 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@ # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 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 = : build_triplet = @build@ host_triplet = @host@ subdir = doc/cyclo DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/lib/glm4/gnulib-comp.m4 \ $(top_srcdir)/lib/glm4/ld-version-script.m4 \ $(top_srcdir)/lib/glm4/string_h.m4 \ $(top_srcdir)/lib/glm4/strverscmp.m4 \ $(top_srcdir)/lib/glm4/visibility.m4 \ $(top_srcdir)/gl/m4/00gnulib.m4 \ $(top_srcdir)/gl/m4/autobuild.m4 \ $(top_srcdir)/gl/m4/clock_time.m4 \ $(top_srcdir)/gl/m4/errno_h.m4 \ $(top_srcdir)/gl/m4/extensions.m4 \ $(top_srcdir)/gl/m4/extern-inline.m4 \ $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ $(top_srcdir)/gl/m4/ftell.m4 $(top_srcdir)/gl/m4/ftello.m4 \ $(top_srcdir)/gl/m4/getopt.m4 $(top_srcdir)/gl/m4/gettime.m4 \ $(top_srcdir)/gl/m4/gettimeofday.m4 \ $(top_srcdir)/gl/m4/gnulib-common.m4 \ $(top_srcdir)/gl/m4/gnulib-comp.m4 \ $(top_srcdir)/gl/m4/include_next.m4 \ $(top_srcdir)/gl/m4/largefile.m4 \ $(top_srcdir)/gl/m4/longlong.m4 $(top_srcdir)/gl/m4/lseek.m4 \ $(top_srcdir)/gl/m4/malloc.m4 \ $(top_srcdir)/gl/m4/manywarnings.m4 \ $(top_srcdir)/gl/m4/msvc-inval.m4 \ $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ $(top_srcdir)/gl/m4/multiarch.m4 \ $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ $(top_srcdir)/gl/m4/read-file.m4 \ $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ $(top_srcdir)/gl/m4/stdarg.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdio_h.m4 \ $(top_srcdir)/gl/m4/stdlib_h.m4 \ $(top_srcdir)/gl/m4/sys_socket_h.m4 \ $(top_srcdir)/gl/m4/sys_stat_h.m4 \ $(top_srcdir)/gl/m4/sys_time_h.m4 \ $(top_srcdir)/gl/m4/sys_types_h.m4 \ $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/timespec.m4 \ $(top_srcdir)/gl/m4/unistd_h.m4 \ $(top_srcdir)/gl/m4/valgrind-tests.m4 \ $(top_srcdir)/gl/m4/version-etc.m4 \ $(top_srcdir)/gl/m4/warn-on-use.m4 \ $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_t.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/m4/update-header-version.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/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) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ AR = @AR@ ARFLAGS = @ARFLAGS@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CFLAG_VISIBILITY = @CFLAG_VISIBILITY@ CONFIG_INCLUDE = @CONFIG_INCLUDE@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ ENOLINK_VALUE = @ENOLINK_VALUE@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ ERRNO_H = @ERRNO_H@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETOPT_H = @GETOPT_H@ GNULIB_ATOLL = @GNULIB_ATOLL@ GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ GNULIB_CHDIR = @GNULIB_CHDIR@ GNULIB_CHOWN = @GNULIB_CHOWN@ GNULIB_CLOSE = @GNULIB_CLOSE@ GNULIB_DPRINTF = @GNULIB_DPRINTF@ GNULIB_DUP = @GNULIB_DUP@ GNULIB_DUP2 = @GNULIB_DUP2@ GNULIB_DUP3 = @GNULIB_DUP3@ GNULIB_ENVIRON = @GNULIB_ENVIRON@ GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ GNULIB_FCHDIR = @GNULIB_FCHDIR@ GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ GNULIB_FCLOSE = @GNULIB_FCLOSE@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ GNULIB_FDOPEN = @GNULIB_FDOPEN@ GNULIB_FFLUSH = @GNULIB_FFLUSH@ GNULIB_FFSL = @GNULIB_FFSL@ GNULIB_FFSLL = @GNULIB_FFSLL@ GNULIB_FGETC = @GNULIB_FGETC@ GNULIB_FGETS = @GNULIB_FGETS@ GNULIB_FOPEN = @GNULIB_FOPEN@ GNULIB_FPRINTF = @GNULIB_FPRINTF@ GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ GNULIB_FPURGE = @GNULIB_FPURGE@ GNULIB_FPUTC = @GNULIB_FPUTC@ GNULIB_FPUTS = @GNULIB_FPUTS@ GNULIB_FREAD = @GNULIB_FREAD@ GNULIB_FREOPEN = @GNULIB_FREOPEN@ GNULIB_FSCANF = @GNULIB_FSCANF@ GNULIB_FSEEK = @GNULIB_FSEEK@ GNULIB_FSEEKO = @GNULIB_FSEEKO@ GNULIB_FSTAT = @GNULIB_FSTAT@ GNULIB_FSTATAT = @GNULIB_FSTATAT@ GNULIB_FSYNC = @GNULIB_FSYNC@ GNULIB_FTELL = @GNULIB_FTELL@ GNULIB_FTELLO = @GNULIB_FTELLO@ GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ GNULIB_FWRITE = @GNULIB_FWRITE@ GNULIB_GETC = @GNULIB_GETC@ GNULIB_GETCHAR = @GNULIB_GETCHAR@ GNULIB_GETCWD = @GNULIB_GETCWD@ GNULIB_GETDELIM = @GNULIB_GETDELIM@ GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ GNULIB_GETLINE = @GNULIB_GETLINE@ GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ GNULIB_GRANTPT = @GNULIB_GRANTPT@ GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ GNULIB_ISATTY = @GNULIB_ISATTY@ GNULIB_LCHMOD = @GNULIB_LCHMOD@ GNULIB_LCHOWN = @GNULIB_LCHOWN@ GNULIB_LINK = @GNULIB_LINK@ GNULIB_LINKAT = @GNULIB_LINKAT@ GNULIB_LSEEK = @GNULIB_LSEEK@ GNULIB_LSTAT = @GNULIB_LSTAT@ GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ GNULIB_MBSCHR = @GNULIB_MBSCHR@ GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ GNULIB_MBSLEN = @GNULIB_MBSLEN@ GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ GNULIB_MBSSEP = @GNULIB_MBSSEP@ GNULIB_MBSSPN = @GNULIB_MBSSPN@ GNULIB_MBSSTR = @GNULIB_MBSSTR@ GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ GNULIB_MBTOWC = @GNULIB_MBTOWC@ GNULIB_MEMCHR = @GNULIB_MEMCHR@ GNULIB_MEMMEM = @GNULIB_MEMMEM@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ GNULIB_MKFIFO = @GNULIB_MKFIFO@ GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ GNULIB_MKNOD = @GNULIB_MKNOD@ GNULIB_MKNODAT = @GNULIB_MKNODAT@ GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ GNULIB_MKTIME = @GNULIB_MKTIME@ GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ GNULIB_PCLOSE = @GNULIB_PCLOSE@ GNULIB_PERROR = @GNULIB_PERROR@ GNULIB_PIPE = @GNULIB_PIPE@ GNULIB_PIPE2 = @GNULIB_PIPE2@ GNULIB_POPEN = @GNULIB_POPEN@ GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ GNULIB_PREAD = @GNULIB_PREAD@ GNULIB_PRINTF = @GNULIB_PRINTF@ GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ GNULIB_PTSNAME = @GNULIB_PTSNAME@ GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ GNULIB_PUTC = @GNULIB_PUTC@ GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ GNULIB_PUTENV = @GNULIB_PUTENV@ GNULIB_PUTS = @GNULIB_PUTS@ GNULIB_PWRITE = @GNULIB_PWRITE@ GNULIB_RANDOM = @GNULIB_RANDOM@ GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ GNULIB_READ = @GNULIB_READ@ GNULIB_READLINK = @GNULIB_READLINK@ GNULIB_READLINKAT = @GNULIB_READLINKAT@ GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ GNULIB_REALPATH = @GNULIB_REALPATH@ GNULIB_REMOVE = @GNULIB_REMOVE@ GNULIB_RENAME = @GNULIB_RENAME@ GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ GNULIB_RMDIR = @GNULIB_RMDIR@ GNULIB_RPMATCH = @GNULIB_RPMATCH@ GNULIB_SCANF = @GNULIB_SCANF@ GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ GNULIB_SETENV = @GNULIB_SETENV@ GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ GNULIB_SLEEP = @GNULIB_SLEEP@ GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ GNULIB_STAT = @GNULIB_STAT@ GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ GNULIB_STPCPY = @GNULIB_STPCPY@ GNULIB_STPNCPY = @GNULIB_STPNCPY@ GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ GNULIB_STRDUP = @GNULIB_STRDUP@ GNULIB_STRERROR = @GNULIB_STRERROR@ GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ GNULIB_STRNCAT = @GNULIB_STRNCAT@ GNULIB_STRNDUP = @GNULIB_STRNDUP@ GNULIB_STRNLEN = @GNULIB_STRNLEN@ GNULIB_STRPBRK = @GNULIB_STRPBRK@ GNULIB_STRPTIME = @GNULIB_STRPTIME@ GNULIB_STRSEP = @GNULIB_STRSEP@ GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ GNULIB_STRSTR = @GNULIB_STRSTR@ GNULIB_STRTOD = @GNULIB_STRTOD@ GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ GNULIB_STRTOLL = @GNULIB_STRTOLL@ GNULIB_STRTOULL = @GNULIB_STRTOULL@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ GNULIB_SYMLINK = @GNULIB_SYMLINK@ GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ GNULIB_TIMEGM = @GNULIB_TIMEGM@ GNULIB_TIME_R = @GNULIB_TIME_R@ GNULIB_TMPFILE = @GNULIB_TMPFILE@ GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ GNULIB_UNLINK = @GNULIB_UNLINK@ GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ GNULIB_UNSETENV = @GNULIB_UNSETENV@ GNULIB_USLEEP = @GNULIB_USLEEP@ GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ GNULIB_VFSCANF = @GNULIB_VFSCANF@ GNULIB_VPRINTF = @GNULIB_VPRINTF@ GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ GNULIB_VSCANF = @GNULIB_VSCANF@ GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ GNULIB_WCTOMB = @GNULIB_WCTOMB@ GNULIB_WRITE = @GNULIB_WRITE@ GNULIB__EXIT = @GNULIB__EXIT@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HAVE_ATOLL = @HAVE_ATOLL@ HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ HAVE_CHOWN = @HAVE_CHOWN@ HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ HAVE_DPRINTF = @HAVE_DPRINTF@ HAVE_DUP2 = @HAVE_DUP2@ HAVE_DUP3 = @HAVE_DUP3@ HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ HAVE_FACCESSAT = @HAVE_FACCESSAT@ HAVE_FCHDIR = @HAVE_FCHDIR@ HAVE_FCHMODAT = @HAVE_FCHMODAT@ HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ HAVE_FDATASYNC = @HAVE_FDATASYNC@ HAVE_FFSL = @HAVE_FFSL@ HAVE_FFSLL = @HAVE_FFSLL@ HAVE_FSEEKO = @HAVE_FSEEKO@ HAVE_FSTATAT = @HAVE_FSTATAT@ HAVE_FSYNC = @HAVE_FSYNC@ HAVE_FTELLO = @HAVE_FTELLO@ HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ HAVE_FUTIMENS = @HAVE_FUTIMENS@ HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ HAVE_GETGROUPS = @HAVE_GETGROUPS@ HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ HAVE_GETLOGIN = @HAVE_GETLOGIN@ HAVE_GETOPT_H = @HAVE_GETOPT_H@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GRANTPT = @HAVE_GRANTPT@ HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ HAVE_LCHMOD = @HAVE_LCHMOD@ HAVE_LCHOWN = @HAVE_LCHOWN@ HAVE_LINK = @HAVE_LINK@ HAVE_LINKAT = @HAVE_LINKAT@ HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ HAVE_LSTAT = @HAVE_LSTAT@ HAVE_MBSLEN = @HAVE_MBSLEN@ HAVE_MEMCHR = @HAVE_MEMCHR@ HAVE_MEMPCPY = @HAVE_MEMPCPY@ HAVE_MKDIRAT = @HAVE_MKDIRAT@ HAVE_MKDTEMP = @HAVE_MKDTEMP@ HAVE_MKFIFO = @HAVE_MKFIFO@ HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ HAVE_MKNOD = @HAVE_MKNOD@ HAVE_MKNODAT = @HAVE_MKNODAT@ HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ HAVE_MKSTEMP = @HAVE_MKSTEMP@ HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ HAVE_OS_H = @HAVE_OS_H@ HAVE_PCLOSE = @HAVE_PCLOSE@ HAVE_PIPE = @HAVE_PIPE@ HAVE_PIPE2 = @HAVE_PIPE2@ HAVE_POPEN = @HAVE_POPEN@ HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ HAVE_PREAD = @HAVE_PREAD@ HAVE_PTSNAME = @HAVE_PTSNAME@ HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ HAVE_PWRITE = @HAVE_PWRITE@ HAVE_RANDOM = @HAVE_RANDOM@ HAVE_RANDOM_H = @HAVE_RANDOM_H@ HAVE_RANDOM_R = @HAVE_RANDOM_R@ HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ HAVE_READLINK = @HAVE_READLINK@ HAVE_READLINKAT = @HAVE_READLINKAT@ HAVE_REALPATH = @HAVE_REALPATH@ HAVE_RENAMEAT = @HAVE_RENAMEAT@ HAVE_RPMATCH = @HAVE_RPMATCH@ HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ HAVE_SETENV = @HAVE_SETENV@ HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ HAVE_SLEEP = @HAVE_SLEEP@ HAVE_STDINT_H = @HAVE_STDINT_H@ HAVE_STPCPY = @HAVE_STPCPY@ HAVE_STPNCPY = @HAVE_STPNCPY@ HAVE_STRCASESTR = @HAVE_STRCASESTR@ HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ HAVE_STRPBRK = @HAVE_STRPBRK@ HAVE_STRPTIME = @HAVE_STRPTIME@ HAVE_STRSEP = @HAVE_STRSEP@ HAVE_STRTOD = @HAVE_STRTOD@ HAVE_STRTOLL = @HAVE_STRTOLL@ HAVE_STRTOULL = @HAVE_STRTOULL@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_TIMEGM = @HAVE_TIMEGM@ HAVE_UNISTD_H = @HAVE_UNISTD_H@ HAVE_UNLINKAT = @HAVE_UNLINKAT@ HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ HAVE_USLEEP = @HAVE_USLEEP@ HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ HAVE_VASPRINTF = @HAVE_VASPRINTF@ HAVE_VDPRINTF = @HAVE_VDPRINTF@ HAVE_VISIBILITY = @HAVE_VISIBILITY@ HAVE_WCHAR_H = @HAVE_WCHAR_H@ HAVE_WCHAR_T = @HAVE_WCHAR_T@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ HAVE__EXIT = @HAVE__EXIT@ HELP2MAN = @HELP2MAN@ HTML_DIR = @HTML_DIR@ INCLUDE_NEXT = @INCLUDE_NEXT@ INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ LT_REVISION = @LT_REVISION@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ NEXT_ERRNO_H = @NEXT_ERRNO_H@ NEXT_GETOPT_H = @NEXT_GETOPT_H@ NEXT_STDARG_H = @NEXT_STDARG_H@ NEXT_STDDEF_H = @NEXT_STDDEF_H@ NEXT_STDINT_H = @NEXT_STDINT_H@ NEXT_STDIO_H = @NEXT_STDIO_H@ NEXT_STDLIB_H = @NEXT_STDLIB_H@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_TIME_H = @NEXT_TIME_H@ NEXT_UNISTD_H = @NEXT_UNISTD_H@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ 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@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PMCCABE = @PMCCABE@ PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ RANLIB = @RANLIB@ REPLACE_CALLOC = @REPLACE_CALLOC@ REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ REPLACE_CHOWN = @REPLACE_CHOWN@ REPLACE_CLOSE = @REPLACE_CLOSE@ REPLACE_DPRINTF = @REPLACE_DPRINTF@ REPLACE_DUP = @REPLACE_DUP@ REPLACE_DUP2 = @REPLACE_DUP2@ REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ REPLACE_FCLOSE = @REPLACE_FCLOSE@ REPLACE_FDOPEN = @REPLACE_FDOPEN@ REPLACE_FFLUSH = @REPLACE_FFLUSH@ REPLACE_FOPEN = @REPLACE_FOPEN@ REPLACE_FPRINTF = @REPLACE_FPRINTF@ REPLACE_FPURGE = @REPLACE_FPURGE@ REPLACE_FREOPEN = @REPLACE_FREOPEN@ REPLACE_FSEEK = @REPLACE_FSEEK@ REPLACE_FSEEKO = @REPLACE_FSEEKO@ REPLACE_FSTAT = @REPLACE_FSTAT@ REPLACE_FSTATAT = @REPLACE_FSTATAT@ REPLACE_FTELL = @REPLACE_FTELL@ REPLACE_FTELLO = @REPLACE_FTELLO@ REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ REPLACE_GETCWD = @REPLACE_GETCWD@ REPLACE_GETDELIM = @REPLACE_GETDELIM@ REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ REPLACE_GETLINE = @REPLACE_GETLINE@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_ISATTY = @REPLACE_ISATTY@ REPLACE_LCHOWN = @REPLACE_LCHOWN@ REPLACE_LINK = @REPLACE_LINK@ REPLACE_LINKAT = @REPLACE_LINKAT@ REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ REPLACE_LSEEK = @REPLACE_LSEEK@ REPLACE_LSTAT = @REPLACE_LSTAT@ REPLACE_MALLOC = @REPLACE_MALLOC@ REPLACE_MBTOWC = @REPLACE_MBTOWC@ REPLACE_MEMCHR = @REPLACE_MEMCHR@ REPLACE_MEMMEM = @REPLACE_MEMMEM@ REPLACE_MKDIR = @REPLACE_MKDIR@ REPLACE_MKFIFO = @REPLACE_MKFIFO@ REPLACE_MKNOD = @REPLACE_MKNOD@ REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ REPLACE_MKTIME = @REPLACE_MKTIME@ REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ REPLACE_NULL = @REPLACE_NULL@ REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ REPLACE_PERROR = @REPLACE_PERROR@ REPLACE_POPEN = @REPLACE_POPEN@ REPLACE_PREAD = @REPLACE_PREAD@ REPLACE_PRINTF = @REPLACE_PRINTF@ REPLACE_PTSNAME = @REPLACE_PTSNAME@ REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ REPLACE_PUTENV = @REPLACE_PUTENV@ REPLACE_PWRITE = @REPLACE_PWRITE@ REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ REPLACE_READ = @REPLACE_READ@ REPLACE_READLINK = @REPLACE_READLINK@ REPLACE_REALLOC = @REPLACE_REALLOC@ REPLACE_REALPATH = @REPLACE_REALPATH@ REPLACE_REMOVE = @REPLACE_REMOVE@ REPLACE_RENAME = @REPLACE_RENAME@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ REPLACE_RMDIR = @REPLACE_RMDIR@ REPLACE_SETENV = @REPLACE_SETENV@ REPLACE_SLEEP = @REPLACE_SLEEP@ REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ REPLACE_SPRINTF = @REPLACE_SPRINTF@ REPLACE_STAT = @REPLACE_STAT@ REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ REPLACE_STPNCPY = @REPLACE_STPNCPY@ REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ REPLACE_STRDUP = @REPLACE_STRDUP@ REPLACE_STRERROR = @REPLACE_STRERROR@ REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ REPLACE_STRNCAT = @REPLACE_STRNCAT@ REPLACE_STRNDUP = @REPLACE_STRNDUP@ REPLACE_STRNLEN = @REPLACE_STRNLEN@ REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ REPLACE_STRSTR = @REPLACE_STRSTR@ REPLACE_STRTOD = @REPLACE_STRTOD@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_TIMEGM = @REPLACE_TIMEGM@ REPLACE_TMPFILE = @REPLACE_TMPFILE@ REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ REPLACE_UNLINK = @REPLACE_UNLINK@ REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ REPLACE_UNSETENV = @REPLACE_UNSETENV@ REPLACE_USLEEP = @REPLACE_USLEEP@ REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ REPLACE_VPRINTF = @REPLACE_VPRINTF@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ REPLACE_WCTOMB = @REPLACE_WCTOMB@ REPLACE_WRITE = @REPLACE_WRITE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ STDARG_H = @STDARG_H@ STDDEF_H = @STDDEF_H@ STDINT_H = @STDINT_H@ STRIP = @STRIP@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ VALGRIND = @VALGRIND@ VERSION = @VERSION@ WARN_CFLAGS = @WARN_CFLAGS@ WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ WERROR_CFLAGS = @WERROR_CFLAGS@ WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ WINT_T_SUFFIX = @WINT_T_SUFFIX@ 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_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ gltests_WITNESS = @gltests_WITNESS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lgl_LIBOBJS = @lgl_LIBOBJS@ lgl_LTLIBOBJS = @lgl_LTLIBOBJS@ lgltests_LIBOBJS = @lgltests_LIBOBJS@ lgltests_LTLIBOBJS = @lgltests_LTLIBOBJS@ lgltests_WITNESS = @lgltests_WITNESS@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ 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@ EXTRA_DIST = cyclo-$(PACKAGE).html vcurl = "http://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=lib/%FILENAME%;hb=HEAD" all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(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/cyclo/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/cyclo/Makefile .PRECIOUS: 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__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(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 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 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 clean-libtool 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 mostlyclean-libtool 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 clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool 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 mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am cyclo-$(PACKAGE).html: (cd ${top_srcdir}/lib && \ $(PMCCABE) *.[ch] \ | sort -nr \ | LANG=C $(AWK) -f ${abs_top_srcdir}/build-aux/pmccabe2html \ -v lang=html -v name="$(PACKAGE_STRING)" \ -v vcurl=$(vcurl) \ -v url="http://www.gnu.org/software/$(PACKAGE)/" \ -v css=${abs_top_srcdir}/build-aux/pmccabe.css) \ > tmp mv tmp $@ # 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: libtasn1-3.4/doc/cyclo/cyclo-libtasn1.html0000664000000000000000000001422012244721131015352 00000000000000 Cyclomatic Complexity report for GNU Libtasn1 3.4 Back to GNU Libtasn1 3.4 Homepage

GNU Libtasn1 3.4 Cyclomatic Complexity Report

Report generated at: Mon Nov 25 20:17:45 CET 2013

Summary
Total number of functions
Number of low risk functions
Number of moderate risk functions
Number of high risk functions
Number of untestable functions

Details for all functions
  Cyclomatic Complexity Risk Evaluation
  0 - 10 Simple module, without much risk
  11 - 20 More complex module, moderate risk
  21 - 50 Complex module, high risk
  greater than 50 Untestable module, very high risk

Function Name Modified Cyclo Number of
Statements
Number of
Lines
Source File

Copyright (c) 2007, 2008 Free Software Foundation, Inc. libtasn1-3.4/doc/cyclo/Makefile.am0000664000000000000000000000236312244720630013704 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . EXTRA_DIST = cyclo-$(PACKAGE).html vcurl = "http://git.savannah.gnu.org/gitweb/?p=$(PACKAGE).git;a=blob;f=lib/%FILENAME%;hb=HEAD" cyclo-$(PACKAGE).html: (cd ${top_srcdir}/lib && \ $(PMCCABE) *.[ch] \ | sort -nr \ | LANG=C $(AWK) -f ${abs_top_srcdir}/build-aux/pmccabe2html \ -v lang=html -v name="$(PACKAGE_STRING)" \ -v vcurl=$(vcurl) \ -v url="http://www.gnu.org/software/$(PACKAGE)/" \ -v css=${abs_top_srcdir}/build-aux/pmccabe.css) \ > tmp mv tmp $@ libtasn1-3.4/doc/libtasn1.ps0000664000000000000000000166210512244721130012623 00000000000000%!PS-Adobe-2.0 %%Creator: dvips(k) 5.993 Copyright 2013 Radical Eye Software %%Title: libtasn1.dvi %%CreationDate: Mon Nov 25 20:17:44 2013 %%Pages: 33 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: CMBX12 CMR10 CMTT12 CMSY10 CMMI12 CMMI10 CMTT10 CMSS10 %%+ CMSL10 CMSLTT10 CMB10 CMTT9 CMR9 CMMI9 %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -q -o libtasn1.ps libtasn1.dvi %DVIPSParameters: dpi=600 %DVIPSSource: TeX output 2013.11.25:2017 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat {BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B /M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ 0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end %%EndProcSet %%BeginFont: CMMI9 %!PS-AdobeFont-1.0: CMMI9 003.002 %%Title: CMMI9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup /UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI9 def /FontBBox {-29 -250 1075 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI9.) readonly def /FullName (CMMI9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB 7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67 7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8 BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365 82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74 91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E 540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112 7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8 93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756 972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A 6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149 796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94 DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80 E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D 0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83 F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9 ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97 72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9 4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1 692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109 4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1 CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59 41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A 9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20 5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292 2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5 8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B 33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28 03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1 749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE 3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F 64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F 90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05 DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8 F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D 4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF 49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4 E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117 58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE 88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3 B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE 7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776 01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46 19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41 194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55 53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3 F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4 412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6 C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108 4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831 E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81 AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF 00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91 C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8 2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980 F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50 0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023 28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4 E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42 20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B 7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE 5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4 74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4 90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55 3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621 98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066 54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7 93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC 19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A 9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84 A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB 107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA 5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08 22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95 B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D 403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789 D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6 20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6 943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33 AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70 B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA 2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84 2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F 8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642 87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4 2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842 D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC 512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4 4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559 6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9 9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A 0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040 9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1 430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8 56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE 718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3 F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE 95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE 6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7 6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867 630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111 6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA 89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475 3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2 90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47 38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34 EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9 B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376 9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9 1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF 1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C 62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5 84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2 AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618 D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196 BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6 4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6 531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24 FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2 43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256 D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6 0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4 E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53 DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358 99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD 8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1 8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73 A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5 362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3 C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79 E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2 07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F 0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6 190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4 5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50 005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8 6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9 F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087 F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE 2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752 F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0 0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD 73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2 62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79 5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98 F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F 6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7 DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109 EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222 E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107 536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18 36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3 F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0 431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900 5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C 074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78 E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77 2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600 324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.0: CMR9 003.002 %%Title: CMR9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup /UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR9 def /FontBBox {-39 -250 1036 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR9.) readonly def /FullName (CMR9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 44 /comma put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 65 /A put dup 67 /C put dup 68 /D put dup 70 /F put dup 71 /G put dup 72 /H put dup 76 /L put dup 77 /M put dup 78 /N put dup 80 /P put dup 83 /S put dup 85 /U put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340 15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4 B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029 85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955 F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D 2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5 B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7 78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7 E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3 41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277 B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072 55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA 700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9 8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4 FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4 3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15 B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2 AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013 461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85 CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C 4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F 291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223 D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181 C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115 D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9 9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405 2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380 A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB 2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E 2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6 AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577 9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67 0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D 9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B 42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0 C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35 623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6 B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4 E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97 CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D 07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7 53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350 EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9 52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88 F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3 81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6 B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A 31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293 846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733 46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E 44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08 A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5 1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4 D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344 6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E 24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E 75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51 C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0 5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034 099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281 7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE 53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84 7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F 7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933 CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD 866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826 ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64 FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B 40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643 D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8 2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787 39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2 1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4 F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9 253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B 14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085 6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B 9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339 FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F 289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3 A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5 5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46 5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652 152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE 67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3 BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59 3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88 713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF 2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5 D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143 6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9 F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95 26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970 350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700 70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5 F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95 F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8 9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2 DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473 F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D 064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF 1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325 A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF 01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C 40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C 72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645 24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1 EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775 D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311 83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483 5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448 1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69 AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC 4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3 7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9 65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063 B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6 FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6 4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490 8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6 1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3 10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4 8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0 7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F 852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C 3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997 648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD 855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE 1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C 1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0 B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7 D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99 24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C 552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733 6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0 800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8 6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659 E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4 5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2 00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4 82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7 6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3 128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D 744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507 84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86 5D24AB1323A0BDCC0A8FCCAD408E091D37B62D3D1BF8537CFC619A78488DA0CF 87FF97E3181A579D373539E8AFF22856FD03F4C387BA307983EDE87FE0F320FF 41E45F60704B913C7381D84E98411045E4AC9FFDF8168FA2286D8C7EBF681EA8 787E7960CFCAF502B7A3066310BE7A1159A02F1BF2C5C11A3A9A52E01DE3E108 8ECF6C9F892370DE073A17C26D92487DC47818C92555B5FA22B8E2D726EBDC07 7B0E0DBF8060AEAD5106824D748D9C085BAC95E031069395B41D5BB131FCDAFB 5CB678DA317AA3082296487B40E1D4297E22905E096C47A26F4DF5975ED35156 F33D505FE3ED168177598CA0CE444A03F66032BD7D1C1ACA0EF9FC36C4C9CE25 C9B1F2420CF9A96365BAA62E2704F2C662090D58BB4E0B099DDB4EEBF8D05F97 A5CBC658236F5E4D62BAEFB5996AB9E8EC4F4F9AC53FF17CC7A87BF1B8EC4626 1C500327CCB89B0EB07A9F4903E0C5A5E7370D90B50C010286EB368B0503D038 A2EF77A39178507E41DBE433DF19D3F69A70793D051F813CD263B5DA690579AC 1789D2D4CA15488F73F1F01CA8FC188FA30CB08809D8228AAC5A10954A6E5471 F8D84AF40CBD5C92F789EB1742E17D5EF1F7212D71A06BD7091360023093F101 36EB44A8DE87A4A196B0140641000B445FD8F603A9A7F2C6F77EF6963811F7C9 15649EE1D81DC3E988A7A797D76DB89758A73428D690AAC6CAF6E216CA40F8C6 2E05352428D4C5BDF539C8E423815555A1051370EFB3A9606D3D58F46E7D0B97 CCA0C589D0E36D25CE3938B059FB0E2C8361014B57098F96088C5C98E7AF24CF F8A8308EA440CD67106B94310E4C81D9D739DF88C655165C148CA55C7A1E2F7E A6F673ED5F34F1C1D20B609A152EDECFA26875C005B5D3394AFC2E2FC73EC0D8 693A9561AD2C3F9B9E9C94C53ADDD85AF53C31B80C1B952D9DFDD486216B5470 4294478B4C661D4A4E9FA155F8AEC542E9824B68E6CE5EA8AC69ADBF68EB3D17 34B6A9696D4C6CE733DAE0E07696962EED3A3A13C4041ADC5F52005EA6134A66 F51F736877EF6935620706F1C7F6D4391BBA261C0A456437333F630E77FE0351 524E0228494AE590925549D708865836B98C22DB4B3DDC0B03B7AC91452ACC9A A35B5300C6AD185B4115777FF1887C18E2A8D7197B0F7D20C6783F1ACAEF307D 3A3D8A0CA6E668E9686C074CDB097FE2EE3CB1633A72BC1E72A5F984675CA442 44BE2B6DA017CC81B0402ADB03580FEDC3E27F17BB92A3AF2F2A94D9355ECCF6 100298E5BEAA35E237A6377AF642F9342CA7B1395A06C40BD8009CC6A8448523 E4FB6152AB32DC44649E9CA36C02A450B982E0AE37EF099A4DAB23C856C986AD FEAA0B463EFDF2934B81739E6EE4DAEEF6E7CC0ED6A45B7F628AF18546E746ED 2F6A256953F207A7A6C9DD70F51DDEE2A9AA21F29C260D73AD90ED18C0460515 0D9B3A9D82BE7DA27A34D0A23A3CAE652858FC87D056998142D7125BCB55D9FF 7B893CC31F7949ADAFA7FD22C8F9537DE6D5AF5C6EA86933F8B05B923630AF9F 932D151B0B3E8667D726E21D32EDD1B93AEA254F7742B0626117F71AD443B5F3 E244ADDB741168B14285868040702DB2339BF7DF2E553AA9B765C965D6911982 4B157A2FADC6FD33E9B0E6741B843611735C86E03CCE6750FD21CF6C091DEE5E FECC8B1D3B1C4B27C8709EECEDE568036854398EB687A52E1E15CCF8481B4169 D825AAC0866A01B77B5DB834161B4CD9385A5A7186B75648703EB60E90F27338 24306CE505EBA5B75AE6563CDDAC46DE844726A222F8E7995239C70F9A781725 9964898D854B87711D7D6290DD4760DBC11157156B0E2E20CEDB0A5814B5BC4F BD587F14DB25055F0CE7BA4C3F2AD371F10BA0FC4C1BD496258350CDB97056F9 FCB96071835E56BF1D384A44FB411C043ADC0B94FA3370BE0617216EB4ED64CD 18471A493D5F4CF3863FD2408A3180229FA3AC3AA762A8A88C2E79E277AD698D 2F2FE368F51654EF912AB5C92989675EC9E0A818C9ED94A71DBE46014A352D4D 916368BCB4152454BD9D5DE9D002DEDF2FF6342EA28A436EAFCAF9102A25E5F0 47CC8473EC2AC8E4B2C2C0E8BF5DBA1C7EEE0BF66C206D543D9F4C412CB128CE 57F60B0D5EF70270B40D4EFDAA421F4059C474F61319A9C0B0BB98EAD3B5ADAB B830C68513A5DFAAB3A29363889DBA63C13F646A21F005F985B4BAB5F16FED1D B8A81E4164F827F359A4630C2955964D0D8088408A3E376555159AE9BDA25911 5AE9A1445AE2A9CA93F73B047C8E669D29DD9BF99B3ECC3B24B56EACBFDD1F93 A6800310FF9AFEBCB6AF6A97107FBBA08DFB4C48A30C24D13B30CA0BD0790FF3 8C7BF80A1721B36E82428DA07F52E69E4370442D6C28DE1FC1560CC93DE2B34E A544E3DA352DEC39D0DD73AE3F8A22299AC83A56F2D0A289D4CFD073A0A3E9C5 22649BB893E0FDDA363F4543D60590D9CFEDB389FC57DFC352A86FEAB3030F33 647818D10537C66A0EDFBC956B7448512F12D228F1E6CEDEF1CC8BA5D2CC9FCC EF56AC106082AFBC7C33AA5AA3A5F74816562B18B15A72DFA22E53AB387F6F55 81E7A55FC1FF18C49EA9C747626EA2CD8FE45998A2200B201A15701791D5943B 61A6EBC0487B07FF578EE8CD2CE2B4CF0118BC31A1EB064F3BA5770D9D6ABE3B 980FAE493351448D8CEE5D7A01BCE562BF10CD298038522A0D75A6D0B597724C 53AD288C60521B13572393735AC27E705A6BC0BE25ACFA16A3B6075F1D04CDBE 0540416BD8B26A3BB4A9D8774A3000FFA9477E051D943562E3B9EE8911AA8B94 940E1F4E493CFEE1C6C5D90BD37ADA86614B9AF52CC8105D836ECA2AAF91EDF2 530F0529C6D8F19269C314967DD567EEA133DF88DB64327D446FF0212FCC07C7 72ACBC7A0A254BDBC3A08CA81A20CFBB26838AA2828DC8A69C05C8414B8ED70B 75A3E2B72E8591A5E1D5B944B8FFAA59E1742A2AB9401919FCC947F81DFCD331 BAADEC41BEE83FEB705ACD7E9C0B9BB3F2B0419BD82297251269765F4B620CB9 036B00E305A703A3AB78546BFE29DEB9BA7B5395D75493A2FF6B8B3B67CF5A07 0A10EC484D74B359BFB7E71F5BCC1D4FF658FB34C55E5D0338D3FD5F788EFF7C 6425857EA25379430E12F1F63D7640D3C9E38603EBA4A11F13AD42E41F704581 551DD05C638A30F8B4EBF5F8B6206FCEDFED42B5B689C7F102D9D09F03B04788 FED13E7CEA6134A544E5DD874C32705EF99EC771C5A5FF2498C0D2C58390930A 96DCC10569F5575CD03C046E071BD75320E0C64AD0D4B6FCD0B228A3128E675B CC3AD244DC7B873D1DF85F196BFDAE905100C987975A7D8ECDC4BD5FB580D025 01B3FFC0D277177A27BB43537251C9296C2100009DE18D807EC3D57A1C81A1C8 7041972DF0A32A0C3A5BC386F71C169A6735162606D251EA7811B893B9A65E87 0930D2B0F81EE86A3F13BB3679BC7D0EE881D461F04C7090FA5CBAD034A75C78 C5D044AAEF0554832C59F6FCC0C296BD1117D2ECD7059B975D2BF9BE05E48D4A 02A380C71ADBBCF356F1BCD9A99F64627B7AA7F492E93E4E9A7C6CF85FE63F09 E6FF5B7F9270933D8B167D25C856339038A338FFB01251F723BE4A8F671A23F8 31F0CE94575A7CFCFE93A021B1798908F72D1B78654E35D8695DC1904A396C6F C02C903D5D6BE52687CD39533543DDD22338ED2941F1821F5C3110501B55A71E F69983E9DA01E7CB967B31A44EF56EEFA5C394C4A1068A4AA40A08EA39FE35B4 5EAC7164E93F84B80275AD080C4BC34D560FB2B29AE900DACF0DC5184C9235D1 2BD92B31ED15ED2A6919143453F3ABBF70B5657F1F3BFE97412FB42F70DB3D61 3DFAA7C0EF9D7FE6A4F783485647EDEF954ECEBFB633E45E6D47290DD967805C FCA6353D14BED1445083CB2BF453995B6C57D77B763B5C8F93E7FCDC15145F70 0EDBB5FF2F1ADA0B10453FC4DE754DA25261434EC57D6002846CC79951FBB211 B0FDFCEE5105C6005EE478E6198A7C06CCD709AC6FA8E54F2432F57EBEF4E658 C25FF7DAEF0B65EF65424ECDD2BFCD831CC1C3C708FD24BD45BE97A9D4A74F91 4AF903B8A897B46E14EFFEE5CB7C9CD27B1D311C994524A5D880A4948ACDB3E5 141A16B5574BDFEA5B172C0C4279189DF348C515DA4426C092F69729A7B17F4C 246163859962178FC305672D6A625DF5B7AB93B1C3BD5A607CA04AF4A1452AC6 0B8B38C006D1B766B078C4399BF86B2D41574384B1EF37AA1B987124C4587DC9 6EF5AB8B02585D925DCA1B36148CD513A1B47A3F4272017307BEC08FAEBA3452 531075B36A05E2FCC900E7ED592B9B8867E0F5F677C72E6CDA1458BC8D05E024 11323238C0921BAAFD46B87DB328AE59A9095AE876E5C0199FBBC5D697A34E6D 8F20F709F5E94D0E7E2DB8A36F53C74405C7737ECB543FE4C35ACFD212B25492 3E5DBDA4274C755F56508EF0A00B4A5FB496C4B8D82113B3ADEC9E1AF9AAFC32 858AC0B6998248ADB0FC3560D0C144D24AF6480C6009EABA9700FB0CB881451A 5DABC2CE6A2B4FD6D138BE6B9248717C6CEB8CE6850CDFC1F666C0202046B6D5 9407D14D60862AAB2F2A6653DDD05AEBDAC0F9EFB53AA6AD4A5AD9E0A8A41EF1 A3F9E2683A1F5B987348EBA05647DB91B3D0BC34B0B59C171118DF9BED1F38E9 8CB8C3F8A586F56F387E2B40A2096C87AD5ED5110064BD1116F753E7C03FB4EA C8582F2F7DD2C267161103CEFDA79D131D3A632278209CD9D611A4B1A65368BD 534984BD9B8D74D122A08106D8713830B6F303A806CCDC5C88B18C5F92E20B95 07E0F04AC62E003848EAB97DCDCB43BE9FCC06C8F0CCE00D2297569222B19B8C 2718E26C1F7D57C4B7F4E7B088306BDB1E2C91571B1CF6EE988F155EB2BE1965 1F646417DA862C48583B395D0122AB642BB6F4DF684FDC70007F7C8E2401F5F8 1D13ABBCE9E981D46EC65D1F92A3CF1D13DEF2A525B13734F3D60469D57496E1 4851CBBC9A49408580D718665CD043F39A1F86F8DC6F52C44361FEB0D80E9FEF F06C758AA6FE965ED042A27A7EDDFA0FF748252068422010F8666F53EF5AF748 DBAA54405EF9ED986F9F98A54B3325C87A47E1F358D0A8B5BF559B6C775E75F2 0948B50B3AC74B3F87D65E7EC856C35BC3C3B4C1984F27A79BEF093BF9AB9B98 EC589A00ACDE0AD5847DCA9DB3621C44403E714C881A05F55D9E7504BBA15ADC 37C89A7BF2A239CB02C17FCC1069527F86261B411A18F36ED64DEC101C35E534 A809987F682C28DEC6D00A04F0D6AAE12DC5A898D47DF5DBDC11B59C69749E8F 5FB2E5D2F5092361C360752046D9CA4786EF07B4F3942FE255D1ACCB6B3E2088 1802925738CDBE31550A683D4CFAE8751664506DD9797894FBECF81DDE61106B A158E0B46CDAAA2F321A1E276835162860FD8B2E0167ABB3C7B3242A800F8407 26E3D08380D7FB3B9D1D9651CEB60A2FFFC58673064FA240F04D6B7EC86EB4AE 47B0D0FE41D039CFA872E74845BA09C40D5374B218BBEB4C89F92C7B33B529C7 5081EF37095DECC6BB88A1CC5E64E32A94C5AD2575F952E5E4D97D3CB759D222 F79AD602DCDD04AC16EF772A99ABDF5832A1E38477E0240682B9E1EC74174B5A 9C9F918669796F583D2CD2453584F42D84CE0DA43179E4FCBEF9071B19F307DB F44554FE434FABBF6D6D1DB10F7792A060475A9F4D4B16E2C670FB8AEAF8D055 2973659344D0B7C76FF21D5CB40278DD9210EE8A62634D1CA996BCEE95F77B14 0C4E1569EABF70176D3D43C75BE31EBB33F6545E3BC85EB688E643A05E6EBD51 2F997D7955ABFDA3CEECDCD6110C8FAF0383EE50C2F418E45769287BCF153F85 7ED1B2DDF33065018575FC28B9C746B9A1BDB182D2411CA7442E8B86861DD800 BDF1D45793F8563A3B559EDBFBE8DBF2232AC8CFEA5B84BA2DA15F7E9B196DC1 979B4DAEC9A3D28BD9802532D6CED80432EAF850634E90DCD8C431CECDE213D6 BBBA8143A90227A1169AE78069213C2120B27134C9AA21C64ACF5A1305C03857 35D640D2E3E08BE86D9700174FAC3AF3C0C401937812E42006EC08E0C71983C7 0B50F78122A167C5D1632E344FE011B121EEC247CB77165706ECDBA76F11097F BCA6237820C2E8DF105907B2816CBC970A4777DA8B22278237AE2AEAA7228A93 AA96C976F5E766053FE61DD832E6F9E4511C67D4FEB20AA5DC6AABED295E8AF8 747F75C718981EFAD0992618A8926590EB02BABBB1CE8853D7312D81253DA4DD 0550F21FB558BD9405CF0689918BE2927C2F428A324530560B8AD86DAD1DA6BA 7863528F4C7E9F9D92CC3E04E57E1C1B929CAFB9583F7B0C8306FC256F6896B9 89642D8E61B65DF6CA998E52F826331A363B787F3A532D97DC002BC5B5EF6CA0 F352C2FF69F7EA510B574DE3E5BDE03FA365C8CBCCC8515766997F821BD4CE85 282DE60C3A93C153353CA8DA4F7DE805D0B9A2C77183F45B40C62E1E511470A1 E7645850CD18B3174AC45EDF31FEFB8672E4D6F740674E208AFE9DCDE3BFAB61 4BE0E6E4ED3B2B1C4617FB6DEF15130C6816AEC54244D0F825C9C7919B5A16B2 4688B45C5B4B7C48491442C11B86E5E2E94FC7FD8BCC462306FE11E6AD43B431 FD0A6093386DA78B12DC09B07E68256BA4CA7038E08A15D41EF05EB0D7BB7A01 6EDF907D9D813FD567AF255F05ADCCC8B197D025B2D2F1B1EE2EAE446B5E210D 28404EB952843FB9902D5EBDB7BC162BF3064606C07AE9435FF315A9DB803AF7 E0156B7431CFB6995F3FD1586CC5964C5E4E261CFD6FDD2E8EFB29740CFC4BBA 1A6A7E619B6399B99EF06126146DE30FF6814E261B4445E180144BFE7C92181C 6CE7A52756D9482D7AE3F2CF3082BBA123796C7624AC1C793363EF77930044DC 3966389C117E4803DA46D59525CF0DD10E910FEA930952401DEABAB305498FB5 AF1E8018900D50B6DCBD883DCA94DEFE042CAF00E8C1DC261F4474108F2ACF96 F4512E7D0362843BFE4EA9F15C5ED3B3C27AA9971D3651DAD1BF0FC339A76B09 1A5F45459D8CA1285BDDA77A6A59F8D4DD81CD19CDACC7D66FA1841800AD0479 45D70B2D146D57E765C86612FAFAC2AED07DBF4C7CBB1DDF840363F821869AAB CD91AC7648A6A898762408FD7A17993C173D78CA38B27E7EE6C7EC1380ADB707 11C1AB09F03E2DEBAF55968B232F45E4BBF2CCF2DECC0BEA681BFE96A1D3974D 9EA36FA5B00D9E659371593044487E92AEF37474C940B3A4EC26E497B451DEE4 028CBDFF61EACE96FD74DFD7799F901FD6681B385969BA497133B052A90420F4 6D0A138EA47833B6FB3501052BAF8A7F3BD62AB4B0ED06A694F778D261BF2215 A027BED793CE8D4BF9B4DA153813DA70A207EF712534929058372C0BB5B7B516 20BCD0BFCBC338E8EC70AC841CE44EF460CFA687C3890EA068545A62D8307E6C 7017C6046D1E4C2528C6A99D51528DDCFEC132F4BDBB007E63D4B1F045FAC208 6C39C9616A63118A600F83AF3FA335889635F7C2751A521806DF8305E220AD26 3657D3C4DB43B1E6247D0D541CF9FB55D8845DB1B2CEA75DE0899E900A250C43 2B9104CAF040526F5463BAABDDC9A0222CAB87108415BEEDE2972D7E2720897D E41E3D806A118BC0FD0356088482ABE043DACD5E0301310BC1047358740E5B10 C7EFCC8F2DB61273058AAB5173D414C97D3F18701E78C6294BA5A3FE0CAC4003 86311A6466EAB7ED99EAE360795F32359233F93C017CC318A960BB9162238E2E 2C16BEB936E00FC3AF0C5626AA76470D4B87F921572FABDA2FD810951E80B674 56928C2140038F0486DAA7874423A738716E882F16A0C72CD2A5DAEA1530FDB1 736CE88270A96AFA2A1D77B7FD9F64E7D39A78CA88C2846AA558DA3D2595457B 98625043FD6E2F87F71973BB88FF5188EAAAAFDCDC7FC403D5F8BAAD045E888E 03BB9B8F721F003FD3A7EB9FA1AE1761E236E11A7BC3F2E6E100CD3C867682DB B607F1C0A9A24D5605603C238234DCE8E9460DF420BFE4F6EFC1B982F30B2BBE ACACC718F5905E49ECB73F52486080CE0E92960347A20F79323A4B2B57AE6706 299AAF55023204E023B81E79CD86F9FDD780FA60F156096FCAE6AF9A0187C8B4 4C182DFE94AB6E187CDE6CF2793735F09CB3D135E5237A94CDE9F1A837409E6A 8D790E9EB0994D0118F33AC9E539FE5020361BBE79A5856FB1612A0A5FD3D3B4 BEF2128F32EF1C3069D2F288B02A8EDF99AF1B34FAB5D0AE271001DF678722D9 D1A7DF2D0B1BDEA0207D1C9F323059AC25B90A67E7819DEBB54146AEEAEA8D78 C13C31CEF0422CE6552D78B54BFFE6EC1CD03AAE5C037739E141A7417488EF2D A8788DF9FE4AC6EC70CA1CB64F4ADF195BE0ACFADDAC1BE579A0750EB17BCC19 C17BC246CE43A554C1924A1FE6118474F5E10D1C44015586CA8BEEBDC0F200A9 FD3E1FF666AF6A12122546D21C5C12838BBC40BBC8C445D9C0896A628736C8CE 69EB2A06F9F837E33355B4E1A6B44DAABC209AE0193F4E4637997A1A63D5AAD1 E9BEE0260AE43ABBFCCB14AC660C0B6FDAC1580E6E0341566467C546AB8A2CE6 5EE856F6EE9B3F2572B252E2F58D7E82C8991BD4A3B37D200137783CDEF90EFC 552C5FC51193E04DC7E5EC1CC630D7B769CC3FF4836DFCCB3E3B93719807B5A3 B51D9EF5AC2EAE7115EFA451DD08FAE18C5B8AAC3284605688A6164FF418A02F FCFD540938705CD0CEF5DEB30B81BDD01ABCAE96EB63E795D84FC9EBBA17674E 6A6158DA99DC7A5759F5DE319DA40429BC877C97B5E78C6A15C1E54512B77D46 0B42E9E8129E4E97692492BF1A94BDE3A57CEB391A1CD1D8D50EF61CCD0D2834 6C3A3198B3186005E9D5D2CA887E6126655E28088C7C05863899CFFA4D1FBB47 2374C66106A32F5A43772B9DB91C55528A720632150EC8B58CD13DB7A9BF2FB9 10083A86AD68B11955AD3D9291ADD506E6B21FB3228EA524BE3B4AC41C6F090A 0E463B6542FC86AAA3CEB42E4FF1412200E2E174CBE3D9D546FED9617DFE041A 34E94FDF8E3C8C32FDEDB8C7F6588C79C6B68477A595DAC95374EC8AC7FFC386 1C04A56EE013932A8384C2E5021929EFA2AEE2AF9C62057F93AA2E3BC49F9409 1D0ED2BF14311BF4EA815F488791752FC3DB0B4846D348EB152E93BB7E46F04A CE5C794F8CDF58982DAEADCF94BA0240DEB78CB1745D4E4FD8FA3A6C29154F79 F15B573606740C6266F6078D30B4F040915C802BFEF566834DBF63FE4B1B7700 B4BEB611795FFDF7E5FEE3F70F27324755168D4543A0FD555BC591B42E157616 FA03F0131E44FE62766C3759B7F7C48817974466EBD3299F2B88AFC890B725A6 61519EBDD3CE31CCA4D21FB1F921D0DC6BA4175C227D6D72B876114E0788072E F6D4094A0174B1B82934A718E8D9B37F8E442754E4A1EA80C3409A76526E0A2B 51F829D97E11B5FE6CC9CF1C0C94CA289B7C1CEAFD0979FB53843B0C9D18C7FC 832166FC861F93C6A863418BD3207182A02B902942694790D71CA71B90A1A328 155823F2CECB7D3990443253053855FC4DCE8C61157DBFC6C78B5C42471B0D1E DF2293B64FBB55E646293095899105100A7F7F849568B06FEBEA96BD91A7A642 D7B1F6A019EB8C7B2E50C20B037EB4C97E39886D1227481BC1CEB3F21BCDEDAA 013921FBA7F4D80160CB66C4263B08C73E677CE284BE8BD96B7A2024601644F8 B4FCC2C56B788D7E6C5F87AC6B2255D29E4208D87C38C651B9326512BAD326AA FA7149F925CF2BB661418001956570F4DBBA089679749DC68943AB20BA91C4CC D9E3738F767B250A325C0954BC076687F2A89FC36898B6BFC56C523D15206884 8779F53399755CEA73D6B1F7CCDEAD0FFB0289839EADD20F9A8937E75169B4A8 BE049C4483A1F60EE36F7C966A5553568B412085AAF94AA225405C504ECEF174 D2C4315A16B23CE9FE2F9A4270E20312B1151B9BAFC3467A635838582634E238 1294B6A5A3D2EDC0B052942FF75B83723B983B7B3CA88D17BB702CA279BB0D25 F1A791BE09211C81E7891343B1CF5B9CB33B632E2C3F850A7663B4A2BF606621 4028DF65A778CA59244EC5E268BCE9F584C75C5858AA0B10F60D31BBCB6E495D 2C4D4EFA7464DA34F991FE6E94ECCB3F324145B2863349C3E259A65D9D838052 893E380BD4F7E9E6B1EE4C46A8565D920ED2EF8FFEC6C7F8ED70B167C9EBB3C1 203D0AD10F018AC054B2313E95500964C1DD87CA82AC039F77FEA85192C6520A 89D95FB78786BAF0284277633F5916F6C574821B85A42B4A388855B47ACA6F8A 3C69E72621DB5E4F78E5A61E26F292A198CE0A765A60EDD08C4680C82E711504 1A70280695130659E002CD94B186C589DB5CA9D03699C12DA3149F1B7E0CC1DC 2B5F405DDC446F0FC5040A9FDA697076B52110B969E4AC1502CB6164CDB3E79E D19AD4A5EB5087FDAAD2E91399905F36CD9D2DCBE911D0FA0006A8E56295B6CF 6D71FAC5DE577AF9B15853EFC9C7E329A5FA990847FF22874B6D3F5AE1A267CB C1DC19C8684CF5E9FFCF07C6F3C36DF955C6F90995E189FEDF311D067B660BDB F5681312548B1A9C6708302087668335B1A9717393DBC4DAD2392B1E2D635AF2 4063049477529F514823ADE008F70E5A1C27975DC16E4E1D776D3731F018B6B9 36A513490D47A098FA3E48238EE966FAE16DE1141571C179FB195B588CFD9346 8C93661136290686445972EEAB3986130293053A42460468F6A1D4A0476E373F 816848147690B16F0DDBE40A33259C4D7BE567B0A30FCDB72656EF3F2C7B0C2A D9EC1C20313D6EF620D91401ADB127F7A4894A527004DC093DCEEC68C3ECF570 3946BDA46E157CEAECB18DB9A3BED918A843890DEBD627743ADA0D2BBDADBCEE CAF875257FD719D2378DA73D40DE69AFFC7DBFEAC22086060EFEBDD8DC4A195C B61709FB30CF4C49651D4CC0F83CB17A0AA95D0F242A050D0013CC3875C64884 0A4530E8CAAB0A201AB3972B0A45C88B5D6073D13A15A6D99FF8B74420FA05B8 3585563E4FDA820469E7DF6968D6E09CE289DA730281797F53EB1B6C1B572D21 5A86442D6DEDC4BEF7CEB97ACEF89645DCC7895F8F01F8AA5A0D107847158B82 1E9AA415470666425B8E6412F60A2514E50798C031ADF765AB6A3AE48916BF9D 3749C14C389CC521FF43B4AD2920171E954BD7CC538E073EF067F5520B501EF0 CBE092670DA7EB95D2AC2F7FD8400B23394D7ECC2B0C7E04245D0EB7BB7DC502 7CAFE40FDD064F6B7B6CAA32626D035105D493DA5EE537DB279CF85F47A30D9B 7840A7DF5F377054E475779BEAF49D19F0841DFB7178AFD3E78572521C982CE0 129273B6E82803E411A8EB53D03600046F64FB2D61798E41A46CFC1B7C2DF778 E1D7630285E8312D454BF3F4A9129D95A19C0ECD7FCAE1455462F81F37FB072A 339ED9F3444DA57DA602078B1532DC4D5AA7067A4970CFDD2070E8213FE5E3D6 67EAA315D8BE56E77BE27777888845A92C1460A4DA692CAFAC741F7C4F59B835 F3C999660C6BDEDBBA1035BB798377B1F9AE405FB6001274A1866A0D66461526 D49EA641CC477097608E13FC6A6F46F2519D728210ECC6C8876590B1B755EC5E 1B8A02F710CCE815099EFE37532A42DBC5C1437E312E1116479CADA52FF0B3D0 8913EA2BB70DD578B3483E8CD2F5D289B80AEAA0354D3167134DFE93A9595496 BAC05AD4FB6B336302BB1656B10DDD6A10D40F316D673BEB60662F3AE68851B1 CCC18ECF887D010FBA58CF22AA18473C5B2A337AD62748428B91478B774C4779 FA97082369335AAAF1ECD3A844807971D4E9CBB9E8398814EA819ADB3694F13C C8DEFF8FB3E4BF646CD90E686BE6B841F1FEBA1A9F4BFA56B7DBC76A3C547896 93C015F4C970D575F7E9C55915294905DE60614B74900B5203794349D4107329 61B217BC412F8CEAC16E0324C9AA57AE75BEFA4AF93CE7A11C5487054C01ACF1 897A87E6D388C5BA742C1EFF729289AC6E449DEEB8DF3CF10AE90FBE4927DDC7 C5FE8744854E4B4D52B0022CF113AB5599770732EBB5A4E51EDB89EF0FB51C5D 102C348E6DB504D8F3E876D76E719B6F03B17F9E256FF016B18D0011AD254A9F 97A57C674CC6B0CB3C18965A9F9AB6B750C5E06E69F6DAF92C8BF3D05C47AB89 CB70874501FA1E18181D2EC8AFC358576A042AE217FFFE8AB3F9A6DC611998A7 D39016BD1F19199CE9FC4D564E610898699DCC1E80EFC83D7759FF763BA0185F 84B8D256055F3A7F03DC50F41C46F1217C79B3A58F765DE05A95192FC66E6590 CCA7E9C35C9C1C064B5C88ED16DE3972A02BDE65A6A1DAA06E1ED260E836B64E 417214564FE1295617A4547151F1EA981F2C8620A50F7DFE356D4A51B0B51A70 3984A46C75ABEF4DAE9DFCAC0B247327FF58DDC909B413FE613CB5F750879A58 9031CA9618A49C9E173A8C2DAA71639C1B997CE35446D56D8C974ECE47A66EEB 7D495BB277B0C3082CC2999745F249100925A900C6BE8538654B48627762D9DB B9D60CBE98DC66BD82E50812C350A1DD233B5345B23A67E7C577911EC54D0353 8EB7237F6C071BC4BC0FBB4DFE9CFE60047809E1099E6DC69A862CDB347EFE34 19E54A232BA6BA50D3B719A004D43AD15E0E83C032AD793CD92C6B2168BE3701 B7CD00CF51DF513D407D8EF2D017D014F6C101ED3060184C51879222847F8559 6069D748D3A5C4692A5636D13706ED0000D4F0C9175F3E0E628B471A6B895E1F 375034CF93CABA4A5D40F2305FEF8AA9E1F14173D5FCEE27142AFADA5ECD1687 43ECF7A960A0DF7222C1641C2EEBE02F5E1C7FA688807C0E09E72098B39C0BC3 819E61685F2A115CBCABBFC82C68A2D816379D463A30A0B395617B423E79DFCC 0DA89AA1CDFD8231BA44C72BA122FAA1EF41279F079D3FD842D3A51E07BEA2B8 132D14C8B676CCC4B7EE0AAB7B47C952F5B2559C7F1D3462E8A9A108BCD76E8B C47E564DD731F929606EAE8AED8714D38AA3D9120788E9CA4D1F6897737E013A 846AC95641D8AC8228C871E5347D1ACA6F5F324BE7757ED3D3A5C012D3E85F24 1ABC609B03D5A6BB7D9CEE401B4F9E219622A376F931DD713DB0043BE5B3E70F B88626D5FC25E86CD1A4400EEEE3A4683F396D181604242E9A5E28527EA2A2EB EFB34D5AAA4BC71894F75287B4EE684E5130EE7EF20FD737571C340F7867F9B8 E24E2C0D1BDD7925CED12DB7A8597E9F67B20A8DF00036DC4C60FFA898D6DF3D 90D75F6416492ECC4B00AA810F44FD40B8F9357B80474D0D68C8C7F2101DDA86 6553989C836A0E3745042DCD2A47F4B74C983BFF77D70082DD899C7E0C084EC3 EE2476F5103E4041C79C655AE1F10B6FF35C1CBEEE98080193C4ED852C1090DB 16FD990D8251780586A0DC44F0DB20315629A2A7310FA25AE8A4B9A3841FA7B4 45D915C9BCCD18661FA3AA20E9B9F4C2CB2D06B8F85C765E1715D85F5CA8827C BFE55D5E822354B4458886A1C778B2CC57FCF78AC8FD4CD507DB46FB96D45C18 345B58EB67A6D5CDCE3710EA04F019190F03DF361FC73F5227F23C4D654800F8 C9FDBAB5DDE070235FC7EA62941A9B9B9FB28266424497F3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSLTT10 %!PS-AdobeFont-1.0: CMSLTT10 003.002 %%Title: CMSLTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSLTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup /UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSLTT10 def /FontBBox {-20 -233 617 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSLTT10.) readonly def /FullName (CMSLTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 68 /D put dup 69 /E put dup 70 /F put dup 78 /N put dup 86 /V put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA 3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC 6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F 3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C 4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90 DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2 753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131 54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D 107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3 7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231 328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9 85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C 2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7 308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450 CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195 739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93 FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6 F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312 3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F 55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB 69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50 82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0 8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8 0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6 0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8 1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1 D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737 170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863 767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3 826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235 8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048 345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE 67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD 802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E 20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127 5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07 0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36 22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC 4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B 4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880 0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5 220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403 7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005 27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300 7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07 A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D 45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10 F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7 C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65 AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012 DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781 FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA 997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4 3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A 2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605 31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22 A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891 43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D 4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5 94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E 425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616 FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5 51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9 859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852 E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F 2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910 82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA 22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D 200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5 892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32 0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140 437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3 BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9 E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402 DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1 CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551 80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA 9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41 031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90 9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3 9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891 4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB 57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B 2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39 0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9 03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067 22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79 06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC 39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163 A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6 9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6 B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F 79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553 2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5 8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA 1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA 0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2 BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3 312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3 B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F 9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16 A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6 91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F 7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D 78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC 7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09 766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11 016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3 8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278 E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC 6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8 B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959 44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE 5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB 42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57 CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009 9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2 82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72 0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5 F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9 EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F 14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8 BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2 9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5 6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A 6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116 4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C 9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780 42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE 7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024 1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D 4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540 CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4 D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81 CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1 0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9 92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0 57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4 5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4 57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158 8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0 C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3 7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7 B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674 EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521 D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9 DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074 F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0 56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8 46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40 52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA 19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D 465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02 0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE 078E03BF9A1BCE4E489AC9495A1E6CC7D1FFDCC03CEC1A32490186FE8B53B09B DBA7F0E23C8F5E5270D039B409D504203A458EEF12C035039A8AA12C719C0339 F766BE6275511D585F82E9D4AC9B5424312755C4B74383FD094BBB24817D6525 EE62456392E5DCAD0A0157A4A033E440AA014D5682606312F72248E13C43EC3F BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9 50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985 328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD 50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F36935D325E5 5798292D7BD972BD75FA0E079529D3B1F11595ABAE42D2B38717C0D90AB40622 68AB011ECA53F66818B675755D1D434F1B0B6E1EE0059A0D27A8DE5FD4644EC3 AB2BD43722501D5F042B7A31237C4625BE2DAC9D090CC1C6FC76BDE5BA9977FB F3DA696DC9E4D1723923C54291A4B226056AC0A50974FCF7DFA8C95636C21904 D4A9E1508D4F3C7BE2579F0E9F79A89A1778F5D373055959535C6E5BC77FAD42 B0D5F7F44608B56AC8C8DAEF7BA9CC7E4C3466A5E074B8421ACBF1A2C54E558A 4BCFF2C79907CF10D1F246F989D96D574007BDD1A6D8C863ACF45FDE610F696D EBB1C29ABD00AC45735EC0CB3B3D6AC3916AA20A9D5460DB88E4F4D6FE264FE7 540C96826159652DDE89B3B3A3A19594E15F861DBEEAA0785842115FBF42D7E5 5ABF8F04E33831829ADDDFB6CCE864958D530AED495EA5006FAC07EA58E2E7B8 E93554FE9FB44F78A6FFB38550F0057E8A05A1371EC75A3E6BD9549C4305E78A F0299948B5129210289387E5A3C701D6BD986F4BAC3EDF1E37A41A70F0F613A2 78F650CD5CE4D0EF7DDDAE639ACE67FE6D9693C96DAC0F631B9E4251B6AD3142 72292EFE4FD775F89207BE44AC2CCF84A287F15C76081FB564133AA04D0BA27B F4EDEA89BABE8811AEC78373E6AAE3090D8296AC9095EBEA15A0AA28C2B05058 EBEC42B5BCCC48E12EDE11422AB9802C1C4BAD91C1BBCB087FF2E790C382B926 CA86BEE8919B8D1C5B76EC0F779EC1A895514D403E053599509B02744EF416FA 9EB10598C35AB9BC10AC08AD734A824BD60E93592D4C2D8C9B2EE9A05984D7F6 F7C8C49F4D551EDD8DA5B465D8BD1B51E3BA1C8960DB3EA4CA62779C866ECC47 1DBFEA875C5500E250112028F3392F3B7CD5C1449489658B78874B991B31B3FB 941DE9DEBFA2D9C1AC2AFBB4CA4DB4C0E8E8A7E53C8B6CDCFE0D92F798B8D3F7 5B2262D29D155FBE95CB9EA718DD03B0263246E17BB197A8FFB6DF6E575E0C95 5D8EBDD8882268D893B6D06F53ACD3C99BB4A93F8A94446A8B8E874D13D2DDFE C83FC2C8DA3D76C419F44F3313AC590C258354EF67C8DED3DD0368B7ED7FA2EB 2FB7C107DB44047AF724AAEC2998F3BD0123460C007B07B501C5DDC4648E6F92 7AD99214E2DEF55B150CCE1C66F5489890C1C23C3519D7C3A8BE33F5F565E295 FA89995A0BDB1BC4AE3E3846731867EC9CE37E9BFA7C0BBA82AB5E42B3955523 C26007C7CE9275A1148B3C4FE4F989473A3C1F4BBDAF89F2DC10442605B67AF8 DC869D366C723EF1814287EA73C3B7291266CDFECD205B7702FF1D8CC438D353 B2618FC8088814A457D1630404654674D7607B0B007CAE302DDBE3BFE949BC5B 78B264C8102AF3FEA35DB2709967EA487ADDC957335ADF438968EC9626F82568 887F5457EA9BB1B2D7D5814EE613B814B7DB80614C024309113F9858B39F2D67 20A87C50D86A300EE5643FC16D22DB272AD81ACF56EA512FEE24E652B266694B 886A7D11D05D3B9CA8CC1876FA31BA72FBEADF927E6E5255DAF2A69A18DA0A87 EA21C59CCBF632FF9C98B56712B797AF7D9B8095422478C2E7C590F68F699E83 65DBC55227457E3C0306BAF8F0ECB58C180322714B666AD19B55EF94D35B1CB2 F2D375008FE04414806D54E62EDFF07F5FE7BA9D93078F9A8287EC7EFF809348 F24241AF01C4F940CC99D0FCEFFEE0306A6E3037C90865D5231E6656898E5806 402274E0C00350E10EB2FCF40C63539F1298B69E85C66B208428A871B44F49B5 587BB836A5EF14D634DDCF25F9748E9C7C923B4B4FEF0C8426CC47C196E9EF4D FB413A0170FF8E4CB5AC8A72DB35576DA0A83D280F15AD7AFE84457CC908099A 295DDBF6B37AF4C5F1AC26D04B33ED0C5965E13DE1AE6461FD3966A1122DEE75 58468B6D7F177471595AD559455E4C7C0203FE5A21BC85E1B5DE4060C4770B0C E24CE3BA31BC095237A8E97FE57442407B113957AE85CB65263DC7DDF07EC9ED 54E1DE9ED55BD1C2A4A9472DC0E824554C74679BCA2225075BC44C2DDE800C6A 7B09265D4CD7119A5BF2342B800B8642CD883EBE572CAB84D9F27EC9DC858C57 72327A47B86671D7E8A7206FA4FF92DE1938D3682A9110C6613FF09E7883941E CBBFC2406E321C90FDD22C408FBF71D63786FE8E851D14735081EE073290E1FA 2AD60E209E70D803DAA91D953F569C002E5262F57490DD563872A646DAE7B9AB EF169E3002E64280DE1C57FF471C106008010AE548CA16B306E93270D5BE6B9F 0554EA79850DF6CDC1805AEA36DB19F5316051B676BDE5999CE5A46CEE248A5A 84C7080280C75B6C4E52E8E6BBAD0A272533BE7C5BBDC8FD4ABFBBD66D98F031 AF00A05E4D3629414E3B86192985248CE5714F605BDC1DD8BFA3BF7A996477A0 4A0A7893B27518EF21073C183842E55455C67A882FF25EBA3DBCCB44E0A5010D 0E27E42CF21612805EA792C3CBC8C7CC7CF28566045A5B59EF30AB66131ECDFB 132F821CAE028304F9399047DDCD86BB154872C664D67F9107D92E5BEAE4A8CE 2CC6EB668FFBCD7CEFDB4E4AEE2618B6EC786B8F78F41AFC0715C89F60372EF5 94B2CA69BF36D740F4074E2A61CB5EFD4AE9A82583C745BE9A6297F095207310 17C78C89DB743D1670EAC207142771EF32D0766084DCC83EDC4DC0D35FB61DAA CC25DEEA83FA4A49142094F0CDA6FE4D1C77A60FEE4AC50DC132718E74554F1D B65E504A15EBFD4E3CC7BBA1639FE1E6E683D2545B0E77C0A69D5EB6461C8C5C 546E27588FC6CCD1FBF887A8A4160D1E9BBF191C8FFBB45889114DC69A5DE26E E64ADB600982F318E2D47EA0A13562BA054CB11FDDE97B668F8E9CF0D17A07FF EA4DE83C1898477E3E5C3880B8FE0712494105EDD82D6C0E13C8DE832D449051 C317DFE4A2B18F6B0CBC86158F60B1E47C278CC221524BC8DFF2F9E04B2CBD9B AD148F57C6AFAC6389049235EC2BC2A506AAEF7D9871DFCF1775542356B628E8 89CE7C7B8B965A1F20F8B8142C6E4433312D1ADBD597DAF6CE3412F0C66F5AD4 889B19D75FF03414CEB2EFA542BEBE567B5AA3108F8D51BB8EDD2A170505AC0F CEAE3AAAA5B94B164AA26F11F2B8A2C8A5AD46E9632A1D8DD059215B80DD99F4 0F5284CA3F7D733CC5C5E883BD08BD7C682239783E11CA76462297A0EF40FF22 BF86FF66CC34338E34A799D97999A65AFF4FD6401B7D63B0B00DDA789696B22D 2DF2E8355F6AC29ED32456210396080F6995982FA24771AE8AE66054A4FBCA0A 90C8C72EB509D16A0E7451A3BF4F8D06128DFC5B16F8DF52402468581C752093 538827A4678170C64AB204D90876ABD495AD63FD796D575CC36836A0E9BD92E7 8D5F26AE4159CCFE773D9A9F015EABCAC46F49D44954BCA0123EABDFC771DCF5 FBA3D969C1DA2EC854EBA79BA7EAC4776EC8EC0F281FE506F5F8F30E8BFA36D8 5745858FCD752BEF278000AD45A73C2E7A9522F87365CC20548AEC01053815C7 101DD466819159F7D3AA4123C5310667737541F347B0F2C26A3D6AFB4F850D76 F1F8E8D21BE73E96D0A792A7249A3B6EC390D0E0333C37BED4EAD667E52C47EF 8E95BAE21D5645CCA78C4D87C3D41A01B72B0DE621D14AA839B2EC8378264C39 327558927B1ABA842F046E56EF5F027AA08EFE6A5A3AB3F692920BFFF1F204E1 CD24A506943F44E6E9F9EB409ED25E396851367ECBEA292231976C160376E026 6E58AA64A970CE06172B1B893FE3A1F8B115E9E789E979299D2DE91A55C0C357 DFF42A557B8DEFC86F941BB2B6EC433FFEECCD560DEE13D227FCE13B909366B2 26128AA7D491AB0C471023C5E8F7790682AD4D8D453B0DAA1E3A9D922F060921 8D98AE114F63A888CB2F7A10E0B5C0B73AE7018A5FB9AF00C9F5C96CFE592BF4 E2FAF9969381133AA7E2C6B9F5C5A4AC5CEDE5C1DCD3AD3D880484AD82C42FD0 E489C54223A1933362689A81C9F9FFF602460EF0412BF94EBCB451433146FF08 9B5CB588C3FEF4671AA2C2EC30449BCD733082E2E63F52361EBAF0813A317A20 2343801FAD7111A3BC719F311277513426E3FF8CFC2B6D4481AA22D67587A19D BA6D9EAD709D7CE16C81713A09FC74FDCC0F8FA7EC4ABABD0EB0017509C6A37B 6C999519372C771D0836B78A54EB8558CF45930CF95D84A75C27D777D59E8BFD F91F199E4F7D7189DBA06983A4FBDD13007ADB8597272389632EBED7ACE792EA 19ED7543D0C1340E653A208972FD3A82785F3C72C212011160B4000677A1F301 7199D00E84F3CF71C4CB6CC525FA2D559229A4817437D3DF79582185CAB49331 9D503A6379C35397E950F4C5ED6E9FE8718C661B561DC4851F87ECF1FA3300A1 70CE444762FB51F61E0EE5A1C0CDB9E993ACE7844C9CFDC90A519FB5A109CA9D CBE0BBE9610E54BA414B13BE7C30FE41AF0C1D619E63F39A7382C0C272AFDB3B B419D5B96EE889676EFC3C31591FE1A258AE52B625E0833D4E8BE4109BFA7533 9824D0EA735B62C25334C95D7ECD216E238D64A650C61D8D30275963A7DC4739 EBEB9CE48E239274F93430125A9C13DEBB739101C27CF91B4A78405E9226DD3B F5CFF9D9EFEC276986C4EC02F638D284D018C93ECCA1E878CCB4473B07C75544 E2FA72769C3B546BEA59877EFF4C7CEE10DD9E90989D528D1E37A9A57A40D143 9CD615A85C0D1762CAF97211AB8F9306388D193D203EA74667986CA30AA03FFA 1DCF14856F39F26F85D7875D984F0F746697C3E4FD4068459BAFE4242E4395C9 0D7BD8286D2E9146DFFD94A4B1601C2470A44F1CC5BF449CA64DE0C94ECC2FDE 04C1E086B72B4A5C92C3E1DFFD8BF335C376766C9477CBFBF7A65BE4852D0D7A 420EDE7FF91DD81B22DCD1CF74E9E2880C3239A4C96B1F7673E64FC97BE7D39F 7D0D1DB92A9DBD670A3CBCAC115B2EA0FDFEBA8E4D1C56D30A266F4200B3BE1A B083F7929F7503D658F3FD2BEF9F6B7102487B56D391FE8892FBFF470111CFB8 2DF021ADC9CADF227E03685A4985826A7753F30644FDCCA92FD03F2D18B22E9E 004FFA75B8B379F2DCA0902C5405CA81CC060BB65DC4DD11E8BBC82EED3C0399 E563A6D9111F2B5A2CB88F4A9BCBFE81D97B9E440F9F87DF039ABFD1F04980B1 EDD1F226ABCAEA7FB3C13FE1431CA00BF18F0ACD324E4A5FC0C4ADE3345BBD53 E27DF43423A7BEE12D97B2DA17984E32115A14E14EAFAD4E1E02A2A8B67FCCE9 FA749C0B49126A0007DCF7E6715801DB3C633ACFEBA7414011DF1563076EC5A0 037FBFCE2BFDBF1A6C18023817EF6CAD7951FBF3D7B2A3E1A64DA661286223E2 FB64796B6530C6D73666C89817EB174D485867C2C5FE806CD445D0DBE5FE78A1 86DA1F03DF21451E496E58109B484E13C35F9B37ABE0A8066BAFD6C5E6A19F76 BE90972D9205C305F24271A0CA246C3C35611A7FDA5FD18B594AAC69665F28D5 6A0F02820D1FF1D1179AC145F0DEE0DAE66593FB790E19A03627757A577FF4C3 4211E1C15F5856965238138DE3ADE1EF9BCAD0B9D7F542B0C4AC36D35161B3EB 6C40DB4EC4FC8989900C09EB33B1EF968CA77EF40E951DC68B73AE5D505615D9 5ADF394938D0E811FA6AE08B771C52EE8287EA1A484E14A39750C4E5A9D38454 EFD6D0E2EFF11A3891AA124469EF8C47D95BB5D0E127C5F3051220BCDE1BD7F6 1643EC031B97FF73627CA8209F345C9DF0244CD985EDF7A77ABFEA5433FC3649 21F67F4EA8828AD7A8ED2868FE00B891E278FC047D22B890D2AD2DA8268B42B1 0CC08602F3B3A20D360BBAD75D9146A041A940B806EDE283A2BA186DC7D1B38C 39C71D2234CD99440CA2DF7CE93E6FDFB017F06049E410306835BB8E9B53D793 5BB92969DA4C2A673FC9254F33024BEE5A8EACABFD311A17F5E105E2E4254CD3 366FD80717CCFB67BBED4E58CF2DE3A22DD33D90AFF8D613DF45488C62D0F2E3 A227ACE770A01B3D0D995E2E26472F5939FC7DF99C0DFB4486C21E8448B12D19 C3443DD3B325A8850A138DC9B67C46D8FD3A411792494B87CAD0D9ABAE5DFB79 B3341781A4F4943731C4B2EEFCC5D1A6A9C8A17A8CE167227AA96A3567ADF293 E4AE8E69301490CAB69D83ED5B48A52D663B6F749D50DE677135D81239DB4B85 658DB20908CD7DE671BB753DDE6C35074F2254ABFB1A1193D0352BDE98499BC9 10F5D180A2CD0D7B6DF8A969E31D1A54B37B08A78385E4139904E3F6154FAB68 77FCBE12E3D3AC23C27B1FE87A912C088C8C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT9 %!PS-AdobeFont-1.0: CMTT9 003.002 %%Title: CMTT9 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT9. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup /UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT9 def /FontBBox {-6 -233 542 698 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def /FullName (CMTT9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 49 /one put dup 50 /two put dup 51 /three put dup 59 /semicolon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 73 /I put dup 76 /L put dup 78 /N put dup 80 /P put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 95 /underscore put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0 42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259 4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457 689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521 0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA 610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8 3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735 C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933 995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723 2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0 4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014 D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE 510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5 BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF 93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385 45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757 4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47 088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8 9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A 09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988 E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C 0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C 94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741 03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF 409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71 45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95 39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971 58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85 84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A 0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B 3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B 7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D 8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737 712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3 E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC 2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467 757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C 54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981 DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9 08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD 6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2 A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5 336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB 3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627 1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903 FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72 A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6 465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0 3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32 CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF 573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA 9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D 15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5 15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1 64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789 D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8 576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540 ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135 EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC 9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099 3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A 1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598 C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA 4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0 CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7 3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9 BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6 1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D 4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442 C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D 80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6 59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647 3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6 14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59 B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34 F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8 54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588 34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191 825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439 BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54 4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F 66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E 2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A 1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416 37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6 741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1 39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC 887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49 B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD 15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526 5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1 80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839 A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404 BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048 2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598 F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B 9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483 CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91 DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62 6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B 7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7 D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B 9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9 EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12 0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2 1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10 85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0 EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518 E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0 88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842 E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8 01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68 54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A 97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78 B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2 D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9 18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13 1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62 31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5 408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF 1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E 29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33 BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8 0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D 99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE 480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481 FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB 587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51 A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4 48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367 385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56 8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38 4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C 839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C 320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63 7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F 461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449 1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A 3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500 0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77 EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8 F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4 097C4995B60BF4D8B3AFD0A002B3A6E4FA114131410D5658999B86DFDD3005F3 AED1FA8F077AD1F27EA249221585703F20FB70E37A26C6C3F2E101693C94612B 65BF89F37AA3C10A40EE8E49915F1A1B95D2193D8003DECEF9D76FDAA33B1AA9 CEDCB21C2A3B05747FB3ABDBD904B66EEC60CED2867442F5FE445587EB8C6D14 87A6B1B4871A8371A7ECA6A159EAB295B167CC35ADEB8512FD0C237421773BE8 A081FB687F9C5D676F2944DE6E6B639C37E8E49BD4A6F0903E0C31EAFC4C7ED2 C3C67E71D8BE2B8D5784E8A6F19A9A8929DF9833440E160945274682F435DFAC 575048CC768BB8F13AA21C6B125E6073611BE138AE06D13E62E7EDE3D0239474 E040B3E446165FFE60E20B75D2A5F9EE021B22256621C290A8F3342F0347B8EC CFA6AD68D47C05268EE3AC8683F4840D736EAB585C6284018DC94FC103B4A882 ADAEFB625EA966F3877B3FFEA518B809A4BD1976F150D90CA8D3F4CD9BDE66D3 C4EDAAD03F38F51BCDE46EDE3886162BD9BB261372533ABD34FED03C561B0130 BBF8365B2289D193B45CA39A7A738A7D573E2345E7C90BBECA11CEDAEE221757 21D744792446A018BF566063ED4B286F03DC5B7F675B6095FCB023CF330B9941 F4CA0142BE88BB675436D0811B54A389DAF3C6742FE17ED4B6760401356C5F45 2BA5CDE430A38B9DBBA11B96B48FD6B91492F12108A2BD5DCFEC68DCAC37B01F 34829D2B458E78C57342FA33F4B6C22F4B14CDF101BC10E7705E095C1D41FF88 847F3CA10F0CE5B61C99AA12085390CDB04303DAE42C682E8D51D67BFC9EBDDE E875AFE2C97AA54CB9CF4CDFA10D20C35A742BD05BF2610E3AB68D03444E830B 140637754252B2735488BD1E0ED5C20050984E08E6072690862EEA0EECC2F630 D6CA6E30A1C8C7E69C4DAEC4C75BC4FC4FCC6FEF365C73A4B3810591CC6D443D E7642EA8B6141FAE0D255B164DD0487C92E379BBF2C611A0CE138D81512A748A 2F8839DA6FCE17A54327BE9D62897840729E1D46929C96685080240A13FF3217 C9641EC494FC47B30938935CDA0B2C44BD08847F22D693485AA6A0F05AA5B483 70BAA7AA0C3A14A5B5343666327A003001D221D9DA18EA194DC23E1301D171B6 7C5EC1EB8370AB77BB0356CE8F299013E1C7F5BD9C6F2CB4E6145581F78591FC D029F91A54F29EB0FE77BFB5C8FE378E166955B2DCE364A71C3AD33DE1E745AD 417E727BE5D2B02EA3932545F95EA4399C4CDCCFB49709B491FD6A1EA2733568 4FBB320505889D4C5F32D4B4F10C28D0A661471869ADE7B824DCB6753D03C393 E76B6DE5DAD6D5834739E426F3A0C660D784E5CD386E6A5441FF6B41F9448A7D 56B14E40F0174365321667F84977BC33B2050D532A40397BDA697361BDC535F0 53ED23C5EFBE4F7C6794304A0FF6B67A7C8E8001D47D7733A13FC672D9AEE1B7 FEB0DBC7355F635C86461F1AB2F7E0B9C80F61E830599F2CAE67E85468336481 E9E6433EC7EFFC359B70B98035F5D2CCCA4743B9EF41F19EBF3B550418D0D913 C48E9D62580733D4E210AFEAA5B764A521F387CDE8411E3EA996347642BCC3B8 05A60E6056EF0FF34F028ECAC78C19826F1EED90B01A47DCFDD769D78458647E 505492642104B550D057D73C986E2CBE896B52CBD67FC056D968AECB5869C712 4D52E0A774F3681832AEE1EEACE1DAE31B779ABE6E760072522C4EAEC7D5538D 701B0C048713FC390B5E7D9729A5078AB46EE62B1B76857F65A3959DCBE8A409 D8297851791989780C35328D8CF730881326E2C796A9A3161CEF031A068C42DD 7E58F4B3B788CFD4F05195B4D58CB5FDBF7E06C44280723F27C20BCD234D5E85 3B3AF6D9A49324CCD96C1B82B4DF94E182EC62C9822AD4EE33BAF810482F3EC1 FEC1B87CE6039C60EDB6A8D189D1715A7CF542CEE4197488CDC0433518271D4C 53EB8238C67DD01F7DD2DF798054EA8CD5922CB9A8E3D5522F71400DBCFAC866 A8B37C0ACAEE6E8F18241BEE610415B7D7CD0F02302404862137AE9C9F9155ED DA5454C584E89277F40048DB5662A9A5C6106D16A51D3A5FFB7EA197DAD29ECB 219353620641D310BF811DCF8701967FC99B937BA3D369D0A18A98EDBB2B1EAB C0534B458266976D1D872DF0E2EA702AE79A273054C28425B245154BEEFF874F 5929DC8179D2DEF24B84CD7F8FA385B17ECD04E71DFFB618611C967040EBBF31 867A1AF98AA82ACB6FA1E65115D06A5D10701D8077C7F93343D5CB255A565738 A3AC97905293D0B83DF381AC9C3E9FEABDB49504BA5D04043A4473665488BABC F9FCB4A97167DC394327F0CA3510F8439843B6812ACAE6774C523EBE7434AA5B 0134719857865320EB40001E310370BBB0AC48E4950B2C817A48E2EC92D04524 EAEA30188E333AB95902DEF3088B9CEA52D14078A3FB8ED012F36118F8BA671B 6215E1CB5A619A4EF1B390CE97E99FD0453A4493EB45C3793BE85CE13AE0C199 C388BAD3D4ACADE0086056F62708B4E3CAB3864F3E0333E615894916B7334E43 4DDE99CB3C92155F1A07464C5D3592E89CBD25D67CEEF0C29CF2501D0F9BD6D6 9644EBFE95F2550A15A4E8CB6AE38F6CA4B006FCB5EAC6FB4A789EB88F891A87 1747B5A5700CA2D8E531BC372A101783207E7FA42A019992A5AE22BF55B8538D 538ABD912CEC58C5A9C5F78687A3A777391FBC5CB37B47CB70B7F965264E78E7 57F9C81CBAD6693CB97300FBAEA8BA041E5E9ED3CEC9FC796F71F50823F2D2B4 7CEDD0C6562D1B0F63AC218689002D09276EFA203860CE660E5B36A02ADCE68F 5643412C907A028843F6FE8D05B734CC8F525C9D4F2D007E12F49256AD5A6C26 414C48438AF65FD0A116091AA59679EF655804DE72D4A032C88E70E965289014 4AF3B45395F2762F9ADE1CBB3570E9689694F3D77E1DCB65BE20460D077CF2A0 344D1C07DAF4616BD52353032F50D5C640805D78448DF7E49ABBD2B2025ECBB8 57536EB7EDE67E8647434B74C4D232E9628D2175D49DDEFA99236310B466268C E318689AF662B44D804E96D1CE5265678629E079D749554EEBD69278A4EE8795 ABE7495DCEA3E85E3C97C91887EFE33C90D83C267379A67F7C86D812C63B56F3 D605D45C36A0825B1CB352FF1D016744ACCA4D55A5A58D8651D023499D14F911 6CD4C962EE7CD9110067F99C5CA5697E539FB78027C7FCD05060A22E220BCF85 F4E3DD7F176B4615F53025F126E9BCF5647954FEEAA6382BA7D715867638EEFF A393E427329612E791A950FC84CA9EBF084D4A67A24CFD7536591229E67E4410 1FE5D2E74468416E9720ACBD535E13641F39B38376C676B01629C6C39CA1158B 0021A3C98C921B0C5BE8EAEFB0F489FA59834981F3D70E70E2C5CC9DD905BA8E 03A6AE3DA98F9438064838B0FABCBD83071C7D49E37DE9D6C5289AB2825A62B0 2A761A7E1BDD75D64EA0C2800699EBBEBFC97CB7212DD3DFF3284A966415E0A6 668C25020BBAB3D885303AA85239B69C9C083D9D6251F35A20F63AB04ED2D7E1 AE49EFD44BD620CD0B95929C815D8D17F909E2102027910DD813F5E4F20D0FF1 D4E4541547AC5A6143439EAC27E0F1A11A430373FFA4401F7844FCBCC0D4D0E6 C5E52E03157831BD6CBA03C00D2BB80C6CD64D69E885AE62D4ED452D2F4A864F 0BF0CBD86C2780AAC052423F590DE3DE4D6E39EE05A15199DFC75F1FC1EA1D1E 04514C061C4FB7FC872E099B526FF927F6AD8BDAB25CDDACF03E15E475979B53 1AA25A8C9F77DC958A95A5F9A3B2D4B1CD759E0257510F850F148351846AB8E3 34AA5CCA4CDDD6520C36789CBB281BA7DA20F5976A4E731681E47765896F4108 2859376056F823A6E40587935455C22B1AB003F4C8053D57B521F1520009744F 091644AD51BC329FD432CEFA48C7CAE415BBD7362DAFB92D997836EFBF9DC5D8 3AB26A0DEC90F175F0222334BB7B4E97A84AE6A01E6CF113262443AF464B24AB 1174DD4AA1760800CEF690AE6888E7A1E82D69DCD65CFD57CEEC83A52E28F299 1FDD8D6BACD3F9F38F92F3E98D086437F44F55B49483C9F49A776191E7F26D7D 9FF8642E1D69C6E97640A64BC981760CD1E423269EC8DE0166FC053D1DDE7AB0 163DBF3EDBB6F91FF217BF62CF640E673056D030303550B3BA9B9EFE3886E79C 015F68BEA5EEA461083D72F57DE6D38BB0F91829FE9B550B0A0E8BD802591A92 494F50C8A2E29B2D13B7F930444C5CBAE371E3A32F56CE10DF8582B697E6E7D3 80ACDB11EC9E080B0826D6CD8E378F5A98BD4CFFF1CA77CE5825EECE282A4C9D 60458E57C15617D16CAE6114A65FD03CD57411C143EC678290410AFB7092B483 C9A4F08AFDF5AC048ED7C0B5F04A86DFA1760C01E1A7B5629E9DB276BF04283C CBE698E90E635DCF162A543EA956500D2B499B17D1581B729DEEA5C5E141C164 E290CF3A782497CA309959CD6E79E7E0F0989EF12631C7EFB79DDC27878BA445 828C7EF4F4647683BAA41003E67515C4FD367D6DDFF53D987D82C123CCF4E1D6 F6C0BD859F271BCCA27373CEAAA0DFB041B5A76C333B24F69CB46EAC0C58B3DE F7B9F95B2A6219BFD48AFDC471789AB6563D582B1DC2B55E657ED1F2DC33C718 ACCB45AD417E725FCCA5E848AA997A5E2ADCD2FE85EF65B51BBA20A80D9CAF2E CDE7A216380C44B617C3965E82784856348A9FC8F8078DC34BD883A048C3DE73 584E75F2F924990802906A334C45D82264E3806C1618F8645D15513E014AECBA CB8D02A925393174E3A0744D635A630DD984B7DAE5ED8D7B48A71C8580995E24 E743E83AC57E445DB3B914A0C7743BD608CAED5F31AFA9ABFAC4EAC3B5F7C266 13A496E1A546227BFB3A19ACE042D13954446409E09F4631C6EC967CA2B59E69 185301A999A28106145843A60B963FD7CB0EA0AFF4D2F850B55C88A41B9AC5A5 4A1D67A0622146A75224331421E38ED23A3FC11351B0FA8B2512D1A93C7B909D A1993FFC80B3F114A1468207592BFC34F49A15D77572EB129AB1393F557092ED 59BD1E645940FCEFB4B3E39771E4983EAA2CFA33573B7FBA761067E54E6CAB15 678536A2FE638A0A4C508A71001BAED69F3D4C2700C9ADDDB666B1754957A8B9 E98DF835AED0544CF272ABA25FCAE349E0A24449E36A2719F2301426FB61069D 3F8D24DBE1A3CF15EFBE64012D5A05FE5E81A7EB841909FB8C94C8CCA1357708 C5E8BB923F791D721920C067A0A8065691CF400414C9E90D7AA794F2C7E845FC 08FF4F8133F9C82BCFA699368ECBF6AC497EAB207E6F60419D91E5A0D7141E1C AF70DF40D7723923D15F4A33742D1C0439FAE7ABF110CDB6256FFADBF296F4B2 651182F3FDDABDF8E6CE2EE98FEDECF192A750FCCE8D91A3D7C47B6FC3DDD73B 925386537D7A9671B9887AF57AEA9A19610AF44C14EDC4CB00505A6D51492117 BA96923DBB4F1C078764E81780E384FCE44944D68E843C0324A93511E394F3A0 27DEB767145F4B28B353D6559D1731E07781F21B794C346779D59AC2A269FB10 706ADBE2DFCF7FCA0D285906DB46B0CE4F54CC0C5C9BD85A1C1E1207AB6E0E2A C13B4C5D3B04D50C4686051BFB8C7C583104C5C06C98ED9793D2F90CD74F3B1F B4844E92D260D197D6F82C9161B78B509F86D0706DDB488119034CF8CE3F8AAC 24A0D3145ACA773AFEE463E1ED290ACD704501400832572ADA4BC8CF3B45EE50 5D6B0BEFE762E3E46681E856F031B50206F0EEC6FC48263FEBAC451E4CD5A577 D0E85CFCC49645790DD11C5A939D589AE552BA5D1933ECB14BD54CBC6D8F036D 76949367532CC57FF4DE38AAEC7F324691D5BD96C1A76D976EE267F4B6414CF6 3F5F299C162BB63B5E64D284A97878ED05B770AE864607C538E0CEDD6541CF01 5C22B9F702C119CDADE25AD23C31E78F46D215A6D65F37652C4D74C636CBA212 8D4C6FA5667BE5D25F59F58C4D35319896060116ADD5B27F94205AEF4DDEB648 C3DB1A06BCA363FA4538137B051D4BBC94B34BD94D9C8E728A99A067933649E9 F57F1A08498E24783960D546B4F53AFBDD15F401C78A8982DC42DD2FCDAC4E47 5DADE22DFE7E013275A619AA38B3889F8D81493BBBE04FF6E4815A7B51D6C162 58B953BECD461972DA9952AA2F44D16465F0743C602CA583F436305FFFDB6F7E AA4398524C2D804BA3B3DD14850CAD0FD15E2793E3903D9809802F9FF33947DC 56D1E63A6DDF36FA836D2A70DA1914954CFEC82E645FF3B17A6C18E9D1DAF11E EFD529C47B5FB67EB6925BEFDCB2965CD8D43375915B2141319293CF55912FC7 9B7D7372DCFC480C344C0755B802DD31E82F7808DC99ADD39A6F37FE8417AFDE F6324B415C36FF87DF66543E5E411CB83985EC6972F350236B7DCE0E24B0E59E 8F365F01803F62EA64DF9BF8A20755E1447BAF2FE8BE7662DEDF67BF37CFD088 1BE20797FF44B62DC3A4AFA09FD64937C95E7085489099F185F66E3CEF6F6C8D A1362FA13C853D172096C0FA44F257F6270D22EFA230C261791EA6062D3BAACE F5A1EA0DB44BCDB834D28D02AC851440D145C1885A5B1E5DBF1F8EBD076550BE 064452220616FDC46A7B92250F07C3D0440B8ACDB87E92DE5C567AF0CAD733EF 66C90876469C5FBCE277EA1C85E76E00BAC14B824BF743D90AB86288A3D740D9 6E402AAF6D223C11D7F4D03C47E39FC45F5CAA282EA30C0351D580A8734346EE 735D909A2F6D23F1E1F55C2163AFDB42E528A1FB6D22FD3ACCC12CB771FE1E7C F5C946D682443A26BD0396FD44DC9484C75469B7CD0207EAFCFD6BBDD0A8989A A9B8FAFD59F3FC57F1C35ECF26EEA7B09A6505EA01CD8ADF8FE0664BE19D1E05 56135EC7C89F64B7426E0DDE5CD424A834E576781A6179F63B7ABF41FA9A1EBB 45C8D93D4C172353952D961C9D3BF0FC42F7EB4D4AC32750B0BC9596A4D9F610 428239422891286815D66116A02DB58531B25CEDE819F7B5F044A9207C264DC1 FD02DEB67B622DD3655D2FECD7C106F0104FA05C22D5221DAA6E134D3149608F 03FC97DF783DEEB8F0757E2116B36BAB0384D18184177D97D947983550285B17 1DAA6BE705219CB6ED34D02CFEB76D708014181B299F69F8B4CA7D0FCBDB43DE 8AA73403A531D81A9290AE447184735B7C2FA4F81E59C07FC8454D690EFD9F36 0D7DB4F0FD87DDA518387F342F9CCBA1B36985D8A2EF780793B79D4521AB828B 5F0006E8A4F41976945501F3BCD6D8064311E6471E856D89903810B298D82560 A04B927F04D6B8E062893466A2B98EAD6FAEA3866F0C43ACEA9695FC602F712C 1A563759D399F56A38DFDF00A69BEBF7B52ECE48E1F40001C6A94825BA48A318 399A5C879C7C70C913DFC8F0D26070AD1FADA158039ED6140B04D4ADEB2B3605 B5EA9F670E2DD40180886053399EBF39FBED864034C95E378789FEFA0055BFB2 148FEC39E0B80C4793BEE6D5109FDE9B405E5C32D8480A854838E22A7723AF08 786FBE9A4D20207BF7A2B6AC3A8B38FBAC4EFFF1E961C0BF3750B99929A891E6 7E3F4734230D98212410DDA8665ED6EC2CB22A4210AF6E7E0511214B6B714708 644ABFC6D303CDEA42375BB856547B0CBDF73FD732B5FE2402C3BE286E391BDD 70594242F300906C09747A66EAC5AC8D86E3F6D9123E5DEF6520C2104DAFBF29 3575D497CC5C01DB31D97D5CD3A07C7A5D3C0ED470CF49BD885D7E2B5D336602 09BB1BF76513175E98977D5AB84A0534FF60C8BA59ACF3E82011603B0ED4B691 8435CAE6D4D937B84C14E8D58F5D0DFA6193491BA4DA4BE76D8FE65F3538D019 A615B9624780817B43BC9980C5DACE3B92927622459284E0F337C53694E745CA 9578F28788330B93D257C911558D443764E07C81B910B7752F53A2FB665DEBF3 454D88067569006D1D55BC6C31A7E02632FC1AD74FA56CB95B0C7679CE4E917F 4C364FC8FA6DFF3ABFBAA8193B559760C0ECA8FEB1EF4B1A7B09A412E9825215 A5ED693F182EF3C51337A272CB2328875C437ECD0D387C93E25E69B82144804A AAF142E2C3054F59459D51F0AA663C50D317553B901712880C4B3FFD95F32C14 424AE2A1CD3913497702E2BE6049CB6334A44CE727DEC48F259F8C5A514FD25F 62EEDFD4CF170DD2CA4CAAF4B22C9FE090B4D52C96578B30646361D5EB942CB4 B8A8251F02A22518E94ED659C193DCF48423DBFE0F909D10A84CB8AFF593D3F0 E6EE31800E36249E0B7992E620CFBDA4B37B3A8C9EED8F13D9FCF96D517E6F79 95C02E77A9615730264264B9524C7F5F63DC1827D7C6EED9F602D0D94B78BC6A 1952BC2038E3D48FDCAB72DF8CE7B034AD9557AE9A3FDFE9D904D97DA83CBFD5 4C90B52624876E17AF64D0E24FFCDD2BCCB66D98DEA7680537C79417A4F18BCD DD98CB487B447A317EE2F00E28716282A514B19EFA35CABAE5314ED349A50BDA 82A0FF68C318D5212DA2FD9D3E7E440F2E592BF08F0DB0C901F9C3F8868CF2CC F50832676814B2A6832C1BFE1AF637A3AA129E160FD29898244A2D0145AC8332 7269BC07364E7367CEBDCDF7DAC0E3745BB58EDBAF00618A7619F31E5A942286 CBC91C0B565B57F9BB8C8BEB3FF3FD10E4063B85E8874C1DFA13031310FC2826 3E67D0EC92DDF46F23F0AA4851DC75F92CED85821B3AFDB02D416B7D463947A6 CA8F9409621B95631862A86002FFAD9FD0098A20961AD38B234DB08E5DF61D51 6F85988ED8B0ADCCABE7F1ECDFAAB1DD9BD40629B1E65BD089396FDFE0A17C40 99951F668BD116E812A245936D70E294285F89170447520CB556944F8DCBE076 C4FC87625AE3D679A0ACE7DBC73FE4A28A22937E48C950802CC71D47DC551A9A 3B8227D72952C46FF592DAF1746D996CF17996C146CED52610176221E9CF510F EAAA612D1265E4E1E4AE2FFE7094A99C139A44E7255D3A6105A21435ADA34ACE E82F071DE99F3A6289C0C04362EFE40997E9E15CDAA5DAAA4C16411F26C01C66 A2A6EDEB969E9440CF7A8980103DB8D94538D149FDAE75FCDEFF3F90424DF294 0EAFF17284A5DAA1D23F4BD74B0F5B50B78E1D8697C1A3CB203B59F50837E0CA D8ED77940E586EC519D0AA059F4A497D49635DB8D96DED66BF8F3CFBF7C12C13 4693C3CC69C420B19810551ACC78E060C001610E0EACFA822BC9716D3671A62D 2AF9B525B9043C67081A9C2B8D3B703AE5C407EA1C89610E4EC92A953711D45B C7801F58A316500BBE4794193AA9B21AE017416D1CCC2E4C6315EA0E6E1E825B 972DA5B331175BDE7111FBA4F41C13CB40427A97D8B9A5F1702E9A9EB0BBFC9F 0E00B4759F346D38E8A47F2F0C63C7D284EC8DB8FFC18AF0120F081126347A60 2883E5EE4BC0858AE21F48CC271C90B37B191CC377126A41EA064D81C6200B7D 340924B6F50564EA4D2A92327AFCB1D5B07D6B801125E41732D4F373CDA0B495 98106652E949972B86BD3882AF0993C5A0B9368C20DC3CE87C00B53267188A7C 2FE7EC5E443654DF30463A83069D90E7BBF0C787B8EA11C7D7CEB456B28B1ADC 605A8956DF1B63938C2946B06629FD12BA5AD9D627ABC73DD7C18D919AE05198 CB7274D81862195556F92EC63E1DE68C09D2C2A6AC9E049FE7A28410201A4D93 D569C862EAC182B1FFC5715B68E40D666F59B8AED6526D0047AFE6891183925E 3A2EA27C741B8C4FD031537A461737709443F63EA922D2DBB2C5519A72A78832 619F190C31767FD4DA0521343C246C874F6B7F53F444A5155984062FD7FF2E4C FD12638DDF777F9AEC8EFA25643B2FF85180A73292F288A13EF1593D0245A90D A8E50B6870075310F9D0258F9626D577D64894561FAFAA31A7627B38F81BECD9 B322EA2901D61545B7489D3AEA31BF314D236F7994517EFB8663F38D0DDBFD7A A992C19863C9B3F32D21AD970A8869592BB97508F7DE9544C360D87FA95FE33B 796D41808589C67D6B0374AE0B7F55DDA11CB34F9C287119636A642AD3A40B2A 7F6961CAA3FACA92D3815B68184595A93A903F73840DA1A3699A420CFFF61F8E E38B82E30C1E0F5F3E5518A9E87C2B4C0177AE246AB345A65388104584EF11E3 88254BB0CCBFFD36A924EEF2D21C4030AD5F3CCEE563998ED48CFFFAA24DBBCD 8C7F885585B3A8B3FB5B8A03D307D752D5174A5C450C4C64369A371BACA1C7BB 4A7058108DBE6065DB0C64DFD4584C7362CF17F2442ADA0FA4D89E82E10E27CC 133162A1DB6F2AF58AE0EF27904C89297E9BCADA2017140A52E267FBD44D5704 E61C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMB10 %!PS-AdobeFont-1.0: CMB10 003.002 %%Title: CMB10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMB10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMB10 known{/CMB10 findfont dup/UniqueID known{dup /UniqueID get 5000761 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMB10 def /FontBBox {-62 -250 1011 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMB10.) readonly def /FullName (CMB10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 89 /Y put dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 103 /g put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D432E1428FB6D5BDAF 3F02C975AA4E0072BE5F8CC7D3D59BA3FD04709FC9E52189F55C7747056EDBF5 F85CCBDB1DDE9F9163AC7158EE8DBFBE8D94A46510118ECE6A280C4872F448F2 E6A6B36AE3224FA448DAF204D1C998D010C6BF52DDCC45831DF1EC22528B00C7 70525CAC9F6BAD892E7D5C81295A2AEFA8A5E4B6BA2C4EF61FD3FECFA2A8551B DC84DAC597222341E762620D3D3C1A4AFF2F6D68C4813004318FDBBDE23AE224 617F7BC1F3846943E915624D6BBFC555E2EDD013F190492F03CB64E5F2403723 7A2D4652BFFAD1FAA1DBA4538F2C3E608367BF95E09B853A2BBF9930D9B3BE46 0BFBEF05DA75DF3D8E11A09D472A9E45C626428A1A599C111ADDEC7A4E70407A 014F792395A2A12303EF51698D487854EA15000AB08BCCA8B2E35A5018F5460C 9B223315D7B838BFEB224E8D1DC9A0C1077DA31F5FCE0D9D499EB0507B90E9A0 1F92FB5FBB8D40568C1E8B8CD6E1DD27CAE6E107AEAC5696CFEB19091B40FD77 7A4B4F0F261702BFF5E2320C62EB5C6E9DDE142E9FC7DEAB99D90297AE0F15A7 04C0E3B39FBC85CB6B92BDA7917698230B5374D9159807ED1D07947D95802693 A856C84812ABD3EBA336B88CC8F37288CAB59790B0882A4ED6815FF6D7A1BB35 5C7B7437D2ED76E806813478007886ED1009A1E73CCE210FFA69A20D6E05A713 F6EFAB133D146B0EBD547CD29FFE7870973C1E71854C1C643BADC69974BE360A 4CF84FAB098EA3DCD2DD8B2FAAD19429B0ACC7C312B03E6446F1C1D51E6AB45F 72F11FFA078DF3196EA970B24B1BE607571795A2FDC2EE7194E9422C483799EE 23E16A737951BB935EE2C2BF008B6190E0138D551E75C9E6D0EA48E64E9750C4 BAAE32B894BE25D092CFAE894230430E43C585D0F06636C8D56BB80A4597A0AA 547FBCF12821C20F0E62369E1A9CD2343B8A8647B2FBB1F4C86CAB1F7A14669B 69DC857F9BC7538A864E523C2DF7C830315E0907CB17C8FB6E412A2A9E88317C 0026A6A402B36BDC433015AEBAD775835E5ADB4EE75FD8CA06C199E000CEDF93 00692F29C5394DEE45DFF2D42872B1370C8D4A14E144FF36163C849F9339AB97 EA87BD445733162A34E609BA1E92DC92F9AC892E7A0B39AB0FFE517856491695 56155FF0C2B231EF1314CD4A146EDB1CA9AF7DD546CACDE1E6B49BF0D4ACBC09 55C85E2D38DF84E0B779642F7E9C26CE19EDBF328104B9E803D1B03F3FC24C4C 9EF0D27C8E5AFA420A63981C000A0C1F0B3D3F853FF300EEC524C586376AF998 DF4ED5AA16D8E298C159C2A3E33048D4EF192A11287F69B11BE24D49A033B334 83CB8783383F92EFB9E3BE84CEF37796BA4211E534B0360970B9C57EA7CB54FB F582789A83113ADD2415B3F84AC4ECA15DC70878A32559198DAE67B083B0EE6D 68A92511FA8FD6BA88A42769E3FBBBBDFDAD61F99A6C274B48CB044D16FD5953 44F1503D8D1D6DBAC41C1246A71EBCEE5B1F0DCE3EE7E3A99792DD8FFBD94DD4 3A5ED347A62D301B6739AD2BCCC7C57378C29FA5A83759E7AC6F1505DF6C0E16 71587914F698608AD93ABEC43611DE709ABC3F1C0A1343CBED5F09DDB4FACE0A 8BBA9DE5B85FE9B4365358DFE877BBFD9AF08BC60BAD7C41433BBDBA17EA9A7B 92F76358612FE44F43A85588DAACCF7846ECF5C58B22F18120F895317609AFA1 06E88CA1D73C4CD5098CF44093207C31F46977B6D22665AACAD5A169906640F6 3DFFEB3937BD6CE1501C52783743F8F6110DF43ECF512D49A55379432CAB1C33 7C38B7A38DDB91F0683A052378CBED8BDE4E6DC32FFF6D723A4D1469D32AEDA9 FBF89B9604656DD0D44ADFAC39BA893808676E1E08444CE56F6CAFF3E93D8D41 F164049193BA11AF94B43515BC79D6A538C00B08FB518EB67C27E73380A651DC 4B244E8A2E4ED405EA5C7EEDDB09D44C458A883C839B98D9D6A2209516E0310C AD777536190ED06F47EB2ED61C53A2E0AD0CA4E4035324DE75F272B1CA6BC1FB B912807B7331D932DADA30F1975A1C9A8B55604EEE8A0CB514C6CAEECAF9C46B 5D5563E8934B421EA1CCE3B96412D78DBEEABA59FC603CC6ECF65BDB5B66EAF9 14B852CC04286EBEDD560713090BC417A10BB834944E007F45B61AD6E6150B9C 10A6FBA56C1B45EA5F9A5379B1A0788513DD4100B82BD61D89E6841A26B362B1 D4762EAF4FF3BEABD882700BE9832115405728C5292BE942F871661EB0E6B29D 430CB271A090B6F5399184F21ED6728171B1783C982E61DB7C0BF90CBC1482CE C6982B4F0AA39076B64CCA5A71BE73CA65F2CB60B89AFACA957EF8E6429F2182 CA36220F80EEC5D01AD7061DF45CC5109D9F0B7E2B6DB9D6C6326A45DC6C05D1 E81B636A82592D99C7B7ADA0E958A0D7570BFF1830017A6241AD62C53D4CB36C 583672FBA265142DCE545F4855CA3D9E528143AAC66EBC9527B76EE43B4F4E2B B209BD265D6AEF18D168CA7BA2CEC40DF86FF352029597A5A3B2941D467DF229 50C788D4276C5B400F360AB596E35983262A215047C9714912B2E69CABC0DBDF BF6925E19EDF3A6638CF5794722C8B92C6DCF5853DF288B9DA52A2152F98227C FC04D3C318E7D942E9D33582A490888F0C1CC1A8C4474091B4956222DE467632 33CF5DB7DA165B59A648AC6945687B0ADB83EF5B286CC469B2C9E4AE92ACAE8E 86E4C62A092B8F6C05EB2ED346DAA7C573A03760ADB3CD55B6C794FF4463BAC4 2F4A738F9C4237107C503A7EBF4F4BB4380DBB64F5F5C9B268111752FD2204CF F25085683D071FB4149A64426859D407936A3D1E2C627652C126D8F9264E2919 960ACB9DD61BDF973492CDB1FD20EA81E06BECF5E164A8ABAC12926DE1CBC0FC 6693737B4875F465B5623C899FE129B3A52A2BDF104F8B8429890AC870580C7D B078A9E26C322D1A8AC1C6B2BF340813D989EE8D054882B965905D33EC3F4278 DC41BE055E0E5F73B5A1F45E9E69718F5E155B4EA30B28BD28C52C6C322F2E84 674CE600D699CEE1D2CFB7212BD8168B45824890273A0AAE4757D112980DF2DC C3026300B4BBC9B081817AC7F4D48B309E66CC7455708C772A08EF6FAC829363 E27AEBC3E7D0A91984C05935B16E102E81D6AAAC347E38EBA40125543263BCA6 9C6F4AD6BF8C3A90279FCA4A99D9290C3B8E0DEBB4B2DF932F66FD47AAC3094B 7582FF8265CFF8BBC7F79C8C74B1FF94B26F3817A39B5FFC6BB562BF6DBF9CEC 31CC3BE4D7E431D41D55D96C4F020486F993781828E9E8850192F9F6BA350AAA 5E292210B0EFA4061EC8BD6EE15E3FAA4AB2F54110D17D29BA32C0D28559FF32 D164DCC98EAC78822D6D6AC6F4871D47290A11C83670374F072A9DC723096C89 EA584D43BBB13584D9B8B1820C415DA2E0DCA1B50655E81B47B9AC8343DD8FAF 95F4771ABF81361EBFA9259EE8901F31C21E95DD22FE04BDB77D23DA561FFCE5 A7708647AAF65FBA2FD95E843D839E5734D4C08A215180C7244924E002A965D8 AB29470A1B86065B4133A9A6EBA05EF1AC67DFB5ED8DD8C11450233D2624EFEF 3E6D3DCA7E23ADF174BC83AF25A1D7529E52D39C27DA86A2DF4BE4F8A96361CE 7025BC1954C75A765ABC95B4AFE0AF5474653E6808F85893BE6ECA1A37F8B666 05A9E9FBAADB0DD86848D6FC48A1000FAB396F756513798E09D29ED6DBCC8466 40181BB71C92CAAF8E240E16304DB9F4B0FB6880004A0F9AF6228E60646647D1 669577DA709B4FDB8721B95B07B4599652A303FFCEBF858A41F08BF3B83EBD31 74EFA947A8ABFC7467D6CC544B655A7BD4B6A4F5EA9BF11CFC9CDCE14FEEDEC5 9116A3FEF962932F8B105BC4C51744916E8976815AC286B1E682D83091E9C533 839223A68B9D977C41107F597E05C3D8C1C3E79542A990B0E8E22F34BBDD8E47 B6C2CAF54B72E8F0E8A41DB343934FD2C33B6D77AF2E9061C4E76BF258CFD615 30AEAECE9D04569D358541C346C922A01D017BCE85D4F083AA9B6939D85EEF29 335D1BDCC9E6D5F7F58EC2BA2D8CE50CCB38AE6A2DE2F695B76831F8F591BEC4 EC6391563D18E4169151F552B5E1601B1DDA6F93E5C8B5F4FE63F5E002AA3C15 E0C8DE2C735EE00E9A2A01530FF37B7FEB0FB182A4E381CF1BBC80D743209814 F99002980CEBCBE3E677005766CE1D0AF4DCC9F103499D1961771FFBF01B833F 1701EF6EB1A381A287F73E519C01084241335905661B2E8B86B398C88F39BBC5 09FACC1344E15CC7685708BCB3F43EAD4E24A84AA0687FCE0A2178D9BA84EBB9 68E8A727DAF9A0B28A7CA3B119798603F9BBC6728C5A6B4BFC84C95DC4F36839 C2649E364CEA39A4EDBBA4C0E27C61648D38CA46B64E8CE797CA3464C80214EE 28A1E58B387AE0A663A39F04F57899ED62FB0E542EA108AC32490B4B2BC068F6 2087BE9C9C3CBFDD80F2E632BC4C971A79A0A3C3A5607B997223A9F6373EE51F C58EBEE7756A391C91758A1F6567F532A5EB762A2927F57CF9F0E845E4F66B3D 8100D1795B706FD32944CEF24A054650EC911A54A22F4F35E3034AC70F07C98B 8DD43BE9F7D68C50D6449791F5331A189706D9CD18417348B9F296D8D01368E3 2523FCC0EF33B998FE925B4CC7BE329B32D6AF791BFFACB60E4874412C8C8676 34914A453A592C7614AEE5001DF3E5E8D9335A155C65174B940E1AE61ACBCBD8 A41D7E1C6FC0680E094ECF65C60CE714E6EB2A1897D8A3F39FF58D64EF7E9A41 4CD8E55BE32CE8CA29239A9BE3FD6B1DD5CA5A035AB1FE57CAFACB8A39B6A877 C853BE6BAAEF5714982FBFA414EC128B61326B60D83076E690FDCBE3D2AD256B FA7A15B804402826684AAD933E94853CD0CDEA3CCA7DC833E486F431EC4764DB F3FB244DB99FA0CA2FA14DFA75A326385B3AF92AF8E4C6D437DC3DCC07FAF25B 6C0F270333ED377B08E498BC3004C25C7A991DAC9A3E0D1FC43E2EB6996C7269 7A864CEF35FE312DD8F87E37AC69490299CEF9B059EC7E7492D1D6E5640E0AC6 35B97F7A629B6B7CDF3BF86D2B518EA807B03E4F79DEA59C84D98E4C94102EE3 71A29649ED75F5ED02EFEED8064E2D54E8F9CA0C4284B987B81B7F41FD7DCAC4 FB9C3ED70774F9FD09F3321CE1D0319C1129F5868DABBD183045984748C8A3E4 53E085818729A1353B13C78E63E837DE483E9E2ABFDAD16534420BE4D7976D35 F56B86EEB90F663E9778A6E0CD698E6324EC2D19901972B74EDAB8F4073E4F37 89082F08735E8345BA167B2B76C77703C586CA5DAF41C0DD0E231184DECD8A9C DE8FD239B6CC636507A5BE6EE5283C06A1D8D59E98A31AA76F4D358DBC641DE2 ECE3D9F2D262FE2E878E909A950A7642A3F59995519D541B96D459F24F12682A 9AE61FC08CF436D9DF060DAAA90884A1281B370A2F824704B5347FEC65E14E7E 3D212E29723427BBB12C1CB91B28CA47D6FA8259A875EDAE4B49C33B2F73938A 784C1E7A7F21873CAD55A868A1451B070A3F259A983293289B131E07C903D7A6 3CC66CEF8C4D2B6736282896A2683EEB944B67240CAC5FBD8A1392A875245A9E 2611B511909A041846063E465473D41958104E92519C0F86706AD640FC6CEA10 620C9718C4589D9D562D8810CF6F461B776D5A1B040F8272D43C029C2A695D2E 86CF508C4AB11104E575E13C2EF56914E241279BE0558CD3D59D25BF13CE8212 3D7AD1F25FA5A9155AA06306C7CD0F49E3498856318B0ADF279731E1769839EF 98657EE73CF07B0585EECB67F5FF609E0E3DA1B78F6A8FBE2F2E0C051237AB4B 1587DD72BBFD962E865EAE0CAF1A5C592F5019C7533BAF297C0F78F3287838D6 CEBFC8B5969486A5134DA76B4961C8056E1EF1F2AD17F19D7998175D66B3149A 2CF21CCABA281EA0345EF50C1EBE7004ED495C6D03963B639A66638A43C049C6 DCD311B5F86EBC814BE42D432EEC87B861FCBA9C8729FA5AE87E20C5B30B8E5A BB41189A42B9853CA408BA01A559CAB722AAC3DA28E70AD79E1BBC8B6FCC937C 180B5C2E20B03D3FBAC60C83F765CDCDB3146FE5C0B02911F6E120D63EDFB0B0 86CCF83C2AB62922450206D3701588B54A8B232126BE120432E6BB2E25C50B13 708D742A44E20176C54FF89F4589B10D5396C94625AEA1914AC168899FE7AE9A 7D90DA67A5EF3DDA25CCBB18DBAC3AF4AB889528A381542185821B96CCFB4302 987611DD5B5B8514FDD7F5148D1BAC9C34567F75EDAB317E0B8A7A76604A42F3 1D46332C4791006DD1AB657308CDBBC7314592707EB163326E345C2C5EA05B33 01FEA5B7A346E6B1B6EF58B692150C6116B149B6A26B493674337A9C1CB4F42B A7A80AC587F9BBD7A487F407EBBF9978840A01B5E7E772DF7EF28481E7AD14F2 424816AAA958320A0E6F318C757A474F7B05AC0F570094372CDE877B479AE3F4 90C257A2B3F443DE43D8A58594BE8D4B5C7E5E075ACFB1AFAD4C06415266E168 FB38C1CA256287953EDAB1D40537A3633CB52FECF3D35BEB8C2C6CBEECB54BBA CD6E043EEF68A21D7639FAB8D1006B1119CF92350D9773502F7554B4B3036EA3 D747596506FC674DC01ADEA9B45ADC43B9E6947235E9BA30FF462252038D91D1 D908E9132A946FD03B86A08885AC44CEE72F0E27AA63A901F2DCCB86D87702D9 A66F35F06D6640115B075B0260FB116E24E795E24DAE988CD48A95FFD3116E92 63D02221D272531186E2AAB74496FB78A4064C9C9772608C49D46E40FE28088E B5109171E7AF69599BD8BC1186C196EB11FB4132F5C9FC1395220392E17B66E2 32215E54E9483196341D6DC691FCCEFBD00DFF4C095FA8AB36A374BD5E1F5082 730A698AAB7B57A5399196ABCF7B7963E2970CCAC5E9A5EC552CDBE1E2EE1968 B81CF5BDDFF9D385C9C1FFD726A0C52A4CB0C8121E77AEA16157C1EDCD1AEFF5 5607E8F5C44072DC54332B95AF28417E2D45B4685F270821EB6C455AC147F938 50CC9F7F2006D933D0664AADBF5D7E3E6DAD57527AB59DDD13BCA392B059FAD2 E7833AD00F62EB89CD7BECA9DD479F7CD7C981859EF43CBB1EC1681081B58A39 2CEC9FEC039082771E1BF48968431F72817C8156D0D6B65DD33D472BCC49496D 1F5FB1796892C6A45BCC65BECF41D8604B811824739647D87A7B28FDB3574478 9807DA2557F411E0BA7479F31B9E3BBE6F3CAAA653883A9D2BEF2073F47F057A CFD20BE1371F17F5B6F0A9520F2EFCC3C04A24EC272C43E1F587ACDAFEAD7076 6139D04FD9A50F67301D7765109C76D6270D2DECC94017A877EF386AC7F625C0 ABCA9A6D15D71AF7A5889403DDB83EDE87EF5A69EEA97995CC1601160B296750 32AD8D65A456F5471AD4536F1AF41A4D370203F897686CAE7C89577D3A843E90 9C08CF3E3D489625256DA5E0984BF971E0D8D251AE5B09C17883CE07750051DF 770B920AABB2E80A4944EF613891B4EC3F9E214339AEDFDD5DD15240933DC82C D878BCB743ACBB562A41BBD86191E1129718826681FD12981D4159C7432DC3D9 AD4C6C478EEEA0A34030BDD0B9122E8AE5F0B473AC5A48346D56C2DE42815D19 FE378D252960D3F56654B31C58CBBBE0D634FF6EB81295809AF12222C58345C0 4595590B2DAEF5F3CCACE8AD4CE8585DF4099665B05B32FC49160ED307573D18 6C4D88C07CCD1BD4A0179BDDE6524D8CC9A70318578646EE6F4DE040C56C90C3 C5C5827A77DB584E95F55F083D07AF133B31DB611D1831D93180F66A13E86AAD 573C57B42DA521764563F69E7D4E26057622C17A135716EBB2552F644065C733 451295216950B589D09E00FE06779D50AA82A4653649B7CDCA11A1FF27AFA7FF 189A798A6DD355CE23F77BF90DD88672ED1AE3C262A2071CD9E6E8710E44EA18 8EAF3FC2FD7A203792FD5A925E03F5FDF5FC3C0D975724B9C0EB5891CFFFAAF7 AC4180C714BFB1BC100B055AEC13D255FDD48CDE21EFBBE6A2A5CCC75DEAEB75 CA1B5C649CF209DAF2ED786DC4D0E02F1AEFAA8A7B2B96971E35DE1AEB60A50B B4E5B18753CB1E6E18FD08BF00E01DB6497645F29D666701A930476B878C7843 D729490D64FDFA946762B2F71AFD7E3CD2A7B155D6445774A471A84FD5CDEF48 1419EBD5CA76742B84B005FD3D7F5D0A202078C60A3EB61C7968C12BA1B1CF83 9535A9996D9C9D14CC9FDC101E93F5F396F67B8A4FE51072EE7DA28E3906583F 35CAED5618F0ABFE7D3672D76A7449C08F9792974A8C1C2622D70DE226150B34 53837D484381789D8673CF3AFF90F47A05693636793248CA1D44B3B6A5E028BE 269547F702CA435816F1BDB39AE1149875B161BCE0DB75DE95DA1BE70A2C366E E11B1A869ABBA393582BD97E050E901F9B23C20748D834ECB5FE32E06EDA2F60 595AF15003353C011562E3889E1BF4E13D3DE9C58589B532070BDA0F3A7BEDD2 12A036F88C7D30144D5D1C9A3B81501477D400D1EE712655165161D835442623 DD542F2ABBB0A78F6AA9CCAEBFA0CD1DBE48F1F686D4261958C098758C35DA58 0A1AAE1CED2FBEC8C44CE1F8A5F10F602867F7221C9D0A61D88CB723D24E8326 0C03E6972FDA35AE55F39C5E29D5D494FD0D60E6C78DE97997305FFD8F4CAF0E 11D5026DC14DAED7313C563E6AEA855D814FF8FDD90AD358174D63B3648890A6 72F197BE3646736CABE2E958E2790C4E1548D7C792B67769AA61C93101D5624F A5C7E3D4A05EE5E4C4361956C7BFF0715DAC7D7BF7B247261B96DC90796B29B7 8E4189CBECCD2855A3A44CDE3FB6713AEE18EC6A80C25B44EE2E27DB564382C7 325EE9F9CCD66964426235DD8C3F9D4D942035390992F7E3D76AE26C7E49FB8C 8EAF494F0AC282E65B88F77362620F1FD5FEE696A396F09DA628F1C9AE52752D D3635A23EFBB52741ABA793DB9C6AF8937D9C6FB65A3A74444D1DC5ED2FF9E64 4DE563E622AAC07AE77A30FA0A7B6F584CB9FD2735D4CDCF2E233C140CD26DFD CAF6997AF68737072213DAD93F653B34E945659A6AA5B9915B454BA332CF97F6 E8F243D51E0E1DEC43D22CC476E46FA369989C6DA3E719D6C083B5D0000DCC98 0989E0CC95E1C4E64095949CC3E78BC20A9EED5DA7D0B76D84512454D28FF041 2DD70B186C108F4B0FDAFDE64467D45EDC7C86CE1DDFA7B50E7CFBB4A34CD64C F3502DFFEA6F3CF7A4728FB4F997DEA662B7342E5B888380B311B26F6C04DA69 210A90F17020D85AD3A3E0D9B150FA2BAEE57C8398CB09F131C3A43A2C9F712D 7BFFBCF5B04E43606F58E4ACBE46563111E03D2B5E4A640EC06FC8D881ADB29D B3057662D5C106A0DFA73200920CA8E9E8D23007C133912C8F44941D140C5A10 A943710AAA2236A986387D8E9668567AF0DB7D9DFB15CADFC3E50AE185AA1FE2 5A134AAF24B12E936A5CD45A26872973A30A7250220D746AACA419A9D94A8D84 314DF20993ED48AAA34E837178CDFDC510573E1378B3C3DA3875188993EA44A9 93FE7D260BAEF28AAFAD27B0B19B8F00F8AB1B7AFE2DB6C252060A5244EB431B A2F35A215C29028028A96E44E169A24314F3F37F2FF5B80F7EA3B8E73C402A13 A2BEAEA9E949BEC40ED8BE8F03BD6D54BBE59E76C4B3DA8CD33DA98841968E4C 919565F7F2EEC4C5A8328F69FE9A26E3CB14B8D03270BB9C036C10AADD960F0E BB23EEF3B97181AEDC88F17E0350037BCA93A39D3153F303E5D164E87CED1784 D5B7575B08FF53F9E7AFF3E19D21B5505052CD89B18E0801916C1ECD5676FC09 73DA419A7FDB74019C3B76690DE77B745A5D5D7C3F08572479EB17CA2207FEC8 016D168AECE7149AAEB7F2DDADC2B37ACB9A7F01A7248C23F1882E354853EA32 D5411221981642C703BE65ABC5610A2C19BCBD7298C9237F9E56E69F230648F1 1B70159D591A0BF54656AB0811F1AA63169374BB2812B5E90DFCC5D6E6670233 F9B72EADAF155F23D30430068D9348F2B5CDF6E87711697886AB2B9D32780A4D D7EED7746C03AE642B555CFB2F939BE002E6AA1D1A352205A836F9B7BED77497 C217284F49C014A7C14DC5F6E2549599D2F9413FEB7DBA1CD4681098626A5D86 A42D4AC9B54C319A5DAC64994E333D39870A196F3B042770F7161365A1D5A348 C47C538FFC4A622E23F94739294ADA17A4FCFD6B48CD7720E061905A617A8CCE 198F217116F0D832285D186B0DC0C46B2699F68E3A1D7C6B672DA603364E6D41 851FE53F57813FC6C6AC832F67E2B5A5BAA81A0C1FFC57FEB37107CD89892F94 32F498B3B9A2F7E886510021065F9421F785584B098F3CC567E9DA3F214F210F E1D9906BC2BCD69B76231B487AABB3D42C98378B02E6A16324340372366A5760 3EEBF37ED1E0FC37782911EDCFCEA08DC52E275637CE19084A9486B6986FB22C 30A491336921FDD1679C98426B577E6C81D9791D5F8AC8F5888A2E224077E795 8095BA13DA81A2A2E80CAD4574BE8893E5E8FC0CC4A121652019FC74E73AF632 82ED4CFC9AD9A880D14C6D900BA9DBF9694CCD0CC35FADB29EC2E09422D07D1D 5421CAFCACC1CD630F4B46CDF090B44DC73EB893B5B1AE2F16E3270C752C64B6 23A2FE298B3564BEECC913783DA708B230D5A7CDC42074E4287DF9EABFDE6120 738C4A4F7D09CD01E07F2DB19DB6754091A7A3AA45DAB5CDEBE3DCAD7581CBB2 C935B1810A8EFFE7F9084913D99A467F93BF3179DB5DBF1F93A37F36DA93B956 DB6B6E2904D7229E3164CAD351D64BA96D83F430C48653E84B79E69AE214688D 092F235B6A267511E462984C3ECA939485D87A95F68E5DE88FE0175955BE4392 C46A2974B652AF3CDC409998114BF92E9AEBCE43C83C04BE4F6D9715EAE4064A 31DB9D81B941ACEAAD2DAC4C787F40CCF137A4B9C65AA2120749306D94D99B4D B28A21F817D731F12740CEA06617BF9DC92315B774F06AC88759A3C40A58EB77 5D20241D44AA4EB2DF9993E4D9050FDB4B178138D6F02D1FFEB44F351191EC67 A7930041BD9656AFECE6163093F5AAA2D51E0CCA3A48606509A310D5536DD95B AE761E61CB744C892D695A181851520889C43F9B7D8907276F68F1AE593666D6 7548BB9FF533299A95C069F8C4B4A449F7A341015B34B6B20E27FFE397F8A305 334F966AE97B43B70C08A898F40E626F45DC84EAB2EA5F9727C7A44ED82A25B6 006A049FD3B3507410ED0EB973A4216610CA7D04E067699703217DE681CC9BA8 C8B5E8C00BF48D54B981B8CD2B0239594137E5EFCB11E5A680D4327B8BECA9C0 1E19ADF17A7551D1D0B80D43D34B964394E585D29CA4F2EC49A04DB0AE0FAA0D 3FBA77512511F6A23799384C345065FF178A58898004B41A14A487260EB12E5E FF0792F7A8D3D9EDF397628A938C6D4A177BE426AFE8984CB0D8431121F13E71 8F4CCDD18A6DB7A459D8937A3311F7257F3B5DE23F7FA84F898F8CB1B7B0581F 8D6052ED0CEEB645367D687DAF765D1C835796B6393AF161B901ADB6662B5AE2 0B4EB20FE07E86F5605C19DC6A89DB7E840D99792E0C42CB7DD54C8D30ADC881 72B28765BB4B3AB0DA6AC374CBE2CA337942C5CB36D584939CA95EA6858FE467 600A8BE37EAAB8F95007C729E39E34B7B7405B97CFD84438EC2A99B29CA442E1 21FC47447C687812F2410C4C42396212574B620B6D5062D02F0B580405B0E577 D09184B5E84D56FE066AAB60C5346E048E167CAECB805E769D1B234C87681994 BB2086CFD8E7EF154E37C7E394C68679B62CB825524412360521FAD65F0328FE 2DA8906AF45FBDA9E64E656769C8807276FE9D25104113D9C3F6ABD3117397FB 6E6F306C300640FEC16B96DE079C93BD55B1A1E7E810E119E40FDD0E50FE3249 74C98C81F02AE7A0EAB03DA52809BF67AC0311A36A957FA069E8A45649C4702E 4C505AE7271E675D85122255BE1AAB1F4B49981F41C7FC1ED23CB5F793664F81 FE1437612BB26D8F002EABB11C521256026B18E09873C575BE9CEB07B9634A3E 67B0F7619FFD482EBFEC7CDCBD2BC2EF67DE03616F7B5632DE8E30DDA2DBF44A 57A89B2CD35B8D707EFDCECC6337D79BA1CD9B5899951452513E57E920D37DF3 EFA97648504C1CB32B3F212B75DDE4C89CB562EFAED528C2C70C292C17CD47C3 20E5966C1C998ED56D59C697A0238182818DB5E7D3126C6CE4BBAB83FE95BBFD 061A651E5D80589B390B0FB0E5C3F46DA1175BC1B3967625E4960E5DD49EDB49 E73D4D0D495701425A4D2A7C132477B5BF04DE04B2CCDFC6E6B39D626651F6CB 7A684EEA6AEC5FCF6935CF34A8E99A07A482F9711126814D11B9F9996967560B 764FCB1622EB86C00D8455F345D54337D9317BC2A0B7A67066B93CB411FC5D76 48952A3F1CE2235646FAC97F6CE26D86103FC3545AB80AACB4157BB6274D6049 3B98373F2C7F5DB95DFE924B700C24EBFAB668415B598B51E7DF1118E7A9CCDB 84C22F07FF137A2AF7148C6F1B010D63A8537BE5E0E94179CF00D56ED1B2EE4C F591CF933B48C8B077CFE4FA042D6BC5B87B87A6E44A4F48E0461250343CA592 B676FD7E1B21269E5B13B9A199693310934BD08993A3F2219C9CEAE599A8A579 6265E21A3C265391BC9A286DB9D86A61BE2F4085BB6CF0CB3ADE60850A77376B EB2B60EA26AD90185B38FA6F491093031E1DD198A45DD0E399B3BA18B423E226 04C06AE10E48FDF523C593FA69C553C0A4EF593A95F276116FA109E792E528AF 405277E1574B06316530194167C662A146DA58AE761203B49793C2A9264B09ED BC1C32B80766A678BDEA8DEDF2EBB73127333C65CB5899D328F8C29AF1EB1029 112D740C53D467D0FE4656A7FF2E081824F4F3E5F63E0F09C2A81171CADFF5D2 04DB9DDDCB4E67C53B9844B7C16A8FEB26EEF7D3D1EE014D6966688522E6D7A6 FD0931528CE3EA05F97083D07E62C650748443EC704428C65EA0056E4E78F008 A0202F9FA844F007CC976ACA3C43B9F5D39A2BAF1B762D0B3E30369800C2B0D4 0B7D5CCE446084B4AF3363DF8A0E45CDE38F35028DE1A934B4145A5CF3F7C553 C9405F7EC419F1293E86EE719C9B0C9E2BA82A47E8BE253B50465A44AF0E5076 87B30162D28535BE14210EE3E58BB42DEFCB0298A16493095C0537B15F02AC15 C86EF4C483A530763BBA9C900B8ADBD47064001D6F84A83847D6F8BA793240BA E5C01102EE11BEF2BA9C02A3C8C782ACFA1603C1250C5AF1264CD6A7C4FAA9F4 A33A34459F490A2A5893CACD560A545A7BA4701A87B7DDD56F0E988C87336ACF 2939678EF8E199684EEE271293F13E80373EBC937FDA6F869D1B97F0BA304B4B D529D5FFD556D67ED89FC5545CECFFCA7868F38FA8253811EE27711CC7917515 2708613F7CCFA38F02F50B614A534D8C3DD71D5494C855118E0C0DD626F7ED21 A133B4DC8D7FCBB8A88C65BA0FA2611C6001C0DCAB8270DFD050FF8B223B1081 1B740C8528BA5FF99B1AEA07ED7201E503E002D22378233FD7E8034C2227D825 CBB532CE157D15BA8E800DC86536ABC67920445D035AA3B567121259384103BD AFFA991BB45D6C0FE371C8586DB7BE2615457EFEECD5B9FF1078CE635F82A11A 214DEBF2EF2A8A9AABD955B8A18691A4C011C95EDEA1FBD7C2D90795AF52523A 8B2E7812E32544F473BC66131D88E2579BD40EC909B90848836387758169BD04 D5B0D81BFA8D3814E9CCBF5C9B80E255A0A25F4563F46716EC2D55D3EEA9C709 E9583BDCC0FF91CA2168DB3F39AB24529B2A8CAE8755DB986E450761BCF1EAF9 1AEEBC92CC3BAB679ACEABEB65418B9A24C30424446A0240A79B8F43722B781E 0EC507B5897212DF9DC0669ACECF91424AE7FA8C7E316051283B21AE563776BB BEB8F437C346F3A2EF01A89D1DBD74342F095AD3C48323D59B9B57F09A4A3219 06F5452908C03E86F9D6251A18529F672A72D63B30540F0BB53126386AABBF64 B214451426BA856DAEF710C921B4277911DF8C764D6BB16EC7C0912C8D977145 5A39AFC2496AE9225FDE8C450D0D30656A59B12DF76031D8A222899B56A9A02C C31EFF971978D9A2F178150B41E8FE3620889F86A88CEEA40396B386E1269425 3BE3158D132E44CA57ACC84428F3C37ABE11BF3D4D4FA89615D8F0E08E910290 961D78828D86FCD711418F42DDDC98DBBADC85EB73667B6F2988F8BC908A1828 91FE7E9963B2C964E2FE6339C3D069010D0CD76B1423B63F789118BEE4D5A80B B8E67D03A907A6893ACD7071E800085BB8C752714DB977E7E5DF51DE6C9BA1D5 06FBAA820CE7050802FA035C5F190A5300C73519CE7B4E8FDD306B66B9355EF1 04866D4C8ABA0F5CE2C0A04A860BE373AA8F9CBE667354BEC34B658BED07F524 0C245EC8DEAE13871C5A81DC2D3E96624E4C59D512CF102A385746D4D4926AC3 9015356C7AE571E3ECCC85CDB150EB9D680FE5E4FE2E947E787ACF108A69EB04 40340E84FB3370392D1166D2540F7F8647B0E7371EE1F6721C3BCA61790EF5F2 5CA19C0B5205E7D7D3DA5A29C1C5E4FDC39CFDBA0E328AFAA7D180C361F87D99 9D0AA0A89DE7D2E20806CEDDA33190551D8C3EDD8707579C27BD0599F81EFE05 B3692AD7793DB181BAA2AD259AD259018D6E89BA6CBCE0E8E7B0B6A3280C6A2F 576CF551573A48056D3D41C4B3A49427820941F9B57797B8DBDB0302526DEAF2 0E5229A641C7C039E8D020584E1B1EF280EE56BCC14DFB63586884F110533302 B4457E36BEA004FEF4515A005F8470C61F087E1EED156764605834FFFC0B7DD4 9789591B36A11920D4EA93910DE95981AFBBFD3C6A81949A2E2016A2CDF3BAEF 7ACE82E38674DC5B8F52A06A96612337F2F1445CDB3496B611A18F39E03C6461 FA8905865DABEF52DABDEA7F2F763B40C1F9207BF03FD382F64D0165EC3CDCF0 BB754FDF19DB7F811E9A75DB01F9EADC98D6F10AED43FA6356881D3365EE5E68 EEB42CA564C54DE7548F90A886E845351EC27A83CCE8B3BD32EBCAA12C5A7FE6 9422095B9DD0A4616F98B192187E424200BCC505ADDC2DB21D6CF76FD105A9C1 94167FF621CF4761A30D6944BE5ED318549C63489C66663709BD0EFD2CD73818 9EF273C2FEEA55CF7363C135C2337CA841C25919058CFECED561ED166CBE8911 270E11B03B68233394EEFAC74863F363F02EAB4A19AB4A8E6F8B8459EFC4A051 A71790DC29E5D9A168E622465BD32E732DFA6BDFB4C177A6B2E2FE80F7FE0881 004AFE84314885E3DFF7BFA930F77FD32CA80E186E0A1564D8A0F94B0FB487A0 4B1A79D324EA0B4598B0005D6F09C80A9105A8FE5D9710F6F4CC5B7DBB1D04F5 657CF089C63AE52D1368AC78240CF16F57C441EFB4A0840BF4F5CCFFAFA3E788 1A702CC6385869068A31B500782B7F8AAD42DA876776DB7A8B14221C763E73EB 682062D9C9932DAC5A76E6CBD81026EB205BDB56775506A07D0ECBB0F2E1F7D5 424F56C988145CA9CE53848D1456EBEB0D9B5DAB1CE8B15533BEB915C2A68EB8 3D5F6699DE9956BEB2D9026805E574C86F00DBFEA624B8AB959D720C8C340B3A 89F71AA318B2E2ECCDB6603BAA29B568500F545DF04C6F5510F3B1C491C00E79 863C0395201F04DA8318E84453E92133C01DB1F3A65F5B1E2CAC2E32267C0870 DA00B4C270E0093110BED8D02435ECE0ECFE8FD47603A5599478B9D058B5F7C2 E2EDCF2D14EB05B845F62D5910E344A334AEAEBB9BFAD50C05F646D1CF4608F9 7C06756157F0B681BA58C962B99CE8BD998E3BF2B6BA27D1E537463E9D2209FA 8E1E69CD64DF8DD8DB0DF3D49E3E4B7C87174D3803B24E89DDD48AB253213D26 6DC24C503C96B7136375257297FE6FB35581D48478A8D2C7BABC1BB36F0FE2D9 48093524E0406CFD0034483A95E7871858691C2397E3A23A1746377135705C31 A8669EE4AFF55A36A01BFCC92490D1046C772EDB9F28CE119FFA80D03307FE8C 507B32D4C08907DEF3A591A581AC8C3473E18F87D1D504E92B0DD9F1A6137B14 31E93538C8E13B678CCEE2EB9050070908688B03C8D7CFF7206359E05F589326 D7F2487D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSL10 %!PS-AdobeFont-1.0: CMSL10 003.002 %%Title: CMSL10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSL10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup /UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSL10 def /FontBBox {-62 -250 1123 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def /FullName (CMSL10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 13 /fl put dup 42 /asterisk put dup 44 /comma put dup 49 /one put dup 68 /D put dup 69 /E put dup 70 /F put dup 73 /I put dup 76 /L put dup 78 /N put dup 86 /V put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB 5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B 966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD 94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E 4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D 8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C 567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF 62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC 38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE 730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F 021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD 97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B 362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F 9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A 44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C 683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D 87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF 550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB 17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB 3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B 1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A 8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E 7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E 523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE 144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F 172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC 0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E 3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E 993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E 0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A 6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 AB7916D44EC2210CB941B9C9DDBA700AA803F99E12BDCE73F10F769D7C8E1AB0 77431FDD829222D4A00DFFA8E5FC89B8DEC03AA4910C57E6A689EBC39EA345CD 785A2885C8133229160EB3DF0B348DE734E4F78CBFE9340432C21026C5832003 E5688E20806F46ED465309FBCD5D50D1585C981C7430956CB436B883730AEDAC 1E76732CC2F9B08F3950A7B84F0CA9C5B92A11EDC335D079E6ACC69BD64BF071 A2E22CA7B18E275EB0CF680AFAC9DDE4F9B48568A1F4CE84E9D8E13F000D152E 42DB1C1ED509438C43F0EC0000499BCF9017D11C9A36BEF738A570C32B63D0D7 094312E00AFCA7B279DDFCA02547EEA7732A94507E88C1A87E90036DD4C97198 A7145BF87D4B200E420BC52CF878D7ADA20C9A6F6851041B7DE568200F6E75C2 E872E711F8ECFD6BB1B0E2822FF189067520FFD8EA20EA384D7451C16602F989 1FE1A54C26E51533575E7BE57336A0CC4F92F8A3AE0738F53A5BC1F9A213CDD5 FC572E1A1727A7C629995934C6E572866A4F045526328FEEFA1AC0D3ACFF27EB E48CB6E1C3DFE00522FDE45EE7027553F06815E80839D723949EBAE59F682B9C 64F3A6908AB638B592527C6166F5429FDAEA3BD141C8D5D55E28365A2F8BCEE8 E7624EBA2D2D3946266E0E263EB049DC81DCE1E5C21E6312EEE29B8F3BC6D623 F0920FFBFFFD040A73D7FF309DCA0F47101BDA61E01CF9D8244FEA97CC18D444 1173DDAF158E4DA787D9DC04BA086408A3DE4E73FBCF0323A7452274B74C6AF6 BC43DCD36A71F6DE8FB0D5A7C409871F86BDB2C4FFFB5AFD8E77998BB55159FC F61F773D4B503C4D34547226AC26220F08DC6EC7F929D1276327C6C0E3100F26 985EDADEE30F9517E3753250D151F3A92892FDCD0C16C6089DF41522A177818F 505EE0E8EEA9E49D0C57F2BF35B32C41018656506AA4618C2B2AF733EDD09458 1037388C635210F5C3A40E970EE5E0497D7E7A43024D209F3EA1319D58E37FF2 45368B0AAC7395D6B71003359952A959100DB81287F896B4FED2364D5F5170F4 F4F4FB12404E4C831B9488AA017B7712846ACA59B4AA2D6422577C0DCB6AF2DE 0C9B95952025FCFEBE708DBC20881D6022AB1DA8E6DCD4FF9D33BAD0A69C0FE1 CA8D29AE19ABD5A10F0192D879F103D2D8315E8FC3DA8743D3E8F27911AD46C3 E1F0D08DE84B586EEA1C615546748C6DA8CB30F76F6311567B14B8A8D0041A65 107B9106C50F6A2FEDE49C2888505D11DA7F36EE9B552645B83D9B3190088D1C 10A415E0BD1B1C03CF6BEA89F87C0D62FE91062BCB6B1ACCD0C2D8E9076BB0F9 E9CFD167CFBA7A5A0085EB765181F63624F26B47C26AFFEA8DA9EFE6B5E5FE03 D27731EF3081CF050379FE9C51A8B7E1C96272E31F65F9C22CA702073C23BE63 505AAAAED3EEF11F5ED2ED09DAEE0C9C7E9F762FBE324258FCE09799F00478DF C823D2C97E9338B8A795A8DD1BE532AFE3778B8629946AFE952C025056874A5D 7465B5791D8C0D3057F192AC634BF2881BAA203912D5E24581B95D670E61CF5F 7C8B15466E334C88F69812BFD6B059E1A80AB1C7619238F7CFF9E57F32A5F720 70BC60DD15904EB70A5FC8AB475194A9E5986ADCF1E1CD0AE9614DA10D913B0E 27D4DAF853A830CB880DF3790C56846B9AF1FB6A9D3EF7181B20F53467687981 6540AE3C03C176DFF03A22CCEAA1B7774B5E8C7485301447BA882721A94E4D4B D9FC2644994AA58F262D4DA68682A70D21F6420C14C822D44C0759789CA3F47B 61553CA4C505223F7E4E93823B08C67C25E228B913B55167F3623970871AFF89 C644E63BD6A2F608632B85A17FDF161FA48C42712AF9F7043ADFB68D0D9EF283 C67DA598661D1DD9FE107E7E8E9423D52E9C63A4F80A7662D4F231FD33DF36C4 A8DD8C46CB60CAE904B0DF4EE74205A0B5379CF6F967DF440DAF0C5E7D726350 2D791E441953CAFE944EEF72ADBC7B031728C2C70B9823A7FA43F18AB5698493 897E0631B20A79AC3B24C1E4FBB6838BD25A7174FD25F6AE9856A3DEC2E12932 8097215046F9E8509D59B84436375CB30DE74CA6C9A00498F6AE741C93D9256B A7010EEBF9D7DB8332B10CBDADAA11101DCE3F5B17D6E2F585428126830B606B DE5F9963CB670E8BD23215F7B6075982F35B98B6A93E54857CB12956A8A5C044 6FE10CD2335CFD45A58D56D7319D5236397BE7C82D8E55CCCCBD245E22BEDE91 0107BB14E97DF740910F7DB12B36923685B4CC92FA43C2C0E7CA6EA70C793ECC 68AF25515B075E1E004F23ABAF789D806317A6DC6821F81C40B07CBB18E658BE 66AE0BBD03715C053260561DFEA92D479140367E4D4A9773F73FE1F64FCC48D4 207325F190945DACCA92EE90C6D88FBDD82943CC4A19C77D0C430912B1F44A50 040367F9C776FD30F645DC57064F471C86F2539403CC0853E4A84DCC13DE61A7 16E0086A2C1646473AA4820C577314633A11A9D458AA29B5CC9037823F7ABB0C 2E9D9E79FDDFBB4A83A8C4EB82ACEA5DE1F1DE1439F17339F4E40162C18A97C9 BADCCE5E2FE93C5C41823A736E225A57806B4A7A8F480B5A7EC9ABA7D3813C85 A4CD00D402AFCD94AC7E579B2B59EED1309A56D74C091BCCC180ADE2B626A487 33C1D63DED00174D8EEA8CE831AECD78BA7EF776BFFCF5654F71D287D03FED45 70CC9D87858D220731E576E8F1B36D35EE7891E9179F428FF003B7085ADC8B2A EE9916279DAC943C0BA4E9BA554BE69224D68002CCDD10FA7C29F52F4BF7B97F B1752EC366633146FAD2713B397BE878E08A34210E04C1EAD5B1960390F4CF74 13C22D43F6E0CB27C0DC2DE515EB850375B2D4AF04BFC4B0B5B992756D8050AD 250D3FD18662B2F700BF9C40B27D44BAB009640CE5A6E0031BD02E27FAF56BC4 8DE9CAA59451BFCBF99E0226BAA069806C596EA65686629460585F8878E63EB8 7AE86D5F72CE84B5EF0BBE34D6E68FDCF78568ACC4B3E8358F98307CEE7ACC1C 21711C295CEE7EA6A11E0D3D46AA45C4E536306686E761ADDE7BCCDE4A1F9540 6E7F865A36603F8A25C1FAC382427F378F6F593565C7810A9605BCC267BD04C0 FC89FB742E05AEEAC20AF5D82AE85C57AA880C4CEBAE4D6F07BAE4C84B7D469F 58EE5E445812A0A0A883685CEB65CAF649DE574BC33E84FF6A69968EBB6528DA 57887EC386DCDBD36A9AA32C283B257EF15F2655D656A25466757DE81FEB2616 22F701E266E9315141B58805E42DF6985B71E84C2C479E2D39712F9C7962A90F C6DE4DBE3C328FDFD9FF91A26A14364317EF6F8C56B7D8EFB31B99F31DE9ABE3 1EE0236C072A5C2B56C45E3625E5EB5FF070D7FFA5D1EAE3B0BAEC41FCA9961C 7B64CB43256A2FB3C1055DA28681CC1FB2776B67594D61FA73D3D76E9353F2EB 326D93E6A1D236C247D08DD825BBD143DC0057EEA4B46BA4005172E863941F9A 05F5AD4661582A59720850C1F1FE0F25B52A6546425F6DE40F668DDFC1CCDA7B 27D6871D6B604B85D03E1403F55913A7D7F85E6158227F5AFDD872F20F38F65F 16CEBF315BCBC1B4C073826634A4CCF8F1A7D340199263FEB3162324406E3A04 D4A1CD9E742C8B0A0CA79D989E3D23CD59BE68E9410257799AF4EDCD742BA624 641C2E79E23AAB71CF91C4BCCE181EF386AB15A88747C29DD823432EBBEC1E80 BD3743E866861B815112420B6311D1B182C76B0C5BFFF9ABAAC68FC6192861F1 AEF4D84CED33F2D75D3AAEAE997819B31CF0D7DD226C340964E7F0AE109B0071 CF3695C6E5897FA0190CA48DECDC35C4FF64BFCD9562CEC2849EF194A7FDCBCD 24C22F33C3B40734EB35E8A04898AA74FD5464889DF510CDE4EE30F34A8BD823 1BD8F754C591CF781F0CA6E21365CC120D050894C8E8AAE4428F2FC2F5BF116E B6C9909F5D95D73DC2A035D2270F439C36826A6513704AF1E9E5A12E8549E206 CBC506FDA6C3CC602496249545C6A350ECA1E55299A26FB238E227BA18B53BE7 A2103B915E4D60EE7A419D516730E29390023BBF539490582F658E28AB68F9FD 717163BF210D65332AD5CA597FD3F3A2CAAC318AFB71393B471C1360C923E069 6F3513B843C7F66A42CACCD8421C9D9392ED6523327FF85231D2CF9740DDF3D3 EE73CB6437C18A6FE633BF3177ABA9535D4FA2954501519E584D8E306F5548AA 02136275DF821E0966EB3BF488C0AB85F652381BBD41A526ADA91F9405AF220B 11E51700B60FAC2E10B17D01C2FB2391D3C00E453547210FC79375F333338268 A27FEC019186E1C7FEF4635D21A8292229A27D5030BEB0186EE36C77DA5AD1BD 962D1EDEBB0F5FA5EEC4580FC06ACD7FAF44BBEAB723E28184ED94564FD21032 AE80DF7DFB4D07AB4B4F04C682EF3A79C9F067B104777C679A22042B685F30F0 A83D59CE2851F30D20E539B320B7B173CBD6727CCF6A0BF2086BCCC2BAC1A684 87CB299818BB0F94ACBA01CFA8F1674B1C06B873F3127DA11D0BD529D6BA7B0E EB0F1CCB59320CB15BBECBD51A021912B63F3A9B85183092DB23A2D8585D648B 9CD512B742618FB001ED4736303B763DA88DC72FE6A718841345114BAFE6D7B9 32E854CDD061D10921F68F15193FC365AEFCB564D8E8B4F241D77C0F20986C86 F2BDBC2F81777D27BBB6FDFF9F2115D0AC99F9ACF4093556A596F50022FC5C37 7F26D28D39976601CD74003A053B1B9298A5CBFAC2529A0E2272807F936418EC 0651479A9479570A1B083A37C5050229BE231F038D8DAB37A580F6BFBA550AF2 DE481E54910679D2B964B4D6667E43065E7B250AFD26CD9B3ED698A47DF2F935 C12E9D5AE1F95B723A849F31DE090F1E6616D745132D208EDC1428A3F019991C 1C48A8B3525B9C0663C4BC77D6328CB3F7E8D94647E35B1E8EE6FDB2669FC08B 63FFCA305452DCEEF0B44AB498B1D0D93DFD881191EFEF0BE48AC11C3A0504B9 E49F21694BF813A6C4180FA308823E616F7135279B81DF65751B394C4FD31CBD CFB3EBE5AD6FD87CD2C88A542C49930EC5A3C163DB375BD686AF5FFF7B3ED425 A255FAA7F49FE32221A8D6686010F520A657AAEED18544B58164A8FD67BDE493 F9A38A9820DA1172498F6D4ED63BBBD7E2D53B17ED7A051BE009488FBE578307 501CC67BB9E6732495F3EC06AF64C85EDF4DFC86247ED5FCE2597786EC55D75B F747F02C5FB44300D54F1D2D3B32308A33F2431792A2E8332750685E0F20F87B 9090AEDB5144FDFD87978090075B7E6B3590F49E62EAD05DD2D78B00A08207A3 F51B4B0A870B4F27D74A728F115E986F4AB23FECA5D0BFC7914A74B531BA22EC 7654D7CD0E0330CB9924F00FCF022CF966A1DEF399A8BE94885DD9025AE5524E 3015DB19EDE997402AA183D44E946553D731A9C9C90BE353F000BF6F5E14706F 44A4D69E2C1F390BFCF25C4D8C6922D88D01358A83552E1C36B7AD6285B4FB3A B74DD6E23287E01C5C0345E525B9A92D4F1B590088C5605D436F5C1EAF56E85F 8BB16F057BB339FAB06435F77699A21B38755266C1D5D8CE168A2E5F0CEEA1D9 19AFC36ED4D7536962D458CE7EE8DEA40B3109FF3D08BB30376B878CAF57F9E6 835C012AED83BC015D5AA79C28239CD2DAA59536C05DF5F54890C35B75678889 541042134B47C014666C667E8A477FF8D2D01DF57D53AE383D77A9E5BD71FD0A 1C47176E8D633066A39B8F4C44DB20C54A2E868CFCC802951323FCBCB886E289 2713A66DED725E344CED5C8AE5BA83C012FA0E942E946626591191BF3D874961 52569A8463189948DA8B6E111372BCD90B26FF2AD4461025AE7F23D67D3FF85E CE9DAE31E317ECCC243E064BEC1FB64AF5D369107F846F1B5568F2C5F70325BF C96698A50A3651EACF73F49A4201A0D2A1EB4A599AA52DE8926B38BB72A4C4C9 76ACA920B31654C6E25ECE1152CAEE6BAE8B1F9AC2F8CA751ED4D43E294219CF 1499F5FC87E194417E8123B8900513172B692F056CC8DB568B06DF41E3199335 814E8E70B3C7DC966F1EE3E0A8D543A2A33243231565D50953D0A54ED2EAB303 45A9DE86BA9972276B390B94C427BCDE757701592D106C62C0C07EE6FEC55566 E9E6B82FA85B0B45B46CDC96905C3FD4C715E5ABBC606B4536B54D086E5EA531 870807C92757028B900A426FB07D38D7504643740735249E1C545EFAF1E3D055 E67F04CBD2DFE261EE9253762AA0B181105C466EB8502A7D091F3CBBBB1232A9 B18244ACE33DC8B8505CD1C8CA3B7CAFB450FF06D96116B34E34A1CE44A9DF81 116A1B6D510470AE6345D50AA122B9B7806CE8CEFB787BE999E358F5E7586A79 29DFBE14EF62CCAC4B38D69392B7FACC0D6E6EC456A884B617EF2E90D9FC0115 D85BD7FE3A955F963D468BD626B00CF3C78A47F9AAE39FABA24B5A405CD5CAB5 0891FF86915870D18B5D0794166D4C80A7DF1345BD61F247B06D2B6AA4E3F8F7 FB26A2AD8A08B752B010D3F5BE37595168AF61BB1EA76907CA6800D20660884D D6A047E3C3F3EFA24B9D285101BE414CB293C07F78A88D14BA865616CAA82775 989ADE24D4C7E0941A21DB2C56CD50C164B1EAC79E8C71C2C78420BFD250D50D 7430A60603418013B579FA1EA3B508505A1CC05545EF9500935E2067AD7610EB D93122980AFABF962B5E3A1695291AEF5340F777C1CE9F6DC472E4D983B66713 273D0FA3D73783365A155A59D81C5CD7C951374524CDDE17C2A6AC732AA09E30 DF4EEE5E7E7F5D62E21473937134DE906C3DEA2881F5E3035DD4E668A916C5DA EE0E88D0D40991A5C7C5B0F418A744CC5C640F35BB6A90E121F9E0789DC69D8E F5151B19AB2AD6EAA927CCD9EDE04ADE5EDD5700C7C1587E5CA40E22D58148F2 BFE03F5283791625E2493DD8858D9051226E1E5F546EF7551591E989807C0367 14E3D656DA55843FBEE8BCB9ACDF8D33AAF22852F7CAD67C3DF3CCDD5F7E9984 25BBA778DB346A68AD3DB730F9D1C8FAAED2D6B39326551EF494B8746135F255 D5E375F4353B85F983B0A75B07EF9857AC56A562278EC3F665A8286A9F061B77 7164E80D19231B419678DA71ACE6BA3221BC89F9D43F229F8EF6141041BFE646 24EBEADB2A7345D14A82AF86545D7CD1409C79B076F24F6987AD0460025B3175 B5D02DC4A066CCC5A37ED56A7A10923276A417485A6A476FCC62745E1AAD08B4 9102EB8354902C5905BA23ED3ECEF05C6F5485D20FB7917F04499BE4B6BA7ED5 A1477C24377F3DA4BC198A847B5E3F6DD47A572222AE7BA8275E7019D94FAB31 2039CEB445E9AB2B2623E2BE56B1AE870C2EC542B782FCD04511395286B8B4AE F77FDC3349E7ECCBAADE3A9EA0B48095321980C5917EA8C3D12C66047C41911C B2BC036C943AC3468B0F1B66110CE001AC1CE5229968981E17221B4D2018199E 7B49F66A2AAA931755C6EB0AF309BA3B47E541CD82AD5CA690B8AE3939F4FACB 1D05E8361AC44591C8A6773A891EBE1EA439C84FF4A0EF602750CC41189EB223 401DA371CB188B2881AFD30A45889AEF1FB6B7DE14352D785CB5B66328CE1492 BD9F6D09218B8ABB8AB7CABB880DD77395EF12D239C49EC3F929038356CAC8A3 53343FC661AA00FE67BEF1AAD98431E8B89E7FFCB4CDCA79BBAECEC77DFF4DDB 072441B67903488DA482B7E487F7A7BB044258EAF9D2A8FF668E87B28AFC1CF5 B0C69D80193AF352CEDB9AB4DE2FA0C26D1B614C015BA5E809C5A86069AAE661 295C0543E1961AC2E06133EFD5A32E572D592138924782BBAC5DD156CEFADDED 42E6DDAF16EAE4AFB437F9BA0C037A580C4DB6E4D773950C114A149E83D26F5E 1ED37C030322AB72CFCB35D9FCF668D04574FAA3659A66813413C7C8B9308A4D 8ADEE7F9B393C7C0E5300B9DD39BED3BA038E70946A0FEBAD8CCD04DE347E31D D9A5200D53E326B5F6FE76FE9286154EF173505F2B5DFD9F4511151DE545E071 4B17B098BE027C148E0CF7F64B94F914DAB600E84294DCF4172495293DC6E211 D1511F177B5401E9E1B111E4AB951F37B6BD2CDF3C860832E4A77ECBAC34F94E 7DDE9B7ABD0EC904C8C5C9DEC7EFA1C02536C05B191EFE97EA6A6495D484D8FD B73083AA0B4075570C5F5C310177E1E58A87B1AA5B6B0A202A7E8223D6298D3C 6DAD82D47EB715136A28ED5EDE045CBAC2D776B34B688F50011631D9410ED449 22450CBDCA755761C903BE55EB6EBE321C4A0DBA546A912FB2DA90C03DB3C785 C8668F1C1F3AF1AB2A0644F4D6ECACA84D3DA2408681846F9D612901E2DF93AD 7CD27334C8DFAAF68909DCD518602AA6CFBC406B9BFCC4365CD2633C14BBC54E E4BDE87A4521D2A7C2B94FDCBB557903A55745A113265D160F30C669238DAD28 D1AA613A9C24C485C169741C0B50FDA7CE52D12A40696FAF7AFF5F396A7A1EBB D04D3F8F9514813098F9A271429209F51F4035AD149C7EFDE2951BBA735F18BB 79057B14FD77894EAA8DB6E3288176BE70215735871F61F40EBB75EE9CCBA23A 9BE4485B569821DAF76F1F1C4E0F171B00F77385CB556686AA10F67F7486D4CC 0D9B56F7301EA4DE00BED4280138AE05B913121F98CA2F31EB7346CBC1FADAB3 0ADFD60B04CF939473011EA9DB084E0068C6F087AD32328EDBAF691B9E73936C 8E2A90839F952955EAE78BEC76F9268CCFCEE2B69696DCD5C2CF26CB562DF21A 026742232AF7F0872927EC0D8F04DF1019BBA0E481D52D5503BE4E9D4C3C1156 A2F99E088FF6F2E9647E3D54231BC50922CCCFAC1861FDC27D53B109DED23DB2 B551D0FECE6EF72E56E7FB7E3490DE268C16585447ADA4A12D67FCE9A2019F53 5DE849DB143E258CE9A8EAB150E049CED42A4106ED943BB977682FBA5FAAD53B F268EB5CA2AE73911FCA5BD7CC69B4103968E22B580BC5EEDE9326CCE69405D9 F841FDFB2D0C5907D5958EF04FF7E260310FA6319B92A0D5281A16FEE4A5A753 35676F6B7B40A40D7D307AF6C7FCA727B3F3D229477EB41D46193084DF929E6D EFB1E7907AF425C0D5DDAB1430A7E0E2ADF5BB30DC817DEE05215B7FABD9838D 6AFD03D62B38C655CE70A0C152D80402A5C372D2E033BEB3CDB415F44923BFE2 4F4D73ED89DD4837E20B644AB242826553CD0A96CE17CA5204CA28EEC96C5EF0 F7E0EDB7BE39A94F3A6E0E855175AB0BB936579F959682B45826D1AAADEF8CA6 DAEEAE6E959488CDE4E4B9BC01DA054661365EC891BCBE0BA0B332388EFB69B1 2DC0BB734A2DAA9D8EBD75FEED7B9E06020B73480EC65CB375D567791289908F 97ED53A43A992D78120B77B42E2384566962C821F0CF92D91E3B6D48F7DDF774 152083B633686C0B4A5E740CEA5BE80A268F99B93CA82AF56EE06CF82BC3B9F9 78DE3BD03073621D833C45D5080B5DD0341E18F325A4A6311A9C067E050ADB21 C4513A744B605EA0F895D5BE289A64CE97B21B954FC6C9D165E6B44FD9A07357 FBC5F2FE8C1498E156C0173C552C5056E1B70C7E32444DF4AB2FD0D4B77D72DF 3EF68F075FB717D42FFC31BE846E00F5B08D9470A056661666684C07055F08B3 DC0B82BF2C325A05CD195F5736F71406D75434DB2C1A4D6C020DC0F2076FD472 3AEF971ABF193470D5A4C185C8BDFAF7C6B314122CF4109E5EAF75C29C94DA1C B09DEB0359CC932A36FFC18238399FE9414052A2A31A6F9C86CA1D05F297EA1F DE600068004F92FAB18B0BFE60081D0CC2E6DA75CDAA3DC6F00E4F2417D5CF4E 1C2AC3D64626720321B0D88E9DA1E556A28BA224BA9BAEB7E6B1E1DC59228324 09339368D4024CDAED93DAEE9F4E82877DA8199171A8C1844A732FB86EDE3B07 C42AE913F5462C535F9925211A0553925015AF9712D0D2B08D6777DAD0CADD16 619FC16BB648A1BDA8E7B7B9F1D0FA24DA13C1D1B5F3C0B6D309EC81039A7C14 AC7BEA384E3046822573C02DA5704D13439969F89B2BDBCCCF6BA3004870C619 F67E347C396949B1CEDAF0871DAF814C79B4D65CBB129A986E5BBAA5B6F766C6 EC323E01D9A27514E2F10D7D9D606A0A9BA9FF00BF4651641D44F16675B50888 BE7A525B151F7DA21F83B62522B4267643B77ED274D2ADB1634AA72963809B6D 16922FA9BAAB2E85B38B1E70310076B9F087363D6EBDA5B584BB4C5A678B2537 90055486BB51C312C2B74D256DC33C8A7B6CA3985AE04F679282EE91CAC27F3E 2EB443CFC5807C5516515D160A0FD1BF5D4B74408AA622929CA0C548EBD4D0B9 E2A346F46D7BE85B982C57ACAD5023FEFFD088B43A316FBF4463FDEBEA6AA040 6EF5CEE8834BD521DE3738A0CAE2C3C174D6648CA24097DD1494F47A9A7BB8F7 68D5A18DBC60FBEB00DF56842BF7B6D59A172E4080039A69C5FD7AD433E49D56 DD3C63734887162B7A964FB37E3F8855F523E8776990CCE6495F07B23D4E0473 C75E6134079559602CCA968A2B4240AD564C6A266DBEAC0B3CD3E325CE08D5B2 BEF702 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSS10 %!PS-AdobeFont-1.0: CMSS10 003.002 %%Title: CMSS10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSS10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup /UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSS10 def /FontBBox {-61 -250 999 759 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSS10.) readonly def /FullName (CMSS10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48 63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3 274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F 388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4 154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B 4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200 29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5 CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5 C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16 131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682 302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575 F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378 AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49 28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18 121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D 8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7 69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7 BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960 C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92 B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8 8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01 161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565 F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14 0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674 D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169 B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434 DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5 261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2 64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038 F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29 AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3 CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF 5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091 73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5 A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F 1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6 D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C 13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7 C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8 08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220 B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3 23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA 56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788 2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE 3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D 5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D 9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5 2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7 F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB 73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5 B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007 11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7 03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7 5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1 60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7 622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5 C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16 8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474 1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647 F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE 257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA 7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315 611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4 246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97 E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698 AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1 EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68 0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A 94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120 73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680 AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443 8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070 5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE 6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28 B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378 129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB 8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6 753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4 93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE 207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433 3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26 7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80 D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825 09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C 5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105 B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29 E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26 C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90 F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9 7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989 99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A 96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982 1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B 48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F 4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A 45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3 D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81 838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794 5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200 DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240 5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5 46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D 491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318 F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B 0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287 EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298 E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0 0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D 8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C 8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741 A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447 4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1 AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C 2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780 14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A 647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E 6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6 4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36 D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD 60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627 4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289 BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0 1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194 6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE 65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7 6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9 85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC 7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853 BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4 9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440 6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3 2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A 374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336 39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6 AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F 1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8 E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6 AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684 CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF 9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3 DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441 670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD 99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B 8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900 E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1 DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2 99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF 51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A 40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5 AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977 DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093 8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2 BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49 BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E096517A 0CEDD60F43DDB684BC6E4C3F6F3D70BD58AAB5052936EC4ED7140EDE795223D0 4E3B95161D16B0402EB45FE97ADAFA0433FCAF55E22BD7E4AD2030D9DC86F55A 8D7EA00901EB1351EE8A0F1BFE75CE46DA4165D78043F8F0741D4D9DE0CCA00E 5F7D89A849AD0F0CEBBCB948613028CFC39617FE9184753372C375A9896F5F1C 7E24255FD49D2109CFF9ADD9A118CA47CF58975A9CD3A960A8A08A078B98A50E 4DE619C8B2D3E15938C879D785539445AC468AABD6A6576AF0E8ED368A9350EC 717B7D3BB55AF58941B47FF639CA2946028CDDFDB84FF0060D330DCDEDF13BE1 FB1F743317C15C7A9F34408F5FF7CD9745217D9B809DACDDF7DAF9D821C06B37 25738F0D20F4A86A079EDF71583A9640173B3EC529B98899601F0EBDFE45BEF0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.0: CMTT10 003.002 %%Title: CMTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup /UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT10 def /FontBBox {-4 -233 537 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 34 /quotedbl put dup 36 /dollar put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 55 /seven put dup 56 /eight put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /backslash put dup 93 /bracketright put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 125 /braceright put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB 556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F 8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC 56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F 15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD 04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA 4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D 69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A 0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C 550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A 9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F 7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A 2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE 49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE 484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C 6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F 5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C 1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F 52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B 0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC 2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F 0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D 67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC 60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F 1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D 55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C 7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E 75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB 8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA 6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD 4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD 2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE 97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF 639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A 5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE 5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A 288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E 7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F 759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E 03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A 6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D 906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE 251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49 2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23 CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176 57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6 788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C C63B5B76ADB05A2BF747D5699036377F1A645372E5CF6497D8D4465492780B56 0D7A64F4AACF00DD611A0D4AA2A1B4ABBCE41B0BF87A7351F26E125166E2E07E 2E64639C4DC21B996EB744C784A145F80D07676331178ECAA4967195803AE02D 1A6A04B38D721323251A1B1F656498F5FF255E4F1632DEE1A8C2B197CD7BD5FE 3819B1998273EA5EF8EE032E0638F6DCE419852021D098A19CBA9A2B675BEDDA B6513BFA1F239FFC92CEC9ECC612072E87FBEF1ABEDF6804E605AC8979E970E1 3EB524894E3949BF090C1BB477C45FC0054DFB6B6816C5B0312BB9FA09EA87A0 9A18B9B5E0DA687BAB199267EC6668094D1FA853632DE7124CEAB78BC994D6BF FD8BB4B920B89A68DC0D60BB73AFED84D38925B4E8C4D4E239080FB47F44979B 7660A9C57F1CBCE1AD69AE3E7782796EE69BC910251DF8406ACF78CDED5224AA B13F1E17BB454BD4B5AAAF0143570E5FB2236DD096A2607B8D24EE238110486A 0759B4AA276E3B5AE6BCCD2299EF7EC5C0ADB9E3A838DF0A0541FC56F62684E2 F165BDE1EEC719A7DD44D7251B0D28C63304BA3758C76B1FACD54A4E73C9B32E A49366083906EF8927B6463215012B3927CB643C0292688601AF2348D62292CD 5E20110FDD05739D7EC6A3BD1B166DCC421ABA7901FB926025EF88A54B0E695C 38E9C894A2EF7F33E5D0304268849FC3D2F972148ED6C631EA375D67DEA1F8C3 C44173E5FAD943C81B72D818D7202AB20B77EA0299D4FF7FBCFCD7BDB0C9655A B02646E5BA32F6A7033BEA306BE69EDF532347B24DC7E6BA226C6005EBF841E4 16430F8B4405B2ED05003F10080C12CC74EB07708FDBADB821BFE0DE6C8A3278 C2349EB88B977D15639695B35C35235E00862E70D7E9BF6632E0F2E342FCEE2F 16880A993EA9BF5FE7C0220D844C5920A5428CD87225C7FF28FDCD4FB898A052 A0B1A3CFAB8A066ABF646D25C4A9B9B7E940CC8A46D56B1235EE247C868B3040 A83D4392DA442669E8524ED46DFAE1514F44EE67F9147F0A8ABD317CAE4BC719 0E0E2655654FC2DF6240564952A26549517E0B48C2500F5F052CEC01B7D39950 109BD5E58C7C0EEDCBC27CBFECE20B9291E85CC2E80A8D41D1603838C789F254 30E5E1A7B589FD23566A12D027B5BB21A3A0D9D40CEDFD850FADBE1B12A00F10 7E3B1011AA803A608FF37988C7DE6AC1E955C04C1D1D08ED95F1C0520F069B4A 53082ACE33BDC0E2A514CB5EE0ED77A861F64C9FB4E23586A6B2ADC96B4D71A8 CDCAF63D2BBD0D8D935025944BF6B17546BAC8DC48A5ADABC729BE68EE00509E B084990A2BC6178A994455F9286937DAC6EEE7583FC13EA26F504E6E66142EF7 09DD59E6A9FCA4713E92EDE9E4D415872F1FFE2F5AC5EE285E03B895E81476B8 1871ECAC61DD555266C1D037B1BA381D130F9E21F39849DC022ABE678A7F2EA9 1823352AA456085C98292DED9FAF082E89FC52487BD40ECE92476CE768166431 92F6AB4CC2844565A01B9B8C16ED8FB1B59A70832339A063C5D408C566DCEA53 306C334A0F24E5159870B2F8D999576D4A88AB3C92E5990D22AADFF62906DD21 A7C173D5BC35A4B35017EE8F7EB0EEC8BEC6A54E1FBF1956A3650BD13560818F 75699A8846A45307AC3C6AC39E7147844D098E2011490315DF92E188503C59BF 525AA6C11A07F3FF28D346BF0B37C891A8CB5DB768B20E954466C7032C6FD35E EC745501DEECE92659642EAE17B656DEC9A19E38AE2F07471333774B9BFEC3B6 2AEF7077B8FADB994B61C91C7C48E51FC3EC6CE490A71C82A089CD2DF1094C39 8E652DD1F7BCB905A78F5F4350AB844877956B837795893A9D08EB5EB02F0881 94A0670ED2AA24FE20349DADA8B51874773167DB9A897BAB5BD85ED5F38ABE6F A6D4AC4E4347E745919A78E8AC8781C586646D0C4195ADCA042A4F4DA6F4E253 8B208E59816B15DAD0C761F0490CD3CC898BBA3647C9EB7B316717EE859DFCBB C1CBCC5CC82ED5039851E8BB34D4F7BA55E5268D7DC5010F985B12D28C94EABA 89EDA7AD3F181889DD8BC773044C49C8DD6D3484ED6ABB5E15F4DF7898D01CFB EEE92BA769DC7E4CD4A8FC8BCF5450624F83FABF5CA9C211B89490C5C7222AB2 3779526A71526361ED2C379ADCA9DBFA54708645485ACEE6918CFEB08A3B932F B2070F32ECE42722897C1AD9E6A375D7F789809B4AC77CDE3467108292EC20A3 2C93477AE6756D18A0F6E3812E43BD6B5BC69540904C2AA56825D73500F90AFD 5F008EDF78BC053A65AE1FF5A96C7495948CB7CCE21BAAC7D1358E4BBD39AFEA 303CA6BC416DA85CA0B7C26E680517D74508A97395BC390F1111E2937F3EE432 EAC71DEB17C98D10225B3348C76344A84198F457D3354F476877A679BDB33BA0 8C10F9DC3EF0323FE12397E9B193FE0F553D61A05DA9545ADC9B1493D157C9D6 0A9FD92177830C3B5B440D047BB29D5FD8E8B3AE2F4D16A8498A8FA7EA2266FE 4FBCF7EB35DEF00695A8144F0F5BA16633F19BF5B481483C43D54D09CBA224FF A214C72144E350AC33AB2616D73ADCD6EA24A6E5CD43A5CAE05BCE6764AE15AC 4BEB12315812013E97B8DBF52850F7AFE97245C864809F5EBEBFA5DD9D65C284 73A219F2B01792A10D0CD398D2DC8E7A2EF3CC6149AA2870DC2980E5C5857114 5CD30A513AFBDEDFC1AE770C66EDF5EC62467E98ECE66BB7D1158AB0AF31C0BE 53C98DDC130CF17BFAE75C670821CBEEDCDAB2F837D22767F36EFF37DB4FE4AD DC47E79A2F757DD77D914D1CA90A150D722199356CB1736E8CA9C57EC4BA890D C9B1EFA9082052938B6B88F8D84CE7EF110417254CE02983116E19A1B86C38C2 0A29928CA7F4234C02FBB334EE430E6DBBF3A042888BD64AE4E6E6F75E0CFFC8 AB8EF38E64D91320FE0031BA1BBFDCC47A4500F2977B557CD0E243F93E97FE7E CDBA751E6360506B3D655F5FCDB616F45FDAE8F6BB8173E38F0965AF4737A7F2 7FB35FA51AA0DFBDD5E78B2833CE36B1DAF961192446B8E4608A500D68763216 06BEAEE405882A429ED068B8650CBC7D87FA8066EA3438EF56983F6AC9393A83 F3577613C6E403B6420532F10589F0FF9F1DCE2624F1651C681FB5FCF6D3991B 8B699BA93E6AE9378BF4B5EB8871F765C75A75807930D9B5E24F28CE8594230B D370B640DAE21D34EBF895487B439A3F8D035A0C7643528D0F76892740E42253 1E3B448C6C90142C20DA5672C1D50A10E3870184C89983270C054CA23570DC77 AFAAE7ED505055BD079C7717728EDEB22A2E3D8CEFD164CEB383DB91D2CFC29C 3161C76595CC60E15FE494F59E197A5551B47DDC555726E1CB059A2DA243BC37 5CE8D5991E1EABFFD443162EEBB36A8560B9BDA78305DB39DCAEA47B333B83B6 D1CD3D5621684EC2E8BDC85ABB74DD8ECAF58325DD8226D257A1E7A5285FCB82 C0525FE980CD9239B515C57E67FA92640185750A533A445E425A36E9EB71A2EB 5863F900E2E8E4DE0342A7A7F1718000930B0A40FC17B129B6DBF76B201A04D2 5E844D603FCF04C857192F41455FC3A3CFE291E32CD6862B1892D4BD75CD3630 5A581599DD3FE4D641739413AC7BCC576B9B69F8F92CDC582F74EEFBBD17A5B6 B77B62977D24FCBC27F37C561934FC86959A1A0FABED0481A0755D68A0F4A020 3E45888F17A4ADE213CFDE3E2029A04B111578927620F8CB4F2DF3CB5898CFE2 50139B535F351B8114C17DB741B6E94A25B299048A054FF1AD4447688359ABC8 C621378C4B9974AD0CDB367472D3A245BE3BEAFF2421BEB8E10836ADE33945B8 8B478A0340AFED57051D635ECD0388FE403A621BE9F490512438B68F3FC3DCEC 7059B81D35E9BBF055BAC0F5462B1CC523EABADD198205277327F6B22AEE4B5F EB712B7F37F9530FB63177A67DC9AC4D5E83E149AC75F9E6C6A3BB8F6DACCFF5 60F20C30973F326B823D602BE56A101F9084677695E6884E183D90D62348F9E2 B179CFB8B27858342CBA3116374E7E1964E452D9657FA861310D9D59A8E807E2 F1AD9BF0A10355CF236FA58E8C72FCF02A94F8E79AF83636AD9993643B1C1DE9 F2B6A864C6191E1F101B2FC5D90E93D40E351A980FD7926D02EBD5B091541F59 AAB13AB238F681BCF8ED2DA8A0E5A61C45E69203A31F7C8001C994A1974D9869 6361C541BF631B3DAB31031AA4284F5EACDAB29DD2F6B59F63519D5CB52ADFE2 993F090A4BE9E6B70D8ABB34091AAF56BB081EE9A7E280D331C63C0D188EAADF 0DF449FB61276230218BA4C9B012BF2BDBD0ABDCF97FA2F84FAC5ABFAFDC6106 B6DA9535CC4E0CABF7B2A6E11864CC2B4B5F5DA2BFC08A7CEAA7C1EAAA1DBDC4 1867664B6C16A2AD7E98C90910DC709A239A40BEBAF094730D87B2C6326B7789 7BC8D7875A9733EC7CF092B1D21EF005D6D71BA3F78634E3B9229A62EF76D442 D2BE504D384DF3E98814CA0D1C29BFC1237A4D772178AF4C0EC4FDEB4BAAFC10 994FDAA2E22CEEF3B0AAD0F21109C70474088EE96879141D7DDEFF022D2AC640 0D2C0802531784A8EC8AEFAFEBD98CC1C6D608F18657D944F3AE78EF7997E2DB 1DFEB58C2894780C67377FD1FFC761608F4CB9BD5C325AA04438BC14D4831508 B5E1169C4C4C3921FE02CB7D4F05E389D5877AAA248D6547F64BDA898D296D3D C61B1F4BEAD9B05876ADE892ADB85E59362E8F1BA58E926F6EBBF64957241601 E238FE2AC5AFCF0495F9E8BCADAD21EE4A3D51719401E72960532C99833E66E8 CCAB18CF3392230E2A9061FA6DACB70B4E39967A8481FA8BC35D2365FFDFA5C3 2420131DEF87CB9C78B53546D4CD3B4AC44F65F10F04C9D68E6BD36E98C92F48 4B5F19AC83F0966F8CC5CB9D9A946E31F087EFF6402685FCB37886C0CBAEC149 380759BFE115975F64FB8483E7A10E42A150213AEBA18BEC9D6FDD27918D3390 5EF5F67A9AB776E08903CBC518CA1D2ABA313ED15A127327DD8305DE034463BE B159E12CF681285859D77057A9EB8B6981E2DEC3E09ED0B525E5E7E64697EDE3 7808972CB3989AC583A1D01563451D04F602DD3D58EFE400D0087541DAB357BF A3AD2F72E28FA7C14E655EA5AA0DF2080F2A915058629A102CAF7B2274DA8B6E 4576693423726810F2BC4DFDDE1D590BD4D90C62DFFE550E6F8D579857DE752A 744F418AEACCED6852F2B91B7B3DE77EC81BC006FBBB5DAB13E52ED7DDFDC558 8606F7AB41B429CB50317DE679962CD2EA52FA1FB1AEC16450392BB7AFC3B791 429E5B1D9EAB9FEF07259C93F9D412CDBAB67DFA225F0DD12BCB1FC7D0E8350D 4E65298E047D6B1EDFE3C01D17502A74D67BA375DE731DAD6712278F425643B3 DAF7A624FB1CD73495811B97EDB1B7ED79C96BC29A952383456F7F1E82C2E0F3 87079E062C28374D1226E0498A1A112332EA260153837CE653919D3E36F899E8 4249B04F610C98607DBAE9A08B56701B4BC94AF706C36C0017062EF35BDF4060 0D0B10ED9FFB84BEFF178EAAD7858B856387DB48E6110D2D623CAE7C76AB78BA 66F86094A740EC202706356BB287745B5E168E4EEFAF929B40D5AF27A0DAF6BE 43ACDC2D922927AD5D27F758596D74DE6586EC8A38515464DAEED6CCDCDD4677 C289251F14C55ED95B02C7561FB07080EDDA97B6BC4C3E52CF6FABD18B2F473A EC655961654F78504277BF35969E25512FD4F715DD9386B698F8B5849DE8F001 20AA7E008562F28F70CF2E32D5B29B0038628D4BACA2E1508A39EDE2E0D9936B 41C3E6A72F67AA62BC1D024CBAED83231FC602151882BBDD2D86B42FF91F7295 F74A03A8EDD1C66E6073383E004F8E52B782FBC52D7A385E339AD9BB7B07CD8A 6435AF09A765DDEF4F16B4B0A1400C5CBF782A2794002E3F567A73E2AD0C86B8 D440F3DF147DF4CFE74CD1A7391AC2D3903632076411B71715A0CF6D73C7CE3E C5AA2F9AF6954615573AD125D145F8D2266E1C38BFD48755243BAAAB92D465D8 8438407EBEA5A064885B589B0CD8CD4D9D750B79E830584413F2FE59374036CC 608BC56364AF1845E40AD87B1564A36E7435C20F7E6A69F6DC7ED13E73F9B0A1 F3F08A9B6387F53F6FC6B317FB13A265B0C2034387FA26263DFDC62DADD98A8D 9F1BE714D11574F6DD2668F703C9A4B1BD0E814AABA11E439F3DC3AA552C72CA 4BFCCB21128C127489D967FE3C71C4D5C14170C38FA9349A4B0190072A90FB23 D0E64135A50022FFE2BA869F2795193512E4EC553AA50BD729EE16691B5A39DF D98DCC881080DAB813A3286F0D8D0D825083813C305B34F4F0F0153BEED5F442 9D9FBC3906E18CD52E122B8F710E24596341E171FA0087C83DBB9BE520CEF18D 77C934CA65D6BC2EC51E8BC56A909DAE11ED3FAC2BC3B6E46D0F1A1F64655063 E3736D34E4C016E39C0B250E7E5CDF27550E2969238F65B7499D5B20BC0409D1 6D4C20CD89E2D8DD7C42035CF1F60EB883C783121FB2549273B9FD05ABD93477 273C251BE6A6CEFF6E30A2FDA84338A691AAFD453CF572EADD196A339440BF43 0CA9A0808B498CA9103089E593C92841644518075C288A2086AF78CEAC895642 E5D667CD7F65DA57C42A5225BE078A47CAC140D7EDFFA9506F79725AB3722C83 0507F77347FD18382A9E3695E14EB1B8DF640A796F4BE9C42A71CA41402D3D7E 25E8C6925BE29945469FEB4A2A1B21BBE1FCA36519DF747A0FAA38D48BD11C0C 025919D37956581E013F0484BB215AE1161517B47C7F8F51860359079FDF3644 B37FF5A093F8FDC77D03CD91DC673B3608A63ECA2FDFDD7355E20B1425064951 9315DAC926B949D4C8278F0385DA62AC72FBF9922D6C55CCD4CBD5882E90E7E0 03659939EA2B91BC17AD9943D57D73EB1AFB7D24766671261A807374D2A9E186 0A615E3A54A83ACD00D399312995CFCF9CD32B48623CC58F44CB03399C125A9C 4AAA4A2861CBA356179B2245C43A98BA9EB734FF93A89D7007BFE09C11ADF011 179D62E4FF9EAADB849E68D0DDD2C463ABA0AF04AD08B10DBFE4FB86D2F84C44 ED4CFFE88900F812BCC8868C66BDB0D1AD9C2E8019FE22B82962E34C2ED9A14A B383636DD7F777BEE95717BA56D9526AB81F1E579E2AF88ED7DD4C62156AC559 89AFC5B040C43994F52A3B85412F9F945FA6884FB63A6A5EF22D0E42573CEBD3 41673AAE8EB77227384876A2D6B1DB998C320A0A9261BFD870E975F7ACAE9F6A 81C4EFB0F68768C09B4071FAC531D17300C9E99BFBD1CF1F0DB74749DF644EA7 7CA8927A2F8FB12F5D41A6EE311AD0A78C5F6A4C9451F984013EB94B0F996B21 57DAF626AB662480C6A565613DA10ED497B86280B18DD5BE5A66A9EE86E91C81 C58B24922A8AA7F524DD2707B1CCC67D96CD3C431409BA63FE2E361DD17955C9 F10DB4E0A7A8185E98EFFA201A08263B214A49531FA21D2630647720CDEC1BA1 22DF501123A0C44FF166A67723CFC0760F4DCA4DE99A1A5641DE07966C117FFB 47D03655553E1DD0374872A48352AAEA01F53994F30DD1C231674AFCFECE0DF0 E4C53A652F0D5264A15B6C314F2E3A2B36C0ECAAC06102DC4239C3A1BC5EBB9D 4845EAF0F6D34B7F1AB84A9EA4B7C4250D6D549094213B93F0B45A0D0DE71DF7 4FF715E81E27749B8C2C1F8475514DDD753D56A87D56CD784B5F678ECE7DA4C5 872DCECFBB507AF499BDCCFECC3BB07CD3E086FC4ACE46D4797942184E1D9F93 B9435A3B4E724AFF831D72F35572FEBE930F858B54D2070B5F38891BD20A5D6D AEAFE9D4FF8A8CFB835B5C899CEE9816A48C543E1B1D3B79CC12A1298963C816 E0373FBFEEA9B3D297EE6F54C66A5F624B45C164E0B46BB0F7B6FB41C46FEC03 A6DBF0671ADF9C846E6515FB907FDD275DFB15E502C2309D70782B4185B31402 2940FE3510049E054FC29A810836ACBDEA5822DCDFAA9AD46F104488AA5A2C64 05A03BF96D08E6E308D78E3DB926008844389D308DCED07C82BAF8811292B637 A1E2BC052602C05D623845F586BFB542B22944A9C344B62F50924F12766C3952 99EB9AA150E24504C44D399DDE16F524949238D6D23213E2388E6E6095970CC0 EE5977B1C4D98517F785FC4957A1E173B9B86E9AF5D47B0A81956F1E5173D41C E8604E725BABF0219AF63597C137F20B1B5BC52155B8450D15F8B7F3E805846D B55CAD3D3E8E9B285B00EFDA4F4AA8570A769173E85B756964C2BCEAE336FDE5 A391043F232322F0F2F4F5DD64B9EB4A5EB68E7063D774894508D60678FC7C82 473A19BFADA70D10108DB51D78478A8674E636BCA65E2DEB154410590F55129E D2404DA190EA6C72F348E85ACB150793B5D8DCD8C0B56C07D35FA3B60DF0508E 39FAA3E9B412B30F2BE01FDFC76B281396F8C8A74BEE192E86E605512D27C531 B35F9AC5A7062DBFF32BB47DF9273E44D63F547105C88ECC7257A2A565853035 741218D83D4F87DEB9677356F410A24AF6FD2000489676E2B4DA951041205531 7593DC4DFE03595BBF8662301F9A1A02D6FDF7DA61A6CC089FDF210A5EA523F0 E301B52E3BCB20D33A85BD1E9D94947CA89597D209AEA2A6823DA12BF7717D96 E0319BBCC82AA84FAC84755D1B4846F73F6B7369760D1C22787DCA9419A174E4 13776463948ED4A65B374EE14A643DE3FDBF045EDC3D4ABE71D957BC89371586 8973B2FBBFCDB9FEFCCD6C59343EC096F3E69CBE8EB6B338EC075111C5710B11 1074AF3DDC0AAF6EB5A78B6E2555C05BCBA4B7C95070667B57D148245F57ECB9 3E089BE54353574AE5CA4049EAE8891B6047D2B971004C2C2D3E3F4BA197EEDA AF22F5BBD2E7AF4848221BFE136AED09D7F04BC4C3E221A96C40F1C16E5E36D7 5D18D7010B84AF7706FC4F6EC6502DCDFFE1A494CB342A601AC23E1C4DF59262 51495EC97C73D1488055B0DDA236E635635A71599C7EDC8DAAB618F22A7E40FF F9BEDB9BFAB4CE45C551926B5DA233A8CF2F806FB1C3B2CD9889E2F08661F565 8686B5D6C32645C5E0AAC87B60AAF8FAA28732FCA58DE655570BC55943998251 112452C18F8D5CDB4B908F5B5FBEEC07DE103414AEDB31BC5E1DBDE51D5100F9 41C71EA6CAC36E44801FEA380C9D07C1769DE2B0F179D18E39CF19D961C1548A 8C38B51B27D4B5D56A9FCD7416180F7D33354DA4BD1964FACBE04CF30C55C1FA 3E9BC67DF3DAF88A9A42AEBC949688B30F0B4F3F44E9AFAD3F6B081A3A343ED3 55641232E267019A824C65409ED0008B593294D9AE2FC18B826226E78D94321C 73185F4DB401FD9393666A9F523C4763E064CF3581629B01D611BD36013F58ED 8122861AEACC63B262826C425292B6FA0961D160EB63A0945228A1002D4639ED 6AD2C8E7AA2514F26A311A2D898E10DF7D07B2948D95F75FB9D0FAEEA2391DC0 8E1930AAA57772C07C6B315D28E99C6364B821C9764D6EC04592679B7F65FBEC E4B03564568EA9F20871D2BC6D57C02606C842A4D5DF1451CB00F7DB08E3A73E 0C27E1A4EEDE47EC14C772EDACB4AAF11C75BCF47618F669DA60ADE2E29A4511 8C7781E2ACD7CBDC3AA300088CFDECC260535C64DB399BD240198621375DDA54 E4DB6F865834ECA58C8CBC735CD9191BB52CB51AC6977959F5D440B461B79FD9 D3299A5567B973C0118FDB1FD3DF0B747311AC06915467FD976C44C44F917BE8 096D13FAA7D84C63AA2A08EBB83D28432FF62EB307173A8FC920F49507DED6FD 64639A3E2F39FF5646CA13495468FE0EAF5C48BECACA52B02D6DB38AEB1E4189 7C69CF19B9034542F37A5AD0220A007D4C16EE437AA46E2E4CC1B3EFDA641F1A 12A5336EAD5AA05B63914EE34BBF2B151E7623989D0E44CFE4E664385513E792 1EFF420CB230E4D6CD9C570E811CCBC4589A4073750F29672398C57967B00202 148C5151933115844EAEC020BC5C33AC521DA5687E4C25E18CDDF393D1D28286 127D6256B9C6765528F650E62C8EDCDDB652B5BB118B252338BADA1C5A69705B 38426A997C6F0110C47E20118093201DD36642B5A8BAD879AB8B71F0CAE1324F 0F2F4DAAEAEC1ECF83CDC4B1E5FA6855D2A1DFE1B61525610A78AF9C123F06BD C6670CBA627EC010186834C1275245F84D69DCFFA06B6D92E5E5667432FC458A D0ADC75FCD7F9E13AE880F4B8D21175BF570B8336F297252DC49A6A61F891631 2E184B9A9E9DE3F9036AEE3EAB34EF216273BCD6CD00C227F789E7EBE6DFBA26 3761FEBEC63C903B1C3C338553A177F1C8DAA799A8511EE2B9444085AC8213DA 405F5F7E06FA8B25B14267A70BB57CD9B651AE2BDC6965F5AD36C14E263C1507 8FCBC55BA29D6D250893B405CCC203E2CE344A8286576A0CF8B3A9F156B5F857 31B86D80390AC0E876E1D7C2066C654CBAE9908AE87675F3EE6BED53475B14A1 26FD035CB487708FFCD035D956B1CF60EF3F30A533DBF9557067AEB4426CBD4C 00DC063A22D91D7DAEBDFAE8038F0382658DA1C6DB48F512016ADEC0B2B811C7 796609239A50C4834B695DC12205BCEEFC65BB986DEE40CE3F08D90C6D61AA02 87F2FF41AC8099C1A8BEC9C47EC396B9C0C974185A75B4E2F93105BC030E1374 8975C040CF58D08064DA893A1A7381083EB42AA28EA11FE68D6A841C8FB89EF8 B7DF49962183E738553A6C126F02726662D5D5A485E1F08EE23DBE1203746126 7FFEBD1522A824A6AC3B37445C1C880FB0D5E72E922B2D03455071709B65B12C 87EE3C6C7BECA4ACDBA5DC48138CDD23F9F3C7393B49AB2ED52C0C1B9A0B0BC3 3C874EFA21CB7BF280FEA698AD5AA608A20FC764E7EEBAB16F0749BE4058105A 3CF64B0D86F7A73EBF5CFCFF6AD09137607447C4266120B1560B30D6CB3742DA 793A8F21C740477977CE1330009C7D8D621BDD10A2979E54840331031ED61382 403DA99DFCB535B40CD4F9527AC45FE6875589D00B0DBBD193B3ADC51E3EECCE 0679A1DEC3DA0BEF731C934AE6FB461A6DF8BF0811FFB58560A6A69CD6F9BF43 FF38679E200D1A9AF3E63280C57B69E40996D8A5451711BCF1030589FEA4FAF6 DF333B6CB89AAAEF76CE73B290BA3AF9E04B1A2C7C3E11CAD5251D63CBDAE20E B210AB7850784C03DFB62EEB236B43A5BAAB7D8893B39ED6CCB179508DBAC4A0 A0B5781DD6AE74CBB3EC4B0E1E65CF9ADFBF3482405A40C60AAE2C46C3C8EE96 C2B7F5B591422861DB42F013A8D2D96AB432950BA2906B425FE412C36AC87B76 018BE9943CBD3428F92270EBF6448D81EC0C5534F1102E33F822804B5D1505F0 F15ABBD7522482B4FE50560645DE5A6AC6604E12DA1785D63B20F2CE08A488A9 3D58D8C53633F2C7CDB26E3996A2B3843CAD5E38EA29CD5126F9AA8DA46ACF8A 0A8ADE7D6314291B350184BAFA2DAF08D75FB3BF5074DECBDA411C37BF645B7B D9DF13A3A88906475322D817B0FDC0965FF6366D8C3C8A16FF524204E719A790 323CC87A76179633E4DBBCF792BDB9F5356438611F26352FBE07330004CE665D 4A8BE0980D83B8754A11DFBB0081D4D816D7CC741A8417FE70AF604225E14314 406C3A1EBA8ACA9A4484CD9845A5D62B30FDE4ED6B84E41C635AC096758F2BBD CD383238E65779F4A340AA6C00150E5359410D6B83751C169C4CBFC016A8E893 572AFC320213DCF34E9B01CFA05EEA549683924A0335C019B454F46FFB4A9EEE EC77B586F27139C3A740A676189FA48A5AA65A125CCFD9D4F38467065F342A13 9390ADB8FD55CDCE20BF4A06429CC8C01E513D1C7A48C460C0F0AF71396AAACD 82862F6927ED6FC26CE8755152EF64FED6E70E5C482AD3552287DD10800CF1BF 9B2D6F5C1DFFE78F9FB4074B13742462D507A8EE210421DE098C2DA0120C16C2 FCC3057AC4BAB6D3E3A3A821A97E1C3504A0B08388FBAD8F0BC77D8A08F3EAD1 3ED3D592363CA722053A0C56A8A62777510D30349B76BCF6BCBEA5A5E66DD24D F8788CD9FB09A3A20489033BEC3744BAE446AC7E6E6C4357A2B6EC9A8DFF77CB 53C0E828DAC9D81F1FFDCCDD1776D923F0FA4DD92F056A90A00E0143CAE013D7 CFC31E4CC4A1C8D0963D82FDBE7D782D53C0DC807983830C3CED7BDCABB45933 8E1DA08ED75ECDABA26759F5D50590C10B000DA048E9E7E346513CF944443FAE 667EA884C1A171A728C037106623A525E565C863C123F0447920B761BA8A8707 222F49F923DA70422605F4EC1492E9A953E46460725F5ADC3154F64348B7ABB2 4E76FAB91B6B1BA6DAED3FAE907B029E20B59A355B9576E0C0CE8A116E75482A B01D1425FFB9BD16E538A21E901AB01A0DF09782CFA75D369A5AA9BB8BA8F52E E0472870EDF4C64D8B93688FB060B07099C09413C1AE628942908013BA0CE2BD 9210423DD1EFC38B7893BE52D9B015981CB5863526F2B260FE02B960B44E24AA DF0AD7FA34E744F162F2C195A5A3DECCF75AA151B9EB9D949A216AA803F584C6 49F65CA60EBBEDFE257EB85B0B1A4FA259A05844D2DE3649CC2094230F69AB79 2413A5A7E19AB7061969F119A3E55FD759622227B303E21B5F9F0A25CAD249A0 6380935AB5CDDBA1EDDA9D14F9321B88A8D28123B209F4DA4F894688868E0C1D D3F507F251D93A7F15D7B818A9326E01BBE73890A4C83D20CF254A9085C7AE97 A8F40444C83B8F05F96B2B66B0FA7A3AD9E35DE6C1CE4DA1DA18DC8B711114D7 E149FA176EE6869AD0A8DBB35FA9C98A1CAAC9BAF996AA219CB2CB4192142871 FCDDC29FF3BB36DE85B9C9DC34293DFF5FBAB704ADDBC556A49536BADB6FC02D 930A17DE48D0C674E6444FCD00F2BF2D671A1C9441CC790E4FABD2EECAE847A5 CCA0EC851327AB708A9741BFF83F15F425FCE5295765C0BC02D3854B1F2070AA 3A421603EC1E6843A7363EBE1BBD985EEAA5CB877A9D342A36D74F700FBA836A FB8F22F0AACDB7A61F893D92776C63922A74A57C6A8B1993878973AC1A3C7C15 512CA18D3244AF37E4B89F06C9657C458CC614810315C28CCB1BFA02EBC8BDFD 514AEA64F2AE551E0A5060C51C000176B12BE32D7B1631DD1E9206B74D4482B1 EC07F1313D131FB7E5B60BC2EBACDCFF405C38A39ED9956236BAD5D72368CDB4 43A44D4DBC968E69122D0D46A6D9B3DAE7F32240BB517D6CA54D02F33E1F9B7A 7A71AE6588AB018D0A6FA2AA0CF10B9DC5369C89347A5D22F2E6A1E852E0138C 047C831850EEB2856271A184351401560F1AE7A7E392A659D7B64AD40E0E8BC4 6285E37C3A37E9E6F2837BEA8D25F707C1D14868C9A446BB8DA803E8818BD96B C1B7F9FA294C4F5899411798A12EA18ABAB6A40BE3CDE457974E950A8161303B 1E7E4C54AD706F0C172F562D81CA20944AA083D30F88124B294B458CD6F55C9D 097BCCA6F5E98A1CA8FD6619216F50F08D246EF1B9E6113A1C31BF785FD1503C 3EE581122CEC4A3873617625884DA0E6FA78EACA58E43F26E0D614950EBEE843 DA0A8BB17D73E8C7D3D714C97B22131F6318084D3CF99D60CDBC88F1B5A3E9D0 EA83BC025F11262D9B508C67717D9D34DFF91D6A1F90DA30237860233CFB16B6 765BA0AA746A87F9A57D6B14C215C6370A42732B6AE08CCE50ABCF28D96A028B E7C67DBFA97470C0CE12D59A435CDA73723E2C0687A978CE18C2814CBF9274C2 4A3B8B59F793666B09B40C602F82BB5F7C092F7E44083B196A75F470602E5A2E E18B8E50B44871548B284C7355B28401E701C176F3E7867ABF1E0ED533EBF0ED 745F5CBB43171EC3C7FA3F114B06846FB7BD69DDD9711885D97E1BB25CB6F0E6 CD658C8F707B45C29B85745444B86BEA02D3342B901034B820CDEF055F063476 C52C13843D3678C22D7E9E41327BCB70E5E993F2CAA491F960EFD5B34E49DE22 AFED41427D7085F68F4F458F52AF6EAEBD9D3518E830674F55511A80CE3A97BF 32EC4C6133713950BC4E25764418A4A802B852FC4DA1FE19FD2E84721B49D403 B24204DB2A218DA9612C0A17C26B07A167AA6B6284AF92D45F9F2DE4EC4A93B4 9DAB3DD3BB01F1EADEEBAC7CDBD5CF522F2AD5E02BE66A23C6F6550830CCB6FB AC870A5FB72EE2454C4E9964C0846ED142BFC2C46B90C83DF3393FDE6BFB62AC 11174C1DAECB4CF5F0670E8B321F4A9DFD4FF1F34742FBCD87F4EE27AA312129 A645DEBBB17F3714CECB3E5872C2CE946329509953AA37FAD887DFF57250307E 7B1765F2897843F451B5E75AFB14DA87DE71AD3A1E06B0BB60162D8BFEF27B47 C452C09377210EB40E768164AA75A07122D4F6BD752FE2BA1F6ADB2A957E5979 B65B610B476907CB571025F8F1E4FC1A422E3EC59D15066AD6F1712ABA1B7276 BD10D7EBC4C91155DE5C1354141DC8B9C1A3E11C68E0344A8C2BB9D088628185 1D3019B1F3672A50566FEF3E645DAA2BC49DB3F1CCE236D5EB89EBBA9A1BFE88 972A0BA59FB360CB2FDF4050A5DA096F7D128AEF44638F09C83342C57A884EFE BBF6635E40B3BD37E3CECE7CE5E40EACDABD25DE1182C69229952E78F2B24CE9 865F205EBC61F245337CD70D59A932E7772D9EAFD350884159ED02EA5BB00E98 698988FD7A86ABE16677F78206F7748B03495997A76700B440DD1EEA0557CE98 CA51C4CA7B0C6B6C8CA766A6E8B433BB99F6483CBCB6C6362A3C4235274C47E1 ADD1E54E38679B7F34AB81FA03DBC9A8052FF5C2A68A54E38B099C4C3250EE59 81E751C9844ED8719EC0D7538E23F77D8C53E4E226DD6FF3217B1586CAEA9924 49FEC9AF7E8B825B34A45C0E50E8FC93ED9DD0692D7CE224A3875DB8520D414C EE66B51D854B3A85EA0FF1E361BFA2B489F5BE088A30340C6288469807F10F23 101BB61D7BDB0353FF8803384B611AB9608E5A8587D3B05161C9ED8B381F5EDA 193DBC43B069DB81BF0A8ED1945745E56A52C4FEDE184AF8C02A0F59E2063FFC 3CBA6A91365181F86140AA2402462A851F3502CE7954C83290A69FCDBC7105E7 9D3DA16A13CCEA0E10D832DD9A84130B1F7F720D2154C95875DDC713DAA93B36 759427F95742FD507E4FD0AAA5C1B76C72B29F85D4ABCC48AE0580B75ED81A87 0777C98135972BED0F291D84069F29F7C9D6F8FC7EA6C71E6AC2BF077D35A1C9 86A79B50EECB028F93FC375166157872160407C25795BC48A2807B0AE1C181B9 A411BC0256C6637177D27E1933CD9F7026F43E201EEBD45903AD75C9E4895304 DD5E5D46941419FD89C794EECE37B698FF5779E9019CB1C623946C3200053979 FDC648D84540F348449C01E85158CAECEC06A49322FDA3DFD477A0E10E61C52D 1DE9083D667DA06923609C3604215F018ED939052A8071EF2F02DAE94861068E BCB0680E25E63794A0BAF653EEED6EE1ED583C220DE2D48CA4EEAB1115C88D42 5E9FECCF1B177C0968E1A14DC2B5D808E7E3BD32F1499B093D2ED752BAE6CA42 7C617312DAF4D8BE438575886BDD11A8CB27578DD1DB883BF93CE4BF6EF7566B 9B9984073B2528EEB833639554229321FFB677A3AC3CADDDF38E31C18DBB5205 5465A445077F56469A6B6C6674F76EF0DC04EEB56CF96CDE0DFB1E76CE4D1376 46CCF8264281B161F109E8BCEF723C83F7E09681A2195A586557C5113EE5ED4C 1E4549310AC4F5F294CADD437DC5316D6E00DB8D8DD2C5E83573521ABBA11B6F C229691B2BF195EC3753062A71BB1D8E3741604415EFE7B909821F7ADAF88EDD 311F417196B8157B35892F413CA25F39B2F3B6BDCD347067631AAF589D423807 0F1F3AD10771739F93DCA4BF00B2AD6D63C1D5CD33EBCE8A265B721ABECDD62C 8A0526B46ED55C0590E948FAF68E92021217D666CAD2BC5F7EE6DC9403997BC5 D75F4E50E9E6EC52391D35950A46CDC29E1B8EFEDEB48EC7FE9DF29998B901E2 DE12E4CCB3B6131978C07D7C20248D749C4A7E49B91E493D9030170A8FB33C10 33F4227814654D0C167C24EC222964391DF42FAFC1C8488198E0D42FDACA381A 75E9BF64AF266A9BEE3EF8998756F6E22A6CD39FD2F622160F177ECC51B7221E 278EEC3683A7FB36362D99FF0C6DCA7B2E8E87B70AFAA578176DD0C842633F19 9BD875EF97207E66337AAEC7CAA0B289AB664B21DD00FC1DDA743963B48D812B D1214BAA1C6CD09D320876387C63D7252A96FF584B2C5A7F23D7A0C44754D129 B6240F6C510DF6140CEAB7B5E041BD859BDE81387F20DCECEAADB2EFAC536AC3 4707E6C1C3C40EAD40C9F2D2BFF9546EF790923BF28CE1E4AF02E70FD45886A7 8D3A1E0FA4C1E956BD92D80F84FAFDBBB22D8C6088DE70CA7C382105B64FFEBC AF4B04C541C922006B6C19EDBD28F4D4B5E7061ADC962103522A95A05C527C0A 3317707DD6D957A8087DA8E7C72184D1BD59EA4FD7BF0FD0E70DBF9537B4822B 95B443DA38F56D2AD72303A3CF90ACB59C3320A382C7CD835A8C4BC7FC2F7930 4F9A5C8286AC9555EE4868B4DA8508956176756F801F6BAC81CD5F7F64F49276 C8A2A9D56713F1E93741E43B6C79FEBF1472E531896F2EE6D12F832E56F7D76E 6E20B35049AC41109C6DE5FAC30578DEBA539C29FFCE8A3963CBF16E63331D23 8B6F2D05497891DD2DD36AF47A0DA905E3B51F007C17FC347D1D72E5792A3CF4 E51A62B34449A15D9B76FA47422DFD85F7725FFBF050C1BED244EAF01DF4C7A1 593BC8CC43FD169BBFA980C2BA35BE173A8422C23F14B1C4CD39867B21189CC7 6C2B5A7C93517E8A9F15D577CFEA39B9B938024C8866376D7C20702FCE167B61 E1160B3D7E3267CB33BBE5D3F0ED6F4679AC2F116165E0E21AF64AE30098A846 796176C2145EEFF352506702DAC324FCE9F162DC9EB259CF5714FA63F3279F5E 7FCFD7BB631E7B398FA6BF15860BC232F44D1FF6B3A5D9FD92C774D117B68BEF 2090D0EB599953333D357FE6175D110168E853F9D503248A6DEBB57160522297 AEE660D062EC9221C1AAB6EF1E1451A5C98FF8E84DAF7A51E95FC3E0CE6960CD 98F238432AD97B2F5A9F3FB022EEA9FBB5C537EF0B510C45FB4227052F9F9029 50D2D6214F0CE705AA52CF298DE91683D7A8B44C1B279EC68304A7B0E92F2AE1 3EDF03F1932AF240A6A1C294B7CC0546F433B76272C7AE046D96F41FEE063BF6 0EC48E7989D86A78790A12F10F62A96A2A1EAFD0C899FBCFA31B9BD32B4F7CD8 BE2C69C8FE3215F220589947186261185D44C8F9224F4962DE94CED7431D6C60 3B1FC4D2F2AB39FC5107F61A1D7D3ADFE34DFA3F50FC56545072E04D13295A2D F3434C3947319AD1AC8FF7E1AA18852611AA5FECDF04621B1C87F9ECEF35198E 99EED86DA956DD243E74E4CFCA6DD296F41E9F43C01B920ADFD9DFE62005ECA2 C223F4C58D6A0043A11FFF797EE8CB26F55F6C1C99CAA775ED4024B2D3F8A460 DB7AB2E57B95C904F077824195660091929F0EF25A5E8ED28471236FBDE09E28 20A90ABAB3BB8397E334CB14157E8DBD779253534C7EE8FE97B1A62E991A266E 19EA9989317D05EE0C2A5994BA1AA242B8DEEDC1BF13FBFE96EEB368A5D4367E 1055A3BF92C5B97E923098AE2D560FAC2BC019A171D66E119B63A0BD48DA6AB3 716E2D4771B91FD0B263BB916E4AE430728F43A2C6F1940267E77CE165CC0B0D 980E36917DC812A7AAABA07ADAC8B59452EB7FED2CABD2FAB218A02AABA1076E B69B617A713EFA3333DD165F584EABEF09343A011947ED61EAD4DCFF60552782 2C0CA2BDDEA55E2F647546F44E6265C18CE6CEA90CB3CC03336D313BC635BBED AF5FB82420C7E2D14CF0A373C76CAEBED3252402B8B8DCBD7C617A1453D60B45 2F92C69C918D7BC903CFDA7F6DA5EADBCB72191190BDD9C90186B574B51A8001 D8FD0A585BBB1860BA429F05AE6EE968D69612F92C6CAA20B27BAC7B0AC9D12E F20BC92C14AE3053463D0A2E4A8E408A8D6C99CEFB18A8F43980C096EDBBC006 E2CE9DB08478783E2459AFFC2833F8E34C5D51D2787B450D30D9E73E42413C9F A6A3BE58992499C40BBB38C188A32439A34BAFABC8A2A26BA75C174ADB797885 1ED8E49D54A54405EA772F933270997EC9A0861430B1AF130E3E9A902F8E76DE 18D0E0FF5DD2D38C39B6F7D3353914AF699C8DAA7AB65C30AFA2D2DAE6969042 5A70AD98ECDB59CF26B3CC28ECCA22C93D85 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.0: CMBX12 003.002 %%Title: CMBX12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMBX12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup /UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX12 def /FontBBox {-53 -251 1139 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 40 /parenleft put dup 41 /parenright put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 55 /seven put dup 57 /nine put dup 58 /colon put dup 65 /A put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 76 /L put dup 77 /M put dup 78 /N put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE 0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D 2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C 42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE 78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D 9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC 5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF 9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE 2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE 947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B 0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D 419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B 70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE 0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC 9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D 1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F 3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B 57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC 8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC 21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F 07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E 8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E 8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD 595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB 313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B 82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D 9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A 31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E 5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E 94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE 0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E 7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE 4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F 744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D 67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA 054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA 6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B 8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB 77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B 72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D 99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD 8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C 82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A 59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C 403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E 0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC 9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C 5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D 6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E 1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE E75FE714FFF3D54D09C9747ACA01CEFD260985C6E87477C9C7843343C7E9E3F4 0537D461EF019E046DB8B5BA258462B2FAEA1826B3410BA3333480CFE0DECE61 CE2731FDDF7FCF2AEF7CC2B1EE7095F480B3B27932ADC486BD9CC130D94BBD05 43872FEBA04FB8866ABCB4D379696E73B84BBE98FBC4A16CFF22F8A7AF754624 2912C228030FF7EF23D51DD61BEB5171AD31E2B630475E16B6E0F3C78D44AC30 712D165DB658FDA800798803C3CD32B841E159AF0F748400314FAF5038EAD574 57D57A34CABDBE4B8D145E439A11585A0CEDB410973892F52DF26E116198F86D FD876B8299BCA27AEFEB72F9E8B4B7DA1110B52A0F96DE59A839E144184B72B6 E45614991F03299BF5D1365EF2E0D68B86CF619AED2B9D37876A796997CBFEB6 451B67B5EAE9120D0F8F9229332F23B6A10837AACB18CE42CA76F50FECE8A7D3 3213106308756303E821161BBA3576A83820B337E6A7E804D8CA26E226068104 0EB7484C4D980D7ABAF644B8B2A1BEC7E6506D965BA155349750E79A0C8A1AA6 5AFC6F9D9C691B47F45AE17E66D1B273AA58D2CBDAC9820F011DD77CB2F40495 540AE5327597D571CA7E202E2870297213BA4673BEA78368EBA8086EB422B6C8 445F6B793CEA31BDC91FFADEF2C5BEC067188E38AF3B1ABD904F54F7E77DF9D8 7432B67C8126BACF91EC2C8A38928BD202A705D5CC394BCC82DEE046D5855387 DD7FB8D69D1A2E80683892803509179089FF144FCE4E00E7C13C4C7D3D627B0E 1E7D613068F820C8A23B4D550C3BD121DF5D2C1607150B0262CA1B7D08DA1537 9CA4B03E5C399F946E2FB76EEF27495805FD5CCE647F99CCDDAED06D52C1E955 FFC68ED247AAAD68AE35417EF0D77A6F9CAA5CC56DCDB794B1483900B86EA847 75CEE9DB09053E2AF69944F90FD82328DBA5352C6910EA63E527FD93F252DF45 447C859A253AFCD6B91778CC869DF688739DDC41158501EA13E0FE677C3897A8 6C1D7520AEE8F73B4596BBDE970E480B94D57A95A6391387B67362C8E1D9F6A0 CF22109C32F2479521FF68023929559D9530C98865BDC4131B9CC9CF26A47AC2 B4C09EB325F560A0461B7DC30A0D64B2FBACC8134592B3F6FC60E7A6929D0AE9 F9E0E71208B9F656813AC9BE520D31CE5CF806B1B670C15D36C8F8C06E175C6C C028EED7E49DC759E999F7367CFAE5BB1D4F4C96FFCCC13F7A23A453F9E9D377 A4EB784898E181EF95A00BBCE4F8A7C595EE8D512677C12F217547011D58893F F2773DAF259E6D1B25C46B8E6DC6E8D8CBC0421D4E46CAFCA5EDA936F899640A 5073D1E5143DBC9C05A96FDF134E456B1E7535EC8E8BE23C006EBECEA999C228 AF2410E7EBDD0D6D72098136498DABC3E5731BA9FC5A789349F2EF928D79A1B6 BFF579B2D07126A0FBA67CC60118575E8F69BD9E07E02B39F83E68EED22FD516 5C439A91CF46D124BE0F866436987ABEBFB4A81E3C6ECE94A2FC1043F0DBFAEB 90B6DBDB16D2480525056A0C1D39493474988B15F25C9C451F43C64CE4A856F5 6055B513D37A063D45D5E222C78225BD2321F3ED15FC8953E039946BCC7726B5 65AADA7A7770E958F24BC856A9753C6759CC7234F53A73628B528F6C980637D4 EBC9321FF5A998FEEC4AE6A471998F936784530D93B9B939716B3FB721F0378A 6DDE916F06560F7EBCBFD0247CECCF54A89F9BAD73E9417F29B01863B5572E3A FAAC8DC6F8C98CBC4665FE66C0BECA4FC598929B0B1A8EE5B8F344537648F4A8 03A6CDC817A0E4438E5826E7AA15B2EEFCD3ADDB83D030A6939752C6D1D1B9F6 DD255391FE11D1B865E24E067FE6A7B4CEA98DB0E4230EA61955BE481695D8C4 6400627F24DD864D4E554EDA6021F7CD5C28320C08A5314C9259B8B6E9F35660 4131F2F1B699BEAEDCAC28A5471EEDC23280702FEB36D9D01864407E71EF7AC4 BB5396B706021A33A37B7704789134E2B95AF79A74059E7FA773E90D8D1C3CC3 916B253E5FE614509630D0301D22D11DC4DB7A7A7CD4D940F3E359012FFC3E6C D63F23C6D17EF5EDAC86D0F15CE7168B084973B7FE812A9E8C5338624890688A 06CD8D69FEC873A092EE46DE778AE992115A1BB6B4944985E26534B53B812AD6 3DC87DB42B756599F5866497CEBB33B7DA00214F49F8B9218EE1EFC7ADD58BA8 5D8767536EB9A0EC283BA23ECAB7FE7489E279F39C76B805F16033CBA693AD8F 94E6C391A25D23EE63E740F226E6FBDB92A595787C954FDC30FAB5A5400CC84C 315CA3FFB7ABA55CC7689F38000ECFECB6FC4401469DF3222B63260CC1A8CB2F 26F1DA8F6D1734F697EE5AD3ABF755F94F155CAD99D6E022483EC1818235713C A541AEEAD9A7D2C5AC36F50177577F66F106A457A494D2043EA3031A548B60FC 292D72ACAD116C3D5BA6F25F7DF3EFDAB2EA1DA2870CDD99387E0F9DB7262F9E E94C401D4C2912B3FE79FE708EDB22B8934CE9C08FBEF27F5006D80C26A061CB 1B275A4216A8B96E1D849EB7F4B5F9271CD2F9803BED6CBD19F32BE2D7145437 92395CE68603E6022E53A50E03A3EE7546097BB15836C68EA96CA4676A9FA4F9 3988A2FA3AA798510091840F27BEF2A27F7BFF70FF3107EB0865BCF5629BAE44 9308B9F719C5A52B93D42BFB65B5E73B52894AE70C7F1CC1CF6E98EB6A5781C7 3E2669F8F4704B5340EFB5C89C0F0325A83B165B55376622229836190E3BC11F B6461E0366FDDF521FFF2799AD97CB68D5011A8B5F40540035C77B6E0F04ECAD FA3C3059842CFDC0B2CD588037B941BD2E1A9024C04B41CAC0943D359F872A90 89C52096BE7BB70CEDA1343D0384737B035F9D3F3FC2AF4A1740E625124E4D8D 9F893B767E10FA82FDF96B95685B5150ED6277EB5AF8A1CA1FEBE2D0D8FB2BCC 6855A7CB20869FD17F8944C6A9678E5D369D186C5C7C31110925D7573A17B45E 01338FD1AB3F36DF5FD7E365972FE10375389621F155F634030B7E9A9EDB7C9F B819D54156159A091173F7CB3EA78537ACAB1ED74145C6138E831BB9F797276A 8A46A4BFCB85A5A1311D7962BB01910F977E35709D30ABB5EC47F48C70459F45 ACD80043D75634A3C0D66AE64ABE3D9945EDDF2DE8EFB49787DBDE16552BE3CC 8FE485651B985D30AC9D448A63689F7991BCC0C9E26AEC224C2DC068499C47B5 336D299EE34216060901E61B09A6BA97FB434D8ED7ECC52251BBA3F88C6E36FD 4EE90682498C204FADB083E3BB37AA5EC18C7BF91CF5D70E16CC7EAA9B7F9240 D271C1B9787991BC8E2EDCCDC1562D9EA71892D84CDE3A5DB9F36CB09ADFE305 7DCCC6A936D14A88868FCF997367D2F17CD6220409A744A8148DB818AF2E7E52 A167107A041AAB9BC46EF60D3BD0B467F2FA6AC85DAD7ADBC21936FE05C64FEB 99B4AA5CC23BEA3701BEFB6D9911E57DEE92896492E19A3847948FB129DB0DB9 B65F9DA41763527C6973A62732ED08E0313C2F1A4A974D0E416F10CCDB8299AC 253AE426DC5634ECBDB0A77D0EF6D0555C83B24608DA741EE42540254BCE71DB 1D6D0DCEF73D8E4F3EF02699E9A06CFBAEAEA953A595BCAD4146A9C1AE98CA1C E28015423159C69F577295D54F7F44BD5D99009C7C7192D194776491E844888A 830892AB9E8C0C31DF73FB236D8F650DF30B7F8A39E1FE5420A827D08C9819D1 E058E40C4955ECCDA45A03969BBCB37891FDB3352B3E6398F9DEDDA9FEF5C0D2 FA1BC553833741AEAB32EC9F1BC5B95B187F1055318946322C2D6210D3AAC7A1 DBB43B8C29CD50999BB0BCA23D9AE49207EFC01A068CD1AC8A58B0D50C489B13 15E71DCDE98874E71C5DDA92DEFEB017D4E62448E22A58D3AA003127136A2815 9758B19D04636CE2464BC05FD883259018F7526BB255DFFCBAD2A96F8E192549 014BB7DE5931B3AAF708EBB95AE9762643F04B783133A2E58B8E7BCB366C1210 69491388BD59E1A07955B62B5E3A95A279ECF5DBBBBD62C72EBBEB9CA3775904 8CCC278B2F13378E649297F4716B005DE62452228BCE10E002381D53DA9FC91A 61017EDC83A62F534BA7D8EE560346347B43A54317103FDA0E9E9BED728DB73C EBBAD0EC6649967FD734EBD143C63E6DA51F433739300FFA57FE951945C532BE C4AE9DF96147B8787D25213893C00531412E3127284C7733C30F61D186F3BBF8 251B41D38C23DFE2290CBCB598DA8DC528749C7B2439014D2E26CEF79FA1C576 C299D9C9DBD6899DA199FA4B2D613DE0D1ED2AFDEA3F7DECFA887F23F160827F CBA3A8BD7A908A9F6DD06F4657D5447759AB04954A59D9F6299869A331AA5B41 BF5AAD91C22AA1DA08ADF4B2D50F0A1DAE0C120BAEED9595D4011116E1E93F21 4735DF00803F8D02B3FCD79F135EB3B83956FB26037F7651D6C5F060E59C273C 5254D674783F48C13699CF47EECE215676C20AC6DDA7348BC9B344972A4E4EBF DAFDFDC3CCD39009A1534A0183A64B6993DDB14983FCB4B01A6D312D8E32C1D2 CD9D367959798D4C58D1C4AC49012AFB8F4E40CCA76A178C578917DB8FD7E568 E7B15558458FA48ADF6D0C740186A4814CB971E0DE5F612242D8B555B6EA5DFD EC46116F396C54B3C546A9CF5E29A5E86B3728C09EDAF911B4786BF3F801B321 64B21BDFE27745EDC6B175EEF9C6B51C270A75673EA4C4E55B71D8F866B18689 79D560B0FE7A6224A1552FC49B1337CDE30A039916F9E32721489DF5FBD59D13 D9D972369C1C18EDB5FF37544828C06DABFD5A3993A1CC420E7602B4713D1E67 954670ED4BF8B3AAFD8C81AC0484F0C092DCAD343EC836DA51DD54EC92D04591 C6EDC19960B65D374A81807D85DBA48AD150AF2F8F27C02F1ECE7F5D5D61C102 48D5E7EA949660807EA2CD4AE096B127CD275E88765EABEEAA9CD750867C8A7F B87B6D7250AF9C88EA825D74B27737E108E75AC3ABB4AB256D38D727A8873888 F264F415A5A83C222B8D7B51A7CBC9DCB586F72142F4B894129438875DB17A2F 4563A722954643637857A329BCB56A0793DBB2828D3E257F9AECA9DE9817C65B C87D0116AC0ED7EC78DF6F751A8F314D540B63179DA30E332BBD2CF81F0BB2DF 0F6164CD63114E7D48CFD76F7E61A66B09AC173F0F0E8E9BA2E67ED1EA25C7A4 05B777D518C267B56B04D0B211F546DBC30D337D7D1C55EF6351CB7E2F17A6A1 CA73170D23236E362EB3B8076D95155295D3EB84A6B6F935DCFD3C8933CB4382 D4CADE6AA60374370406C68DB99F6356A2DD75158FE25BD8D8AD33D1A9E2A8FB 8CD2665079D32097E3F3FF3CF86C02CA2F9E7B9FF80C07969E471859CC6C8D32 94D4F26EBE6E1FFF42C79D91834BA234C80CEC744F0529B4F04CD466554BA648 DB12563BE59B5AE320D434025456E7FA193238B26A7DC604688DE8978F8859C1 35BAA6FC832434C2E93B9DD1677D305D2CC3DAC76B2FE0747E811EB23D5BAE9F 59E09CAB2112FC8D4DA91DFE36BD26D284A60C4FAFD58BB1F4B06EB1A784C319 5A23EFA3827C7D75C76659B1D3B729DCE0903244C1DB99B28F6F99C71762EA21 26C84A59F6F53B75A30C78A45C375B0853B441833BB55455F51FA9D4B0E81BE2 03CBE7A02075514F95CBFAE9F36B7300CF1AEDF1E495EDBA1827112D6DA31B40 0220EB0705B773CD7B9A5CE21419A718A6F7DBCF806E7F4E2DEEC1618C39406E F190326C0021646C184F282F1642BE1286106E3D5FF27C6033BCB60E82B64DD7 A3820E2D9BD3D01564AE2D88586DC9DA2F5BDBD5220DC122A3422298C7CADA4D D2F1058B0B8A0511BC7922759E3141DFB2266C314D52CAAC0CF37749E4ECD05F D540E91282581B2ADFBC547F22C1CFB415FB52DEC27638A75D78364C6DF297E8 2640965F42520A5140E6E68DB6554C8BEAC5EF1135EC32F614A20156DC3C7737 FE8E2C4D00CA92D6B8C780E7BA5960C63552DCAE8F8E44082F3002935A61ED0A 0853F46F64150C86124AF10435D510080C996F511D71FC0C3DA8D0F8F81042B6 2CFAD3F063B0B56769C28C8EFCC87D19C099089CD5C44BC6D1DD47A7E500F940 2C62DC41FD4F82B122518FD100E68DA4FE5915EBCF54310324A25C6364CA43D1 A7F1FFEA417A55A9A367248E2B06E9D98071F6429600B0B95FC9E11A6A87C17E 6FC32A93D4B73D96E7AD40A17628706DDAB9CE2113C25B5F1DB619494A431801 A6CB1A1632380C0194D01A8275A361052DF18347BC8476A8737CD8F56B439FF3 58C2DA7BC6D62AC002260F0E8E751286AA7592ED67527589A94981DB453AB054 EFA8A850D9AA920C449AEA975D3B4F022D36C27DC3873ABC37C25EC824808E7E 0207E81A28B9029410FFA2E5D347779C2051AF43CD006A1E49291E2819411BFC 26C6546FFB36FB6A5267C2A4B182B6373A3F67EFC52A5D2FA400ECE1391D601D 562367DD31F6F7050ED1759776C35DDDD08DCB4ADE6EF66D15E80C3005660641 15A74E917FA1AF79AADEC2485D06625BFBAA3593085055832B015FCA6EB41EAE 93420F13AE4A1D581832F63291F27E6A447994ED74A3187C1937F9702C5D60D5 540D2BDBFA4F924FCB069FE94C34E281A9290BBFF6E603FA7A39A39D893E84B3 56CD5CFC470A6ECA4ACB0AA5ADB9DD95BAB691BB29CF28CE903A30831B501CE0 4ACE094945B1EB5A7ECA78AC3C360779621914B9E8CECE6301D0EAC5189DFCF3 DD261DDBE39E0C9012534D4E34F6781D85E1B08A0F537BB763E7AC994447618E ED07544D16E5D893E2CA9AF1F2D7BBB4FF835F63710D1911F4AFA8A9D314448F 4CEA9D8D1C9CB7D81CB2D54BC813E3F704563BF379FC8B71BA3C46F497D5CBA0 FE0DA2E9847FA4056B3C9732946A53BD35634DAA4B2FF6634881C16C856EF81F 617032CE0A1566F92B8419167F86F0CE2208308FDA1FF8CFF22CEAE9BFBE9336 5ECD78FBA21446B9BA5EA67A7F2D0E5D26E02A5085503A910FA9CA0A876B4B54 194F5F2FF754FB2F661CB3FA017FED9DE1B0BF860769D63C702686F3FE936DD6 E236733404C3C2EF3EA1670E006D3F008E142727F7755512DFD55ADD7B449021 B2185F270EAD170AADBFEC0C7A506E6C8BA11466F8BCEF99949C8608BC742DF4 972B1758D1786AD39AE1DB2D5C2F1BE7CF93033812BC265E0B85A866A9A90FF1 76F837D1CF631C19A130F9E7AF635BB22073034BB62A3346A5AB860879B72ABC FFC64BC29006869B37A25CAEF4BB8255F0DF291DBB0D19B55DB7854D5A1A36A2 E52EA6888193FE8324857969098C2A6574299D43E929B8B9B471DF10AD4D82DF D53BCB27B082099D41C6D95959903D199E32323E458F5577F4947829289954DD 66D78FDDEB97FABB29E8C57D5708922EE96E0DA7841BDEA801108AC594EF2875 671DAADA158DCE4D13C5BDF048ABE0C03AA356745BA0B2475C9F7AC8C3675A67 3E6E65F29FBACE4213D6C6BDD475D986DD50C49BDAD11B9E713B504047432E5A B0635EF51EAFCCF66AA5C623EAEF91CDB09A1BEF74232D0524D2A559407D2282 AF9422863EC61D62E9632DCF7C786854283AC68C7899AD6D2BD603DF75786A12 B8CB916AD5187F5B7F04B10FC6CC96C39FA545653AFC4AF0811BB3BE0AF3958C 871DC5C63CFBE8C2CF7111D064BDB779760DD403C0D66909C44574EA7A1E22AA A8F03AE093C58930C21D861ABCAF6EEFB96468D24527B18B7E13205028850C1F 42636CC7A9B93FF3F1114ACBA56828AD71573B5414BF16D7C215FF6C1CD0346F 7EE70C05E383C02F8B35FFDE568D513A65CF1CED00C89262FC0FC2CE07FA7EA5 2EBD3E52A7E4172CA1FFBFCD33127F7C11FBB39391018B4BB3512C3235D00D78 949C38300C1E9E8D428C91DE7147E80001D71D20BF7DA8874B81B421FABE498F B570453080CAF868ACFCA4B3D68C551A58B614D90FA8C63D77E6241D248B4726 934AFCC8FACD268A9E6407DFA914C98013128AB9ABB707B8D20FF4D3EA73A84C 68B0362E3AE9EA4C9A6A49D3AEECCEB9CE4A4A497581E28902E12599D0715189 71524549E3C7DAA53B3C1C808E64403E0894616B07A991C7211770FAA3103BFB 1C53E14B375A5CC8D76EBEFA7E0871AB6B2C768DC92DFC67E6BA5B9B84E58B0B 5124F3CFAA024F1308C1331E75F4D37C7B6C3B4017B53BF7092662BF0DAD8F96 1673AFDE77372C0302A3C889329E274FCE32B949846936EC0C73AF2901C33484 21184E7CADB580B75272997434E001E2B3057ADA5038F5038CD700AAC85888DC 059DBE815599C135806BB8A8BA0AFF0AFF33D29D2019A214C777A07E0118E5DB 6E1DBCE153EDE048DD22ACAF0B5C4785190D8373A0C3966E20BAEBA23D0767F9 E129487081D38056A80C0850085305EB870D392A33F52E9F5D07E653B2253110 B0136FBF5AA8C0F0A67E58FCDE0D548657F0D70E4A1F669326011F81D30519EE EEF822E7E2267E139C4371DBF46DB60269FDED39E7585419D91F147DCB2403CB 440F484C2E7648AC2214B3D36C9A28D58441D04802FB5A624A74E4021AD044EF EE3C5795F9822AE2E68E06770290AE8E15B7C4A63D255C93860A260EB8A7C8FE 1FF71A3A0A5BFCFBB21A17E01CA590DC3C861817DF3CDB4E58DA192F9973E077 1628E51786BC6935AE8222734490DE6603DDFDD65CBC86194D26B0E6158366DA 4D87D9B4F54081F9AC92EFC1494640BC51BF5B34EB50AA32DBA7711E08DFF43F 1B8496D6E634B2A6B624A12892F8721E884BBE2428ABCD6D5131AE2F4FA87CA7 8E04B2870235775263FCFEB44B34A8CC25CEABBE61D449A6CA0E1576301054BD 7C62467AB40A5EB17D1C6CC828A652CCE0E8F74D27843558CF61D9F2FB81E0ED 0ADF8A13A83939AD1EA590C55D3E9A7B50A9CDDEABC02A4ABFAF2A392FD09BB4 D45E00DEAF920B42571A14223FFDE17739A4AFA79889492EEE41D1029B1B53FD 12164A5F84A87D85170E7812BEBAA0F89A7314D65ADF2897B4A739081218AED7 F14E140C767D3FB8FB43EB4C523ACE42FBD2F95FCDDCD69515D756179A729C41 AAE84E99C1DB82AC245BEF5DDE1A6C973DA615F21F7C7EE892A2EA4FAFB0AD38 EE6F15D2C706CDEF5248F048D38B4D761B6DFF28F4C6F3B6B2FD6D3490D9D689 0D7B09591E9C61931FA00AE7E79CB21325EFE5610F225D58E8C4BBBCD26A2B10 3C2D967539E4A1A936F0D5011E66D654AA5BC6A16564B913D2F2542191233D98 A13CE7DE8334B23B4397085FD1FC07F0CF057153F1CD93F98DD4F4BAA18DFEFF 1B2A990280DFF2F4C4C05FC8A4BABCC3E3D57881D935054C4228E825C4C861D2 01B08566902158C9CABCC98AC8426FEC458D2C2A41E15B2FECF1855DF018CF5A D4B9C79D65565767780BDAF22B48DFCAA7C6B5765B1A1373927F5A7FA2FEA3E2 06FA6FDE86BF844131DFD9F5F2F37EF5E6C06ABC39D20A3565A45AB958E66606 528A0F1A31BB9A6DC7D75AB85860811B30891C278FF4B3A43C22D6BBC8666447 0EA477170AF6B7FFA2011EF2677D696C531F4522929D8632C4BD13C9909FFD12 78F9C5B82C4CBA3E604380C5413AB8F08CC19DF5E5344309375826A57A7899E0 CCCEA106B193E3923BC866709182D57DF8F18486A071080293C6541001F8CBB1 BDB0A2059748C17DD67A8930D1306C285DF68ABB9F0FC0038A6900350C7F637B B9C5F732EEF7C9619F63918C2312FE25FE04212A4242F81E6A9330D2DEB019A2 827B26F7E42D384EE2EFA79E954F43EAFE41DBB9017249628CEE85325E7A024A D7EF256E32EA083DDDCB135A35E0C21CEBD811543296F07112F44EEC06D0CF6F EC033B9094CC0FC32A47756CB325B5A1820928D7C9EB6B435A80A8B5BA2BF342 45795C1BE60D32513597E03E9D28BA5DF6286D829D9F422BA5CD2314041171E7 FE546DDB3F253E469326883DFB3EB90D8C68E6E57D8561BF701ABED6540688C1 34AE4F7663BD19D0157C8B0FB10EF772AFC961900C77AD601F43CC8D84AC2509 5E1DC8794B9DE5779B584154E9098AF3781817C7B4F60BEA483D3FDFEB5DDDD1 9C600619E8BC5A84E31BB67D88540DC9E1295B615F37F139E6A2B2B1F08859C4 ADC8DB9E2D31B5DCA39F3E7B6B5D17FFB788350C4502ECC88D907ED5C51066E0 00EA61982783B167D4D2FCDFFBB7D4787031134FC31E5AB0195C0096A99A2473 914D2220298E2E236D2CFF4563BF70FF4E008A547B83DCCA53BDBCE421020766 C1A7FB9ADB535E7E1910B6264368EFDB6931228EDD71AC6F9A861B6C2218B0B8 E999F2DC2A31172BA89C4FA71634BC6F9E6E5CCE5498E74F7BB88AC1DCF1F3C4 BF81982068E381EF709937DA801F0C8ADC12033C70BE347BD82ED134F2D484BE 643D13CFD26E433867DFCF7E434070B586ABE390F93D551051DC4E0552467AE6 62C188C9A0FC94F583055A85D85050F7473367626091459BAB2A6C9670696890 1261457288BE442226EC6A1CB96E4FDDC0F31F9259E1BEC2CD25A8F0C96F419B F53537BD4D92D60C0C86E075C1491D3CE3DF1B68892300415761C1B9FEE4CE2C C5CB0292ED8E4D55474223C9375ECE65A5E856C383B5B8AF448862CCAD0E765E AE80C021EAB89F816AED00974846363D641A202606397768230E1BE08C6B19CD C7BCF31805A3FBC58DC92492E645B3005605ABAB6F4420AAA1C1AE27D4E09D1A B9E44FD56D30A134DC2DDCAE70D4C1A0579B3E7CD1F891DABF902CE5D56AEC15 964654A9748995818E22C4072C29BD06A67C4D7F9DA1E131D9921B4EA054A89B 02C91734398AD677F0FEC32C12F8E77EB6F3D411E545BF8AACD1607AC7573477 7656CBF4AEAC7DF25ECA6D7D09A7040367FF966652924760ADF728055BAD10F8 77BE149125CF02B51BA2BBBC2F10EF794CA37647BAD52ABACA1245D54A07A0F4 7405F303B59A09944FC3EA35B6D297D934C7F01C6A47AAE749B614FFDE619DCF 6D681E9CE5C93D214BE4C3CFBB31179F6EE78E99D0B77C445FA4B24FBABEB7E9 B3BA5288722ACA295A1B2858C19823E924FDEA5D94AA66BA202DDAF2E47B33A3 126157B52BB9A7D79F014A5283A6C25883B0EA29C7CA0C008B6282B4D35D8E6E A3F7A44EC889B51DFC1D24DFAE8D2B69AEF98CB24ACE2C806A07704D20BC6EA0 C260C426790111A5E42AB4655B48956E3EAD5D1F8419AA231B18B2A55752B9A1 6545A27E0FFAD75E1C0A6FDE322717BE2E507F9D7BEC87E0802E36C266C84A10 DD3633AF2D686FED8E5459D1FF47B703596304768533719AABC3CE88ED009190 67AB6A90BAC19D795DEC9EF0E21C75A7BA74DE27BCDB3230205D9B79211FC051 1888392EECA4EA46067C2BFC2A865DA5B105ACBAE52084076C3BC92EE393D4BD 8DEE84B789A51FEDC77364FE50ADB32CFB94F4DD40B0E8DC830511BACBC5297A B4BF5BB64A9CC73D9E6D2902908EC6E2061560304FEA147F70D97E82360AC19B 0EAF4C4352E99CEA30A9D57E498E5FDD6F41226B842E333D26A48A74780CE673 93B949D411A8E5FB5DFB5145320267FEEB5CD1D26BB6D3C0621903EB823AFBF6 575D6465B3E2394C1E831699F89A6BA0014FEAC91DBDAFBE5A609E90D0B1CE03 CDB5B6DE1FAFB5DC09FCD34F5D33C85A28D54275D3BC62DE78827A5ECF2C24DC E6C4F0D8BCD63AD829C2ED8D0AA33A62D5DF7BEB029FA55E906DFE13ED9175D5 C9919AA6FAD051A2AF8746C03EDEE19BCE218FF4E27AF536988C7DCFA3DAE535 7901F9CBE646B90CC45A3B35BEA34EE842087641F0574B45529DACB0E092CE24 EB3A551BD67D96D1A0378D4B3B8F35219B24C8D13D23524C6EC1CAF79E3F124F 7E51D901EE474FC890B29222A0AB4593EF891555A810F9456798901BA2E473C6 43057E551D16F7447B661BCFDD8090D9A46878EC081967E3A1DAE2ADB328009A CE2F0741F11C49F4F309EED094E381DA3F07C008C3D3AFCAF1831B0001CBECAE 395E7FE3867B23B6EBE286C4B57FB642ABB4B3D170C275B959EBB54104FD9DD9 C138C90987FBE9E38C8C4EF23C79220239A13692A2A9261B60DD02818B3694C9 5D41A81B28779938C70F5D5B11038F1A1AE6A8BE949E97E56FC734B249FC3B6E 01637EF0AEBD88E04929946CB77664223C839FFFFE784887889BA45F5105F992 580C191C6DE3773095445A4359EE6935EF7C9E2093A8FA87D026C1A876990820 A4E7BD189CF2DE62276AD5417511720B0FA175410F5113E078195D62DA4B06FC A103861EB662321D47B6D7C1400C3EE6C1ABCD7A2AAEF05BC899D80494E2B749 657F39114B6D1137637AB7D9A084AAB198ADF78C12992920146D8C242B276639 1F8901011CC441ED11747899473FF8B6BF3D46942463D71D9E46E10848CA9B15 B5198C5AB4B39511DA3617168C4D3B3B37FF10A27C366CB79FB24F35AE28F1E3 8571A05B920F8DAA7D19036D33A041B6D52004E364CFA0039CC8CD6D378E5DE9 C24AD945E179408D551663077C7A89748EE7D6E0D9BC7ED017561B4A1738ABD3 C3F214B3D33021A8110D95F255F94BDBA90F486668BBE147CF5387430C89D107 B6D37DCB170C04A1A87B3C02CC9435B7BCB5F82E9147280FA69DD5A1786C068D B58AA4ABB75171746FF29E0933BC3E0505E1A28A978B4194E1C67790FD2ACB7B F545203D02979D352CA07170F0C02A9CE752BDCF0F3646D039E8BC55A117CFB7 9DD3F1A79F1874F67AC5B99781417A5F886FF4D04A39D5B9C752DF41B0624DFB 20CE55B60D429EA0166AE4BE8FDC7951729F045FD03FFF1CDB806D913E994D72 3F26EF1296A6225B9B8BBB17EBF20A379D147D9BD793A7899F05E3E7BB6F8D31 37510C90E39D533FBF30A9453754A3901024A9564A1CCF8A9C29E7520332478E FDAF56967970FEA1D5043FF7E6A277FF5F32FB3F9A0986874C85EC21C497766F 56CEF61A38DE12FF396DBD582930BA8D9300583EE3E49CF3D52084A1DBA2A3BF 6584B10A73E0D1AA9AD5CD537A693F7DB1CD36B90CDF167A5F7A45BF2130AE12 91E9BF611F3FEC0ED09CF100AA9FBB33C454AD3C18A415D77093F0C5057C3323 29DC4C48072515C5D76277DDD9180A0FCB785E0CF98FE4822B93AB33E5B66B12 3A7B48898076671B131188F3B48B756C454032D2AD75BCF93F33D98A2750E2C0 328FF11F356BFE79E051B88141F0E6D2EAFAA8B70A67B4BB09FCE66CD59F7CAF 573505796A505627B60F2BF31CB5366B161F26643EA9342EE65E4EEC2F8C73E6 D82D51FB384C4ECA83F90DB1138666C09103003E490B45AA52D6AFA15F4367CC 6D8053935D5D52B2864277D7F656362099CE72EDAC46329F54DE9521928AAF29 5B6E8BBA449E2A48063CF8F5FA93D1A809764DE212BFBCCC89442EF930B11380 79429CE80F19A303E4F0A633C8B963EAAE35EFE7D15557E4831A9486C33931F9 22F6CF6C3A37A0101DB25985C3A6B2530C5322533D3DD9301A01E560E07D26FF 83CAC2BBF86E555560B70513420BA33066670F1D1FFF9EC80D2C2139EDE33CBA 60E9338D2ACE14F38835BD5F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.0: CMMI10 003.002 %%Title: CMMI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup /UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI10 def /FontBBox {-32 -250 1048 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C 7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B 0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE 88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F 347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA 29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C 9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B 75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E 4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC 74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D 543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F 7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE 1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C 4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F 55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD 38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D 22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB 44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A 42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E 0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE 66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E 1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B 897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F 87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE 178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA 7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD 6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC 98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B 9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE 44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA 633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D 6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD 375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B 9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF 8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F 00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF 7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D 4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA 92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E 86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC 35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD 155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F 226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B 8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B 919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7 88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D 2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66 B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22 CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744 3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8 404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84 262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953 084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341 E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI12 %!PS-AdobeFont-1.0: CMMI12 003.002 %%Title: CMMI12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup /UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI12 def /FontBBox {-31 -250 1026 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI12.) readonly def /FullName (CMMI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE 882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3 2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A 7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541 0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69 987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7 609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC 182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A 1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D 3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6 D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200 761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24 8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F 68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D 10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4 262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6 922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16 56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26 32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA 7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460 7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A 46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD 754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF 88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A 7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760 8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0 BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25 8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300 135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812 1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86 07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39 14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D 7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D 2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D 639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3 D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F 90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948 10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E 1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E 8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9 1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33 9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875 EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3 60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8 FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D 203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608 FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09 DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F 2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D 244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077 31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B 724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8 F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7 D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907 CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF 01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA 287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605 8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9 9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1 6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5 7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C 192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4 A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9 50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67 A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912 3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6 5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96 8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE 084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7 92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2 AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27 97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF 92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5 7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824 5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199 13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76 6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1 5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5 6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83 F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4 7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A 9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817 E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962 AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8 0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003 1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31 7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E 38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8 5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F 3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85 15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674 6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6 CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322 EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82 A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D 806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4 461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1 4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361 9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C 172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6 69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690 356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0 E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78 7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A 31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7 98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30 C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61 AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208 E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900 76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40 8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573 CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7 761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A 2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138 89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60 D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485 D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8 B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39 AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3 866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD 207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73 756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7 60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A 1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4 A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048 C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3 03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321 1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B 97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8 4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF 94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97 201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7 9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000 CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7 29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939 4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED 66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31 14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53 84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74 6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12 49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C 224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5 5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4 A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498 1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D 5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6 40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D 2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE 710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45 FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8 FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736 5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.0: CMSY10 003.002 %%Title: CMSY10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSY10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup /UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSY10 def /FontBBox {-29 -960 1116 775 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 13 /circlecopyrt put dup 15 /bullet put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A 11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F 10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D 7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B 491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D 9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E 0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD 5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B 5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB 54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD 2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C 16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F 483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA 051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B 8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB 0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD 8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F 153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A 98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B 888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D 052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F 07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D 3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F 849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE 84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA 2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD 2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E 4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB 8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C 4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF 035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B 0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E 2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B 60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E 94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA 343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE 894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F 8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC 4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0 657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808 AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2 3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E 7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0 2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25 CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D 9E592159338E1293F449380E13C21AE42E6861DBBF4AE99A7469F871A3940835 FFBE7F316FA9BB834EAB18625F0960352C75105A92F175850289B1AE177E0D52 E43635C41B85F75CFB706BC92B0BF90367E180A141703EF69FD064C0FA34618A 5D9684895C3EF50F4AAF6E0F78D483280942D3F9C1A18FE7FA657928477AAC74 ABCC21B622EBE2C0AD9EDEDAEDAA9A6E3D96E01CC837668FAC44FB52307CE618 BE8399078154C80E7DB52F0CD16717DC59203497E89D69B390E9966C19D36188 E47270673493F7DFC14C72B5B4737AD52783C573B5F12D50E9D54AD65C2C310C 72BAF2A8ADAD81ACF0C49DF971775F2DB7404FC9AD6B30C947A348B28B0C042F CD9756359BA6942D643D8B7BC54E6047DFE25215CE5EE74CC3076975A3F324DF E8D80F42AE4A1C00B155FE56A61CCC09924E4D7DA7EE07987C2EF9E91AED55CF 524C54E553030B5F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT12 %!PS-AdobeFont-1.0: CMTT12 003.002 %%Title: CMTT12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup /UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT12 def /FontBBox {-1 -234 524 695 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT12.) readonly def /FullName (CMTT12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 45 /hyphen put dup 46 /period put dup 49 /one put dup 64 /at put dup 97 /a put dup 98 /b put dup 101 /e put dup 103 /g put dup 104 /h put dup 105 /i put dup 108 /l put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B 5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D 4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FBE3 FC1F39A39F5613D50934419B95A4A2FE1B6C18912CECB86726926F6B77B5C3AF F38F85F974A2D2145BE010EBB4A390B842BC222AD4A0B7FDD882668C04C51F19 13FF91E7CFA0A0F4E99A1944B272E0291BBF3F9ADFCF3F625B87377AFEBD9F11 6385726E908BAB7D1357504048C0F5B26251A1FA52F08BAE1D64B9FC32A684AE 896F3DD0AAE9624050D4DFDA25E581FB2630E8840AC5322D38B92F3E77B55CE2 91ACB8321BE53A2C7D274D63CF0C68AC833BAF4B22B26EFC197D4A893A5AE492 660D995DA9294C16BED1113CBCC18AFCB5968175EE2FB374B1AA261F22CD75F6 6E7295A254FEFC41A66EA6833A6A4EE0E75EF6B6FAF292DC5D2AFB61D5203DB5 4BAEAABAF39E9F98B45F22F2E37F337A7BA412807A31B4A5A4E1627BAA964B77 6AA397D368985045244ACE969799A9489CCA8FEFCF2EAF262ECE08BBD9573C79 2785F1004C34F4D728E9E820B4133FD5F823B067F6686C82BCD35123E4831E38 CDD5ADB098BC3F1B4162F45B11ED39CFB65DB1A10646D0B9FB5BBE475031B2AC 9E0769CB063B82D1232E24CAA86D9D5DBB9737B1E69608106D34CFEE3FFB4213 5DBFB88BF9012F430D55CEFEDD5CC1D28B8EFE3C133F1A0E241CD2D0D58B0ADB AB93AA7B1E312CCCD8E06297A5F698A55D9B7E19979C06675953B4E2B7FE860B 60B8A3DF7F12B1FE54E0D9BA9EFB53BA76FFBE54E140B94FF41FBD7937FBE7B4 1793C8CF35C92915A6F47F6513B74F9F6C1F6C44D2D82B80C2262C7F86CC6C45 426AD4602CBA422E55FCCC58DC17CF3C2F68E393BFA04605EA06279D2B96B458 394495413B5C9864F865CCBCB290B4A064C74FE5367FF5A397AFFD3C1CA41B36 B80204B315496B84452E91C2FA59A36836E01419147C5174EB4A58DA454F5097 BA64EE9B8F88B56DD1DA088A8AB19259083F064F7394F15A135B36FBADB0EC07 8B9040FD797CD026EC077DDEB665A7BF575C3FE620D5D4AE74BE2B0D7CD5D507 6C0859246278D92425CCF174C2E80A6998FE14371FFA63D81ADB8373950CB08C 92CF8F65B73B97725BB875F3E66F0BF3669F875186970E2DD1A8B28D8CC1BBF0 E3530AC0D2BE7719C48277382E624EF7D90BA5F927EB674E1D6FC4382C32C808 2DA4901E93B1CFF340652C44396BC4C76BE4B6512D2B56FA1420636B3F714891 8C7A5543A4B0101C8161C237A842482831ABD0593ECE98F42D80FE070E60B6B3 4E93C4498239324AC4E3FA4406A035C7BE26B0086BED3AFCDD331F7D1B7D02FD 1AD03EFF049A2F90B85F30901014118EAB318DF795CDB289770D51C9261994FB BC65DEB07C434D6E332373BD0DADD7A06781218DE5E32B7CB002DE4337251413 48416F8489C37D39F61F639AC54F6E2D0A5B7949B29B3A8754FEE5E1A8A4019B 30ACBB895C90AD7D94D70F48CDB3AE3FE60488E867A6CE5521F6C123D389B6B3 540FE72436B7BD5826B731CC6B5A5C397F3347F4979132C67C2695EBCD7FFFFE 98C943FA7AC98AB500866BD7906F62D1E9FCB6D3C28D10A9CE61CE4A023E79AF EECAD72DD7B61802329D255563129DE5DE81F3E6D6D47E10893AC5929FCE2357 EA2A84635A3FA92DD77C0A4B8C62CE26D5FAB880E7B974F7C843EA8BAFAFA4BE 5FD97AF9602CF1FABF41DF555DCD8C23DDF0ACFE58DC92D83F13775CFD453AB8 AB3C4A9180ED6851246C4E58B5187F82CB98FB92FE17720679207130C8EBE243 66F44050BFB10DB7A7B151EA5F90C2A5889599BAB1A6D1AE4C023FCB0BF495CD F2C3CD3FBBFF8DF3AD63F5716194F5E382FBF2BA32567D10CB75433DA871E13D 94BB94F4E6F58658C04C764DF512229AACFD4985EA952AD56E0D592A9D408C64 BD22046AE570216940CA422DB6BBB375A653A5B1D3BD5C0A6A4EB9438F33F9E7 9B7AE1EC2D56DDA6E84127A4A47E9466A5CF70AE376E9B92B1F0528FAAA73AFA 268085C35C818ADBE05B241FBEE328A83EC622F1FC694D3EFD539C76A4807E07 A4D2F49437B9DC18E21D621CFD31432659FFBA4DC702B91D4205030D89449381 B7964BD73E96C4CCADC84680216482CC4578781B57028C023D63849F705E54C7 2D652A48565B5B6AFAEC1174B331EC00EB7C528AE30297EAD23237E0DA25D83D 2254B13EE297478C5C9D7013AAD70416035EB9D9D7116609CAF1C5523CA28512 D721627DF21F83487989F6CA9457D25181A0BFC6F072BCBB202135EE8612B14B BF88CBAED2700C4D067B5AAFB33AE61E106091EFE34B61C58F938BA3705F91E6 500258C054591BE8DAA18D55BB68FB131AFD7E55E7E1FF9234C08768E95D258A 700B8890BB4DF7B805684DE78230F0AF49C0A2222948D4F6E087B6CF1DF0FF47 0ED967F5C3F417E0AFD4AF3547BCF8624302DF187512A35E569626ABE3FFDF7D 938B0D47BE9301EE955F6344F3D597CD33CCAAE12ECE2A1EA661EAAAC990823A A34B5E982469151CF1737FC478879B75A4F1A4C4D94DB447EA53AE052B981ADA 3772B6536ADCA2AC1FEE3FAF27112714BEC13C6FA033BCEB5F8CAEAEBAD0B8E7 2F4513F724BD2C5A1A22ADA7C90361C06B0CF1C92243DCF099BF786CE67F0C6C 7179B2E1572F7359A7AE6327C50AE1B55B2F5B035ED799A0C1283408CBCE62B4 4151E03692E10D5E889BA8D0CA0489E8EFFF65BEE997D47FDDA5858F064BA96E 4709EEFCF60FCCE763A5E97D264200A4BF05AF02E0A932233FF14A1DB2EEAAA2 D5C92243B284E40938265745D66F9776360E8BD59C1F5C18622B52FC9F499D03 5C98EE8FEB34A5DBEC3F796C0B0C30B2B97EA5A2F7305005497F0424FE3EA4E0 D53B54A745A91337BB054A350E481838E2018D8D129A07757FF8868E47A565AC F1A13CCC73804B3F15B0E4B85AC88CA29441AA98237C6C38CB011D3DF2FCEA1E B1E66D0F99073BCCC56E7CC897A9EC0F18D7766CA957298E54B1D1300E2E084F E7016C6F59098D1520DD64EBB7CDDC67B3584F56E65E3217C4345E0CAE956E37 95ABEDAEF1176AF7BFF82419D5677FD3AF166A93C39378ABC473794F7EE0328B 766E975B33D433D0CF4BF557FCF7947F0383DEEE280FE89CEF22CD97B81D3885 43F0D2622025E2A75D9267EDF1CBB550099040BC567BA08CF196884658C1911F E770576F4593A178DFFED391C24CF8E2D7075F34AD7A523F3395699C638BA120 7B283483A0FDF760050D652A81A13570822B40CDD16BEED9A91966E2C5C28AB0 7763CEA5E2D431C847D39CE52DC7E260CD7519AFF39BAEDA081AFC8DBED06E98 29D9BBF552758E86DECB8C194EB6ADD7DDAFE5D58C57BA5F503585E7C24127B1 105A6C97068483D77D25955EE3E0993E0F9DAE5298A2431EBAD28AE8E45C09FB D89A396F83802C07E7F9BDBCED7D8360E704FA59B179F19908A36064230B503B 3B0B7FCC2ED0455E15533771DE613F2BEC8EC308A24EFA5EE37A0169B4721BF4 881C0632FDF2D24D32F031686CABF7B04BF0BEDA2729C249426200E6948BBFAF EB5A1F7654894571260D014E8AD2A84ABABA5806B0811EFFC3143946442BCC20 19F428A66193BBBAE1F42D665630DBF98ED5FD7BB7E5E9315B4AFC92C6539884 6873112145638C8B49AB9B69C1C375D0990976CBFF33EDC5A12282DD6DF068F9 9C911EB366090F4A8E18A742E47044C9F3CE6B3B0868E05547B291B11DB75615 3AD37193123C6B0EDE151AF8F4367A33B3E0A61027D8017006BD21FED4829C25 50A7582D055B4391ABC43BB00F1398C0CC2CC02732C2593550EB0DF5DCA08263 24D34186707037E229C0645D0088CDBFD06A1C852F1612F027DF7B6C4F2E4644 4E69CFA4FF355F7A2B4147D0063EEB414E5449CD88C0A928FF5C58F5EF48DFF0 D804D1BA5A4AF4E6415A75BD211BF564787B8BF9976EEA6872CDD75D313EF1BB 8C70B32CD81205F8ABF4EAB77729B34B20A9216B9F0083A2DBEED75D1D6D8536 D86BA6F0F8FA76AE2A6DF3BBF815666E9975A5141A0B23499A40FC94519F30AA A7E1A8B5FFBF2DF9F1E14F5ADC13F3F0617BABDDE5153CCB18CA9EA53EA4408F AE16444F3F916B1AC1F0 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.0: CMR10 003.002 %%Title: CMR10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup /UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR10 def /FontBBox {-40 -250 1009 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 33 /exclam put dup 34 /quotedblright put dup 36 /dollar put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 61 /equal put dup 63 /question put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 124 /emdash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A 2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E 3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B 03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A 8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E 94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C 8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A 64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B 07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC 1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A 5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE 0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D 38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C 0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D 4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F 3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE 15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF 7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA 4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B 3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED 49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B 8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B 5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC 17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D 364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F 7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F 26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD 8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A 65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A 5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C 9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B 72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB 3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF 2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF 9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A 2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED 6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B 7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A 8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC 41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F 4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF 9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E 61A06A43575568DC3CF3844BABF04CA767E299575EF2ECAAC7649193843D694E 6CA59318C01132C361A3E43BE637B70B9966664E12EF4707F6B100BC37778D1C F1806B1DE081D2C9B995BF1EE3842EFFBB8416161FE31633A6EDA118E563BDC1 C42F403BE8A009FC756406669E34C6A08668808E0C31A589D0720BE32F3181F9 8039645643E15D25917F38DFFD8BD08A420854DE15AF291ED675A634C151193D 29AA6E04E84A598350AF17E71973854842AFEC3EB1B58E4D4433309BF5ED9D86 32C4BD136C89169D45718A88BABE25072D8E552AA4CA3F840ECB11519B06EB44 13026DD6800BFE15E90592641FE99BCD18039598DC7B08AA89EE6792B576B29F 787176E0CE92270D872A5988E8CB83661FE8E8FD331668DDF9A87EA0FCB904E9 FC2B5F090705C9CC49A85453967C697A72F27326FCF642B945A85944A34E460C 7E173819BABE5F350CD7E792B9CAE496423F13BBD49CB9F4E39D27A26395B983 259BA11CECF2AB41FDD22698FC491906217FFC0F76FEB03DEA39BC8396874506 EFC8A06F0F7EA849168C00D81728C739ADEC153F5A13A46FD1263D937A9EA004 743883705AD534722FF109146B9E567225A16C4CD76EB07661DA821464D89187 6369A5381C669E1741F7E40D5DE218554B7A51DDC4563E0F5AE07CF0A0966ECF 940E042C3B4DB2FCD8FCE4282EB39B5A164C35432A49165860AD65A0F555FAE6 8D75B6400BC802A021411BFC4ABA5671F5BDB495EFF99DE8AEF14E78E8B6EDCD C8C1E80B548817F55A6013554AD7715A7340F0C1768E26D564F397DAEE458E60 E6850880E9E01C8D7B9A44418303A6563D84C33161045BAD96270F0C23D49233 A469A1480B694F268C275A7750E3157C34BA420C338B9DB2E608AA18D0305BBF 875D7087C2DDF908883EAD6F518231408ED09DDCAB966E1673371DCB4DC4B04B 86215140470BED1FF40FC55A94AAFFBAFD9547DFB6E7441F6F18DD0CDAAAD67F 1C3DDF4A1A7E192BFECA9058986AEAC3F88D3DB996AE492FC54574037CDE8865 4BF8FB8E7C60A284B0CDDC7A2ED1CC6EF05E054163BA55331C8F47F596B4EA6A D29F48FA8167AB4AC152B091AD4296CEC91A73ED481864AFD7C9D8F85A00E6C4 72E1589F2D647A483A51BA47CD9ACD8DD2CA4B3708C3EBA20AC324DEB563E615 5A18BC810529D06C3726B892A054C65D1233FE771549F1E7A55BF993492C3652 41F32BA17242A4167169EC84AB54891ABBAB7980B1B1CAD2C43493C10ABF5345 53E8752D615673E5ABF7D3CF2687DEB3FAAD963C890C5781E272CFA67F94EC19 C3EC4C5C017F5A2AC23DD671EAE66A013051689E887C20BBB90B79A821F5227F 9C8A17CB202849141A1F213F2D5912955DFA0D8FF1D8395DEFFF1E716739F246 66C276AAF9EF371377AC7B45386A18D452DCED16EC5AF86017252D059DFCA837 D14D41823F03E91830D6C17BEB76A16623AAC58A9FEAAA07D3BFCE05B6DCBFE1 152EF48D4F01F9F4C2221E457DB19D77CD878AD8FED8BFDB27007903D49A177A E1C1F837B105D9B64BDFD5A084820A161D75FFAC8F8EA78CC6D148F1442F1384 7661502B92469D4BC8FF30DF9234D29F453310878E2AA72F293DB0618E0A1BE7 54949F6488FB99AF0D7FA4DA1316C3C5279767142D132F62ECD52FBBC0D754AD 58FBF92629DC8866A0698E72EBE2F2C0A09F68895770EC42B469B08C7092733A 20452669523E73E7D5423DBE0776FA931871C65158C01E28758239390507C37F 337101AC139F611354123A5FBB4A0CDD161BE84AD71BE2DEA92FD943B1D0E2BB C195472D10E123CEF708FFC2D5D16596990C20A062A2A358EE110B7EEBEBF697 7DFA3351785BCCD59B4B3B349146BE9655842F51E82A44F0C6CA75B1CA5DD9F3 D3BA6F0E89A63DFEBB88C96BCC680D3C03CA447409D52B19EEAEDDC49285AE8B 7087326C4F6517C3C9B02C10D1EADC6DB9D4943E0080A6024A24C791748AA798 478EDCA0FC6B150DE7F8D50030A5A0F7EBBED6B1E29CDD745FCED01ACABDF295 91D77AB0DD370D77E5EEA4A9472D14C6ABE29431E85C642F239150FCB0FD6DE2 E74E8B47BE08F21DE99A181F16CE0CE0F1D72C4E96EDB597095038AED8CCB91F B008F4EFC07E0361F8EA96BF0A4F3E8973249AFE0478D26BB1B5C5B3F8307508 702DAEA6C2A88BFA33BE2046E61FFEAAD917E7F290E61760D5282C6BF357908E 644DF3F0BC7458C4F183F981AFB53440609E21DCDF05445629F196BF168366E3 6623A868D4872655A2BD4FB87D3C932A44B9E07EA5CCEC059F7CB48D0051F3EC 1ADDCE1B474EE33580A5EE6ABE33479FC9E0916D418090EDB58EA45CEC2AFB75 6B69E6D768EC8C82886A801A9DEF5ECD07AFB3C480144A602FAE78B968D26324 734EBFBFA159B07ED5C94355E2B3BBEFC0C5E465F9FE403CAAC6A1C29F0D5895 D51ECA2720C697D103B20F96993BB98AF649914F29527629DCEA100374B6120C DD89264B95468EF1801F71550220B035B6A8E7B9F01BD6CBB30775DC75B1594F 8217B9A85D5E041C605C3C78D25CCDA88656F64C44A839C9C15EB8D5B00DB7BA 78FB0FD1D38E0521BF734C146A7D10D12B5079AF87467FFE9FD9445DAD66A569 F3530B95CDACC4AEC5ADB5A77EEA86ED95F3811AD2A502FF553ED90BCC8A2C4B 968A7AE8D42F9B5350F7E81D09228398FCDA1106977FAA9A4370CBCC6A3B6066 DAABE9C89AFC879E17DA9D60E86735975AB42349B4E37AF180E6FA628D056602 E7EADDBF20707AEA86ED95F3811AD2DDF1A71C902662E2236641EB26C6DCEE68 DE612EC635B3413ABDC2777C4930031F36ABE7BD07A54E5B551B90E4C1C49E74 66413712A7FBBCA79D2FDABE1C7FEAA054C40C469B09385B88D9E163AD864BD8 C7A95BC217EBBF0B9BDC9A30E8C8FDBC987307740E0186759F296F25FE60AE5F 5F4F3DE80062B8D95BB3851BC1CF1BFB30FF521940D4119108FDD2D1038ADC68 C70D7175476917012FBF01163B4F13119754DAEB4C88C67D4FE859D927E0E6CE A0332DB9F6F17A639ACB871032ED406DE854C900FC91F942CE5D0AAB28D29B2D 45B4975BEFD7CDAD2FCEE66DD889E47371A677AC6F4922CC21BD95A0707D2617 08E5E6CCD078D7F9F3F61D889666F8AC7AC87A367EF9FFD4BDA2E48C7E5A10B6 E3F942D03B8DBF4AF73074469DCACB20E24A6DFD76A069C9775A00E4A1A6D411 1306326604E56F26766ABB680F60D676592306D8BC3083B06765C7D1D84B0F34 9C57342972549BA8BADE4B571230AE6DA656922D74D5E2B23186163ACA97C7DB C2269B8FE1AB9ED38E709D15DC351B7CFF110480B09786384B0E19F7F0C20B11 FDB0F4A7D9552A5ED697D69314BF898C1C28CE865AB509C6B4C0EA755BD1980C 36D3455F588556CBC4B24764D050C69D000FC26EB800D16745C5E877A24E0D9A F8B58AEC57969F5233E2AB4CF85048789BE20ED902017BCFA6A9CCCC6BBA1D3D DD417FDEBD304FE32E2C6FC4F32392E8936325CF2A102DC6987CF2D8090BA7D3 F1B16D8417B607F842FEC77F0570DD4AA98D8BEDBD3A5F962FA8BAF58DF43A39 DF4F494458A2969EABF685A634431D9F3C63D5BE1A5C36ABEE60E3E1188B69F0 C8D4B8A9C469B32C9ED1980C4CB5C34A4743415E2C941F291BE9931CCEA75CD3 ECE1A04EBF44CCC1CA894957FD2498D84BAC4D6490ADB8D70DCE7A8462EA4D0A 2EBC632FFD96A6EB49A8E75EDFC1818C66A3A3E9415BE35C9DFC6B499F9FA286 33C57BF883777AD1303366AEDB794CF2656A1729DF422189455C5FF2D23C1A5B 17EB0604F9AC1C484FB10FD194704BB2C426C55671372515A8F5FDE717BDD52F 97832A24AE9413B8C7B18D4B6DA7E01B21C53A8A1661CDA7C26290C67E3994C7 7E833C1720D5FD1EC1C284015CDE18CEAB3867E917C98CE6C0779DAAA1422A57 E98AD4D7CED96488C463B3A2FF79DB14D5999DF00E240548B918AA5E62E5A350 B0EE6B87CFD1AA40DE86470F131CD145379EC562BEDCD4DB77132F8E6CCD47A6 E71EFB7075790A3AEE5CCA6955EF3E43AC17191F202257AA0DA9383D8667CEAF CC575961B1906BD44A9A652307B7EF8BFDBB7FBCF13C3B599FDBBB774F7272C8 492ECF2B562A200D633B0FC7ABE5BF2E6C34ACDC5E5B0E351AAD9155CC3AC213 4D7E7FBE2A98DC8F23BC236AD4161E5A44503A563F06AE338B9637B600F8514C 34C5E0AC65D85B53B18C99512BDA1619B1E0A54FC1CAC0F095C29B50B083E4D0 458BB51FB51548B8A94A0290E121BEFE8C3E1720BA52FE118C79F8DA266F89F3 2B9AA41CEF288BBE9905F191DF058B1700A5D79FD0452BA27898573929069189 D5851D2D72794E883821B9A157CF685641A99FC0D7CB15E2DFD2F6459FF88757 0B3DA85186B878777DED4FFDCC47019E52461C67B3240705C19A10B538CC9FE1 7E24F3D2AECF62EE446194C687E5912D550BC96BC0610A93CC0E261DB8ABD77E D0E8AF55678E261DD2E57767F045BCF8BC54BCA3800F83AA1B7CB194FBE4B27A F60F60498E7D31F50947C86CCDD07710EBD56908E048ACDDAB2E08316401D8B1 81EE22BC79035632E6F3D5BEEB8A2D8B7CE61B83270BE6D3A996D0F7028AC1B2 6AA9510AFB2C804AA4A34ADD935932FF2D48C9E29D4BA44201CF03A765A772C1 3941242BF84DF465C1E569145E6051FDE8EC2BEC97F0ECAB1B4DB17DA98F3388 22A119DA37BC20C5A23E03EBEAA6B0F3D06F91A39ACA120792704A8363BF66AC 6EBA491BAE27702071FC1636B5CEDEF9431A5D7952CC1B50E39E6D615219A7E1 0CBCAA8F832C827516C1A6B4935F4301AC7AAE77183C14FA5B76B08C3D154265 A22CD8602239E2B32CE919AF44BC79005815B1D2C65378405645FCD9C5E125CF B3E3DA1B660E5D1129031466E74A50D27E8F9A47ABF9F7DF911B50DFB497BAA3 74638EFDB6E4C10FE3C5E7010CBF7A45582DFC0EB253B2F036A68A737A1A560E 8ED6B2D834045D61A03BDC63D641835DF3132F2D25A368590AD47310066954E1 21701C915003C885E577E9097CE4186BE217A2F3D7A38325D20C60358C55E4CC 8EEC502D0C44A9B6828B7F1780DEF8060D7DAF7474926A63A6F73A85D5595125 B964E95FAE6315C4BB0926CED5F7930F3C8C5F5E19FF44103E7A8324E14A75A5 1E8883D1E8ACFB0580F0FA5C3C72F4B1F4CCB137705DA7E04938A5C9499709F7 C85F07715651765921F017176B028A832560766631E307AF7F2BC5BC6FE2F8F8 5BBB01D9FD44CD3B745454F6D3C8A57BF24C94BFAF5D43E0DB17CCC998E696CD 96E60FD8EAFC2AD77513900E07D00C705EC6388EAF26373E931425A333F06B6F CDB93259DAF1D24D6EB0C53FD42447B49C723FEE17CC806342545AEE71E16A2E C47905B31E052F4A95FE1375C77D62EFBEC3F2B57AD54524BFA4D11AAB4F8853 323C8816DC662BD77E861AD3CAA8A3B0EBC1E43A5C1A88B0D510C486B03F9A18 500A65894BED74898ED02FF14D29F561FF22B2095A63FBF9F73DC9DA46C03682 DDE3C7F3E3D03C092F4AED3001E326570EC7A588A546DACF76CB14EBE8C7960D 0F13DF6E8C3B6C991D4E7E15881D4F8BCE999E31F55FF6088E7937A4E70B166F 7EEF5728CB89313B463A6295389531F30F1FF3033636F365D0464DE72CFD498D EEB8CBD021C52D73CD659821A69D164B0CE8B2BAF5C35CDB1E964033836D2E38 0B7577DEC6EAB35B8F4CE239D2259164F21B92AA53591B2387FFD46F21B18BCA 1817A627188C59EBA49A4BDA43B6C11F480EA54E583D0C5AD125BAA7D6C45C30 5D4E5E9F003A2BA9F69523A88ADA4AD77F0F17B6231F6CDD3B65CE78E1E6E101 B7C02295F60B5B33BF0867995A8037A9305D2F00D8C0693C7BEA51C82E5BAF05 FC43B2C67ECCF0C96993E112F294CEB38383D63FF4CE2879A361D332630357E3 07B111B8B91EB30CC14D31520EB574CBE1F1C5AE370CE1C7012417E9D0E081F8 BF21E2B5B9DFCB452C98056DF1A31AD385163AFAB9A874DC6E344E7BBAA04202 AB129DD4F8F78C10C346EC6878535A7566ED562387E9DCD3F920550A78CD3E2B 43FD9E5EFED97A541D8916E5AC7634327D48B9FC52332E827D593943063FBE28 10635C18C7666E5BF3B33D78D9A633D6F3C4B442E0144E020F668E91DA73132C 6A1641AB98C5CB25CFF36F9D07C294627F1BFE1D0F328DFACF2A412DA1484B87 63BA9326DD9494095045E652F0B91CF654A62521266536A14387E3164EADE1EF 55331B0C06D2C95524D388DA05E583D22606A8ECD8484B2AD0E4D6EF64A30456 48CC571B65EBF0EA6033858BE43059075FBFB1592CFED2248DFB1ABB920132CD 36E6791B2015823FDC64FF7CE796E7A26B9A5AB859E42B12F69A905B2CB2F9D1 223DFEA464E8CCF03881C5181819A48F9424774E04E429C30241066661038CF2 C93BEF67F9F0B197A6C27B7179650BBF709591382A44E9382079C8B59291E0F1 5FB82804985D453D2FDAB0E1AE990CBBCAF196AE7C63E2338D907EE63CC6CAC1 703882EA95A137AC6F633255BA19E2A651B901DC8A44C77024C089E77AE8ABA7 5309E0E8458F67AA264140D21EDF0DE67F24D7F5BA3A908D8923413B476303C7 C3B8D68D41119827CF436FAE3348AD96414C1A6AF5308E8BC344818284DFD28C 6F227A98273FA15B054786FFC37ACEFF660C0B7B92BD2B482CDFDEE82A4EBC8A 04DC835F6720A4AA064A5E12D8D23E33690159E9B9672520358862685CB5800D D6E24EE5B06DEA0D4CEB482F384904D21563A1DD0BD62FB9ED5EDBA8738E90A3 782F94AAD44200652873239F07009E86AC3E80D7496684040B32289ECD009117 91A81A6C0F84ECAEF8A4E6845F715917CF19E0596F72F71710D649CFE12BDCD5 A936E48B8FDF57F8289EA61ECCC07DED2405EE4902940AA292014429A736095A 2063A0EFB9C51A05E8656F65ECA56588DEFD523FD855EC13B28C716B66015813 AE3795854769ABC2DA719924E1AC8B295AEC0A6FA683BBCEF338566E8E3561E8 3EF63E5B3518751291EF27BBFC695480622539F82495BA74058A6AA62F5E0FCE 460DA156D2C5B2F97D0F43661F1E47686BF8CFD2FB19C3CED38BF2D29F015D3B 511721A4D30642208E92B9E13A0D1F8ED44A701773D14DF0CB0E032FA0793789 8731FAE6F07F80B68B9952C5067E3051B6B92CFCE6FDA116D04C6D42DB304834 4589C43B695AA80AD63ADE37E0022AFE98D3A8754AC543C883825F71B3C1940E DD56E6592AD60AA728F2937E23CF9280E9BD21300387AD687142E954EF567C1B B22038D1B311A3C09E4DDBCE9F51F4ECF83E01D51F782E10B620750E2C4422CB 80970C04DE72DDF2D79C24F77A3B5D8D1FD1A4A60CF964C507E70F36C94FC49C 40281C092F51E15D134C025F48CB242466FA6BC67A043A2B51375E49B5E23A65 056D27230A209105505FF1EC4385F03B972C5EF54B1D68D1F880832D1617889B E3992494886663211A2AAE74E5F222786B294E7F407CF56B0E5BC8EC7CBE8530 BBDE27B9096F2B26C4E34CD2F1ECF212CE844CD0837CA857B05B698E39B6F28F C6726DFCC4AB93563E13B27689153341BC606532640DF6578271B0C79C78D6D6 DCA8F81F3E1A5E51A2C079F6360AFECE8D78F5FBA770D0B5DB9950E38715B682 E12307AF08FEA673C350A720C998374D858364EDD89338CE98B6F6EDA54E9DBA 8282237CDC03F3FACDEFFEB144E4515B262C7AD44086A38797B4A8AF0EC1EE2A F76E9D37B8F95E9D2E9470EBDD681F1680705BFFBC47E7BF436E2EE112E6C32C F1A79ADF8A04C6CDE3AF914051262F8476A3C98C9413388E7C2CA43C2815AF6B 4118CF875EFCE5198FF3992A6E2132D04C2877B78CB2462CD9AEDC8B1FAB3BA4 AE9B88218ADFD18C20A27D45535672225C8314D9374F71A37FE89BC2B1653F2C 9BA81FB8302E456D3D70D746DCB50C8AD964B73257D3D029BD257426A3AE0F91 247CAFCDA9A58D3DCD8008603A5DE0521B302E4D4D09B1223571FE8B1A4F5E28 D86427BC862A62B609784D1DE7AD977738F5B057BD986ADA869E15D9D584FC9E 78EEE2F63AEE8DE0F6F70C60A6FA5909EE36207D17CFD7A525BE444125388FA3 B4EC467D63E6AEFA796DC56C8FD8D2DC570C851B70411891A1CF2B2563E39BC7 5668922B661DEF5A805B9516C1D8C4548186E9FA937A00931295B2A5241E23D9 D14CAED32A28F016276A996737B9043B69D135C4EC5315F8B18FF168EC1657D6 9EE29F8B214C32241B47ED1D21BCD2C55C7D7ECA13A297BF58F56E78A3C5F718 9F937888483402D1B69DB5B159837260F1E58F895080EC30FE323D1791C2F1C2 E25C919074D6485F10B9B608C3A0FBECE628D2A07BF81710119FDDB6C70937C2 DCB42D82297C762C2CE8B16C2274728D5F1795DA49076F55A03AAA3B39E3EE63 5F26F787F605C610D0FFFD8EF07F08249E4367D4FC5A72A6729190F6C5392689 D894518367ED02B283EAF68ABDA35BF03637A9EEA0991B170BA4E94A483D9702 6FC921DAE58B59164C3863C59ABC971E8C7E95FDC7242CC2871265B0C214DBAB 44920C2BE36820C375C0583DF09CF4341DC7A047A277FA8742AE36D942E9C95E 74BD1AC87BFBFD6EAAEF6509528FF9512910A89AE00CF891D61DF8950736E909 7B4F40717A7A7C3C84CAE4F2D2C25D7390F8DD1B61964B92D763B431EC43E4BB 55C6BABBA783DDC400452573195C3D0AB0F49D50A77C5BC17890E2FD63064917 DF2DD12AF76D8403427306446DE37D8853D4462EA2B0A67FDBB974A78AC6B7D3 702047C1BD247C2C443E7D0944EA05741910083A06529F27BD6CD02C25FDA535 2C16D351AB0ECF6DCD090D80AFEA59FCCBA9014D4BB4093C8A8DBF6CD8473492 64559A000D55C7C55376D66603F3112DA770A2995DC39BA4EB348FFC96DC7A74 595F2F7320DC650A7EB4349F2D4119B5E6F176B2D82E96C27251BD3D0E20498A 6CCC26E21BDCEC8F4FDF45E36257749C97E5D730A4D4698277A7B39460314E86 4091F86394DC6ABD399B8750B55455FC68643C937C94A3D4DC63EF4DFC1772C7 2993FE3C7A807EFBAE415258ABC674D537C21F84335AD02A9E4FFA99F55B8CE6 5F1E19C90A187F99828BD85229C64451228057BF6FD848C897FD56A5903063EE 935DFEB4E4FA8EE80D2618388C7EF5EF12B6F10AF274371F45CF0A1EEF3FD649 D25871125A7F3D125C54DD247075B508667EEEF405CD7FE5505B40D42251B0BC FA700B95013DD0D2955CDD13EE6C8940E5BEA7DF36C3CA6E905E27788C6C2E35 416961A3EF9A831D7876C4930CEED5B0F2EB65869969F2658AB50449E627237A 1EE56ADC5B2A7F3DADF90ECC0179705A0049BD3A7844C3D8F792439C85A8CD09 9AB53D3DC13C85D0112FD877B3983A0EE39277EEE1FF627200BE573719402944 16352A7A430090B6E9DEF2B388002B8EFCFA9448FB9B9379BB47832DC466B6E2 C228835DBC59F672D3F63BD0909C6128DB46F6EBA560A227D5A91F6B52F81EA4 5F2912C2119022150780B3B69C0224C40FBDD0FA0E216671526361ED2C379A9A 63743D302DD08FE437CC63E7078B6990D6AEBDBDD49789B328C5478D36BF2C2B 1B39BED5627E742AF084D63C2CE77E5666ADBD58C0563872537EB827E072DB9F 22EE512FAD2D3F3A638C89FA689C36B7BF0D6A8B1881174B6134C41967B7F539 82891B10684AF751A5143C17B444E5FFD715A52FB88A504C37FACDFDE5852569 23F98A7060F16F264B52690E030A05A03FC365A25B4F2CBCD00864A5075AFC24 5C7E17609D1B045F84696C42063DB18788C5368FC1CA77C5BE509556D4A2F78B E5E3267286367FC5D8AF6B94F0C8D6AD27DD21FB6A8B8360004F82ACD4496253 D31B544CE8D5BDADDB81CAE0EB5E072AC6CC4DD3FD495115354AB93067CBB6E3 560AAD419A4445528B5316E7D0198825DDFE73628FA4B0CA39F8A88CFCA923AF 2346E469D4002CE612FB6B71F213E2F183AF448DEC02E04BB7DFE662572C87AD EB3C52A9795F8C9AD1DE39F05D6AF9781E34F191EE5044FB30D3B733CA40EDC5 8547FCD0297E8AE949D1A3FF703CFD66D4B7FC94E88C42394D99B79AAD2329AD E7A589552EBFAE3F07376467B7BBCB08A0F90071A154F5E51399CEAD2D291F39 0CCA15489876D6617E6928872895E46A51DCCFC2D230B160E54AAA7DECD7066C 5A70C11B2704EAB8132F1B7D6262551215EECE958ABCF01ACC98B1CA1484642B 96B3B254A63778C385E92F249978AEC54511BA3F36CF60D058919414C1800605 57B45DC98B556A350B99C5E0488ECCDCBB8D9607CDF40FC2FFDDF6D9B9032299 009352CD70B5E7F89F69960B2359B910C31851C9478E4340479263B6DFB52F96 C64007C7FB5489D6E421DF86E7A4207BD83C69F567BC0887BB58F1EE69351DAB B7512B0C015B8CB97591F7391F584C08CBC3AB58658118486E77D64F0AB9C269 6BE51B5C2BB6DAD8D7544A1A0B193C3AA33527B5461B23A7EA9C5E622BA43C1A 2867ED9F4B0BF1195476C6C0EC5017266CF262B192F80F794D88BE78AB09EB98 B5BD32FED7F47AA7DB208B5AD86F78A5730DCDE533B1A7ECA8ABC3B0EF02ADDF CE0B9967B2865E13DD17F3C2B89111FF6EC170D1992242654B8F31605BFD5164 44DEE30EEE588718A15299C93C7E862DBB3ED2204D5E04F19740FE75A7441380 F554BD5FF4A65D59CD6666825113C4C9BE2978DCC651B5A9B49E371DF112DDA7 78B1E5AB7CA9166F1C563BE7B0C3194899993554F063E42FFE0772CE3296ED0C C4A04A6CCF168BAC5660A8571E858D5B0F539F541258A6B5DDDA73E09AB4A76F 9F2F3C88999C5ECCA90E9A8EDB3C7FF5C7FD207D93DC1FECCC650157C24A8E93 5727DCF4D05497575122E59237EFA9A415B0780684B752072E05E453B83A678A 7D5D5C3350DF128572364D93CB4B714C53AE7652D8169CBC4BE48F5A622AC156 75FF33D2CD347D849D7F4014E39F6E4A8FB4789B1B2AE9F3A87AB86148EF3FCE 45ED77E90F445D217495696827A429285FA47C3E354E35089916FEE4EA1867EF C6BDC2AF437D6AFECA803BDA1D8CC26B167FC8BC0B765E6C4FFABDCB486E7544 C9DAEDFD6ECAA9E900F5CF7023CC8AC7AB951C91CCF7A18FF33ED6179704CDF5 EC6E9FEE72E88936E7CF3B4E14E52CDB046E18E7DD7A7622EA804F31D9F072B8 99AF8495782D70CB3D445848D607A3BCFAD05FD16B8BB3470B211F3967354B88 87D554B30A78BF185D2890F38A1BBE0C7FBEA09EF87008A89F301800AD9CCE1C 4C9FB2ADE6B3739FA207BB2C70CE7F6A19793B6508B6C19739D47FE0C6D7B3A3 D2A9FFF6F8AE4458ABC9BA6167C8B31107C119BC0250494A59897FE380772A4C 0B60C20D44C218A9042BFD7393DDDDB6B6EDFF203AC1BA06D53683E9CC93C557 8DD8395C85F8ADDB3BBF5A15F6812755C88EDC58A1104E643F9C81693B70E98C 180103127A6D961E0B41759DA615D317680399B30CFD39D3DD1311CD36EFE597 FD8485DC0FF421D31F1912930BDABF8877950752B9FD2557A74EBEA591CF6D45 487251DBB4C19B2D12795EEADA7A4A89C2AB877B9D14551EFD649B7868963F26 D8462C12256B122B7F56AEF135C88021CE8ABEFC1D42CFB7DC62784C25121B72 E5792A3CF4E51A5515CC2363E123E27AEA04B0D3C92E5C2719E202654DF7F093 E67C0A7EB730EB302E4D69BC25236252B6AEDD1996D69F8FD52CE72184FB8B80 396C24CDDC54F2CA5E27839DE141299FB7BC8509F9874C4BED39B1D6551BC6F8 AACBCF458336E95F4D87375B4FD0476C7C8553E116CC281D74E71DADDADE6D42 75ED626FBC9F9D637A823531F3C194DFDC6B19CD129FEFC0A3D8978F49DCCA5B 2F54B45C85DF463F65E9982246FF70E11CAB3B011F8645419D07615F900D77B5 45180E311E0C6C1FFA38F4916C92205E2A26B559C00CE8798D853BCA814C31CD 2C00A445B22328C5ABE1858AE7D45A37B762F21AEFC382E026BCF18BEFC22C07 1F5E5359FB89C8079EBE1E61C2E947B42B60591465FDF2068C9548934812B394 8288405C376429709CC2F0A790A676312A1F7B6A2C201A835D23F7915AF31C9E D16AE13C31245412952085C6511983B603D5A9C4D948ED4E5688D444B92040D9 799E567CE717B7D10212A4CDE7196A055E661155A06D5BAF79ABECB174D1314C 9BFA608B4A1BF31F3298BD908EE724A656356037573F643696C7E50229A02801 4F869145725CC69457D983A9EF5A091D52D089B81FE9447358A275D1AD2D5FC1 C174122BCC8C7D6AC9B9CB78962314A9DD8FB8F2DEB144A6B041D160C9095D25 F72984D6191AF657489DB7A787067700522FBDEC3A25D13CAD71DA2E44A5F9C3 B8F5983A564EAC8E7840366BC6045D4885AA5278A704AA73742E7DBA94245260 587BB24460D421703E6A279F8F583F1385FE0729622A17A070D9AB48AB371A10 A6D0A5DF77250137667BD4B96F13B55B07B6D2477B1EADF3F55BBED7C7D1330B 073AE7BB89D1A4F5062A4A3B2B0EE53B21EB748D1353FEE8DB441446127BE568 9440CDAA3C1EE4FFFCAE52ADFA631475438CBEDFBAF3CB40A1D65D47F27A48AF E88F57F50FAC2CB424A9F35C93C7473D2E9E361125D92642D2C25CBC9BE82D79 E62507CEB5093DA15CF3EC2E4C99BF6DB1B84AC71720544DF2F4CA7C00046DA3 60D2254C7320B2ECA36A68E92ACDAE4E3DB361F115C6C82C24EF3C0E773A42D5 0AD85ED3A753A70DA18AE80B34C590BF0F787A60F6A06412E4D5B169FAA5AE73 3FF4D5F97AEE71FC0EE1FE6D8C39AE67E9B599D4547F85DF41C5BEDD0BD876B7 F632549BD6E4CA2D041DCB92DF49269B2847405A6C2908EBEBE3E23398C00749 616A087F403C0F7A904402844A9F3F8D12ADC69B62040676E5E7471F3037BBEE B702C43E180647CB3B204F74B9C352BBAE635DE85696690CC58BC3C5DBF00540 88B756FFB12843D8A477B81BE67263A46350B690E754988E24DB1C03B2EF9A98 F6138987079C2DF69E4FEF592FC203445BABE7001DD2DB39E9F3C3080DA2ED50 77F717628868E0021A5E9233E61FB3C3389583D83C22B1AA0391CAFFD924430C 88DA60D5F27F7BA6C8FE1980DBC7717D726F799FD710EEFD2BBE10FD89650E1C 756CAD4438B0A64ED5CDFEA5D0C0D1E6B3E69D279DF532F73AD95D11181D9DFF A3E9489C6BCB2EDD8B807F9431080047ECA1F1DEB062130B04CCD30DEB378095 12DC6D807C64164663DB8A54768FAD151DD8A6465CC0421E00CF88BA29E7D010 86992FAABA0691B2FE05454AB656190AF690143008D4476DC3B66C69FEB150C2 70FC9E986D7A82CDE0A24BA276DDF300EA9656A8970744BEBC5A864FA3CF9956 2D2621AAF180783FCDB677A7DB384B0A92CD42C10AEF2A9D8843388B059C9AE8 F020FD785AC36F258D75BE391B7E085C85C14EB3E9AFAF18AFB7A4E8B8B79CC1 136070F037E37BC1B62E37A77FBA9FB2F46BFE7196B17D6B84F49959819DD1D0 1C2ED8034D3E34EC34CEEE4EB129AA5BA15A0D4DB4D8796C50363AF98E460100 0ED834F1FFEDFA99DA4678784D50DF9A5D11148E7E79E8FEA75D9BA7F5CDF435 A145DD3BE0C8B711AFD17CF7F909EA1FB9CFD4C1717545A59FDF0BD14AB7DAB4 795EC7C47EA8195D1C49AA123D0769F276FE1C61A4168FB7328B173EE86B6BD1 B43BE66C925135EDBC52A3828BA722AC70C21AD47EBCB8389D5F2CCC6B458F9E 304027EB16C70E4AF5E876D73AC63B62FB286BEAFDF3A8FD4A90814C9511AA18 13BCD561D54E86C0ACB8FBDA3FA8712D746D261AE0E2A3831196F227CAB7A847 FA1D9D6B3C16ABD37D826433F2E0733B55CF8C01FF41265903CB1D8124FDDF53 08CCA5FAEF161B11B73566AF119C1E3B46771DA6E64A5D38357CEB8FFEBEC145 3F6C04D2391BE10CED95526744A7254860B862328ED2882DEAF17B785BAD0CF9 CE68162ED656AE163928E851235434DE64544B21EBC47BB9682CE60E17947EC5 AABBAD6722DC8473B18A07DF13391DCB29E0169354454B0652A0DBC955844906 139BDA0BE4EEE9DE6EBDE41CE534C9740A75D079974B8A75B0B6A90FA55766A1 5B5BF32BDAEE12311BAB2831ACA44CD3953649803DF0A57A5555B33E2CCAA124 4FAFE2953F67D3B891444C4210419C589EF3A4860FFA77442634CEFF8AAEE32D BD9E2BBD1726DB317638D497BA8F34958F5D947AC24E89BCA6689CD0178233CD ADA6E10649966FD2E7A40FB877F9FB2ED1E98043847C4089CCA5C02D6BF671EC DDC0AB16A1B96D4D3F46B0BDDBD6CBC08E78A1F0FE0BE577F5C2658E56E76411 2AE3E36B4489125B30C34F50B2FF086FC52C07FAA51C7374FEED8FA2E499116B 62DEECD96152EC9F97BA2840DE630D9FF069908CBA92DC4478D6AF9873E84C49 8372CE8BED20411E90A7E80F919C25DC44EE7019D4BC928985DA5DE620481AFA A13B66A64025D97E365FE5335AD4AF076408350BA62D1BD9434B008BD4E64773 CF6CD42F176DE673805F052E4050D7B4810FE0340BDB4D517018C9A4F4C357C4 6C4D0FD14723248FE456B091587AC404D293D885885ED7A4657E36F76C9FAE9C C3D80604023DE93CDA65726C8CAC2B9106D0615132F70A8D23BC43E5E475712A 1078EC1EA16801732127AADF396A0028B3296D6D1769AD7773BB03A8272EEDED E36F76030DDA855E25B5753025D7C405BD95873BC32972AB992998F5B5A46108 4F5AD890665234A77DCFEB4F3336D0936A59CB05C4814FD743CF1B5C44528872 3EEDB0B7D0C6D621CC38B1745F3072244D5DA13FE3859980120029A1EAE2421C C5C14C3BD89D58A1D7F93ECA5DE9685F54F4E64833FCF95BE8C5AB2026554398 E8F787DB595F1B5661D0E69C7357DF82CB478BF52055C73DD6C9987A0E3FF814 B3A62235A1E38EA066F2DF9A01D52CC3162BBDC7C9290C093BACFAFB35BE4965 3D4A82A2456381E8C69D7303B9D6C95C1FBCBA7A5B886870C590A3EFFEE9916E 1FD5EE9C00BB1712A05D625B3B75D63C449EAF96438DE3D56905879B39C338D5 1801E834A438361ECAD75D85579CACA00C83DDD8F53A587DA9463BA3DB07052A 539DACB330560FA30AE77E239ADC1E1ADE16FF555AA32195EA2DC865D1173A72 34EBE565B08C25E6D2E012DEE128ECD369410AD22F2354DDDBA62461C0B25DAA 28A61F7CA33A5D405253921E83916C01E5ECC9BDCCDE9A8E9F83028F47F61154 549ED5E9211CA29E46553BFBC1A066BDAA0F6988F420764C3A102D1CF352A4E5 4A649EBDD587D56FB89FD9BECD7F1DA1FE2A0E5FDCC9F741B624B0C641B6F174 14B0F0E9791E794C4FD628577F55F7F480640362A61280CF59699EFDC74B6183 30C720457BD73038C8514DBD4B479A7AE28317348C5016A2FB5795CC7D0EE466 46BFBD0FABC8D9D20BBF133A4C2456A51BD68A4696A528534AF2ABE6A503DC76 D2C6633BD227A02ACC62A5313B9DA70B4BE5BAD8BFEFF3DD4224A6C6D96BD232 2217DB0450A68C788EAA618404CB7AEF9CB75BAD39F59092A13C9EFF7FEDDD5F 1C872B80000949C6FF418F40838CC3371AD625BF2A51F46EA2F451F29381AE8C 719E96B544772E43DC60DBE33575ED357C59BF146469C50880EFCEB8D91A76A9 42A52C5E20BA7213ED6D12580D4E12F8D5C8D0E731ADCB6DA94D1C498A1C8CA3 B88F5DC29063E043CB1610ED9CC0EFEA122B3F9DEBD2FAF31FA8C16D39B41049 D5586DBAE9F3BB680CCE74A053416241090D0179929A5D17047641E9E01145EF 04C59DCA92C99C72A6E450FDD462AA97CD724F91E452A6C7BAF10F9663F370BD 82F1DF6821808F3EE971F8AD22F10129B55D3C69E43F8EFD8DCFE64D191BDCEB 6F3813ECFEC667021FE72EBAA04083F8773490ED73F110C094FD55BED46748C2 2BFD936C952ADFAEFDD97BD87B20D791780AD6CDAA8652BE4F068EB14040FA01 CAF3F15246AD0487A2728432B37CDE9ADE14DC6D8AC1DD9CD3A5333C5F1A0ACD CC181A050655CFDB8596083A64E819D17C5E5ADD32462B04B346523B1D2FE542 BB3267C06C3A45F451BF28E32A8930D145CD4B394119EC00A4502DEE350BA643 EFB74F01F32A7015975DBC98B448530A6779E6638E42999F51636FDABD6B58F8 E3995339F7FF3A9F52241F9917E32A3F610B66C711882BE72751B7B73886C167 C626D934DDA1387E89D9A13B88628935C5E6991032DB69EE9D00EE530D2BB5F5 B45053FED98719EEE851E1A36DDBD83FF86B80F5FC12216105DCECF8C4AF41A9 6E412E0C2F1866F53139131638AE35A73911B1D96C8B8FA40C246CA8E9279527 1F99EF9285EFDA72715F52300D473FBBE977F5C5DAFE04BDA286BCEA940E3FA2 BD7FAAF157480021D1211C2096AB1974A154D0091121E018EA0399880B21A260 81670B26887BF14959D4A21FD139836F4126544A51084977F044FEB4810393F8 418C32E0A2A0C03302D333D1EC32C188F311A1924CF48A2FDE0700430AEAD23F 3FA4B230472208A940EBBDB7826237F4B6F73071268A49C220DFA4B9FC0144CD FBAA4602E33EF7541AFC3D5472F4525FE4F74ED4CE53389021E711C9AA8F0FAF B674A8F62C2D317FD8091258DF35B0D69A0ACF64C2BC79342811FD4D8A04E08A 5D6DE5B96C1900E69370B6D0321A2A8D315D785F761E5BDD3343A66D5CD0C809 827F0265C6FDB14EEFBB75A907967AF5ED715E149A91F8213D915C6C60FD33FE 48C36645F4F476A130319A1AE332F73DD76EDEFE02F7E97ABB3D11F2E8504356 99C0747A3CBDDF002C25C051E1C7DB92E011470F9E309FDCE30E6ED8D78F1583 F5F8F74A2BC4355B6D9DD29AA0D57D9A8652C86F9F33766FF16CDABD7799ED6B D399950C2C728EE95AD880B1A4EA0042E5B198BF647F5BAB61CB57F8F2450E26 5BFEE67F5BDC4A8C97779F64B6959AB1E23A2BF752CEDEAE0834ADDAAF780986 A11687EC66FE8FA4610D606713788A0C34EE603E3A9538B618AC2EFFCF16E5BB 18DFDC3EBB84602E03743E72E7D0CC314FB59554929DA6924DCCBE64045721CE 6A9A5116A3F2B7D78B8E7FBE7B79FC55EC16451655C9087A602D1CC33010CD8C 369E7DC96FA6FCDAC2EC05ABBF5DB82E1718D05AF629101D5D7635E1E2D378EE A123456E311F4237F4A165CFAE5F2E2F83A0F39A0BFAF5C7B6AA4CF14E40590D 3DC9A7C67395092377734DE58E150427CC6BDE166ACE44227ECB056AFC5A11BD F44260CEEF1C53B8935978197789967A92B1F3575B41613D87E926B9B1AF03E6 8648392B7CB2BEA66D0D7619BA23B47EBC5DB07DC2A8997B30BB7F63F98E9D70 DD2F945777A74D7B36F8BC00571C96CCDC1397CC4E531507B135C71F263AB868 F87E02A47C7D8A95E4638E7E3BF14180DA09BDEF281A8ABFA5DFEA3F412C87E5 B45F24D87418C1E397824D73C2D785650ED15D868B011E1AEE36AFB32DAB82F2 8AC23958148447CBD2E57283AF4742299D8B865FAB70AF4ACBD8FE6C00CD6292 2FF0A88E9B3B95EEEF82A31322E79D8E3548F582899214A4A862FABBD1937E4E 3FE6CCFFAEDA522E9EF53E33BEDF7EFFC992CB8CEA8DABE083475DB864376158 931D93B618F8D98CDED544817DCDB2345C9F769B307736432DEFE14FB16735AD 7B87C42EA7844A47AEF6DAD0CADFC78780E5B980D00C2BAA6BC12F94AAF87C2F 863D3392D9F92AA698BB6DF8D6B8F18D87BCEA4C7EE1686F079F72EE73464042 8B001491E8EACADA1CEF26D90A007E056D8549A0BBC0E350FD74B4253FA84608 F6AA0823472BE190F6A7B948F68D5369103BBD85C3510CEE91926FE5F96A8907 C6AB5B3D7A8B6EA04F03F3113B3A06A01D7D7AEA934D5B664727CB5552E26336 426D31BD1191A1F9BD3CAC8AF1B63087F0280C0F3AA2D139E58912BDDD402938 BDCB9FCF874D286E2945C8E90EAF47335277AD275B6E0BCB59EEE72E6D8CDDEC 3974294C1422C0961AAE2812AB1C43EC9F4AC1B3E81D1FC06DACF6FF4F17693F AD1662AD2462B44B4157A687038C0913FB7DE2E25559696F3F2AF579ABB9E4D3 3E41D238E64A2C1A9C21E2118846B3C8E48F3BF1F4F6EB1F3BF2C0EA8E279DC6 70A7B1606C72E283B575A8C4375477BE6D63F2E71CDB071900A281D3CDCE997D 01C166295DB3700213BEBA265240675D20B478240368C8B82710F6602E833E20 C924347FE3953FB574F6EB6BD969FBD04B4FBA3C5D9536FCAABE187875550DDC 2D5F9A446D0951859114659A448E38A36BD37D0CF79B13EB5D68B45B2316DCA3 DE2C015C318462D7C201AEEDB5C932B22950097475850EEAFB7916BB8D4EE2F3 1EE3FA20E85B28A3C34168D23272DE3F6A9786138FCE8F18E6337C10744B64E6 A9D1571FD2724A1D2310DBE3C96ABF6CF93DB3B3DC537E66E5D4DE83DC21B416 BA779D6448B7C9EDB85F3E71E7393392A0542FE9F5DF4C10B54D54A7D0439359 B4606E0E56DF9842953E29BAE7AFB52A12DBA546B41EE7DC5EC3968D8C8C0847 57A145590AA930CD23030C155D3A2FAF64DF4E0C4D1D0F1AB80F64CEEE326F72 948DAB18CC90BE7E996DD2CCDCBDAE0CBF853B27B44212A298068D18D6DC4444 D48581E65C28BF8FB9DCF10A7F50CE2840B1A4F451203983E10C4D59C07E6B31 C35DC6D02A4856E2A6D3FD63B36C9C2BB173F5D5097241D97DEE4BC152873489 B2E08848165B619F84BB425E29F9A661C772C45774EC3F0260309FEE571E954A B77B06E59228808FBA8F8D6EF67541697CB4E736FAF12CF1AD56C1AF3EEE2F53 B7E837630C9E2EED1680783F523375E387DA32184F061DBDEC0C7582B3E9EDE3 8B35BC9EA4C95731C3093507AFDA346C47B5F5A59FD126C5684AA4C487FE5543 ACC5CDAC42A58AF0B8BB78FE767C96BF200C1806C5495818304F13596F8EBDEF EA38FEBD5144593F8CC99CD0B5554BB262120C5CA0035038C8D573EA43696E6B 9E8273A62C8C937DC7FE34BF4AA143171024659796E12E3E3A38F05039FAC149 B5632CAA9DBC7FE569D7DFE18F57C98400B39FB9D00B7826F4C5522C431A7A60 0DA851DC945B494CD977767C5FFB69623CEF38C19C3A3D5689CE2A287FF22EE6 DBD82AE1C7791E2C15EC430B00083DE7E672B9795A1CFD5A8E8CAA7F0CA0E7A8 B6631A3F943362D862A114C8FE66255B882E82DD604F1B723C05F8DFDF2EE6D4 39C21F35D99ABF1E1FF19BD0B327DC6A0AE410D1DAE017CFACCC7E8286EC4125 7F86E2951A4B4D01FB058F785397F079D370682282D164264801D3A5F59D8FD3 514E781EB5BD1656AA04ABA65F0525F366B792982124D6861E2861A6E3D44455 4331C8B9B129AF407A56A6D5C29632F1994CB864F5978ACA86E56382C5D74AFA 8A05EC9B136950C3AAFFE587573F1F3E16CBD110C30076D082B29666A5E45CF9 3F52A4B405E0167D24052ADA9E98853D3455220E8640E1CBE4854FBA97462893 88D824148DF46933044D09F3B03007AE8DB2A52A22DF786D6AA7E990B0772E47 231F7865B1E394BADB1DD501EA736778C75EEFA1F9A54B42522A1804A9CE08F0 A7E82E14BC4D4991995BC16CDE6E7915B8710711A18B9FB97A32DCF69CA8078E 716ACFC562603FF79A7B0D7E87A60DA33C0E3C50EBD3229EE1B7461EBA4994AB 0D391441FF59661836D3617738C44AE20B494035C46709FEACBAC37C51DF0ADD 937441C9E1509C1465C86C08CB2DA4028E873968ACC5E0EF8683EBC9280152F9 69011E2075941CA66DB2110C971D5778FBC13ED24470BAED6565C244DEFCF245 797B16127CBC1C08A4B6C4F7D4A9DFC92DBFF7B59C64ABA51243129287F85886 DE1926D3232A035CBAB7B47266B4A1084BE1DDD7FB7D0E4591345F039502C727 486712BE3BD19DEEBE744CE2FEFEB6F26C3C17C54A21581A51D4DA8A1AA11056 5109D5936109AA310ED6499B0E5D40CE7B2361F955816A2599509C2C74F16500 F74D8CCF0E7F0B6ABFECAEA687E037E5117D97B20DF518643251A0E460B4F6EE 84F171DF6E51F0566D797026E96C1B1B607D5FCBFF7736E780636B1EBBC93826 AF5665D8F5ADD711B47628DE98DB2C04BAD30BB7D585C116D97A5F55B517658A 24E9325EEC3956E66151ED897102036DA56B80C8FFD40644B78B1AE1265EF578 17053339690655C02BEDC59321C51BDCC90A17908E21275318292101AFF192D0 B966D7F13FD49C0A4B6DC01D0B7CC7787D549409E8A4A9DA24E7DA5C6F736A23 6C82FFFA8E80A9AC290FE9D9C8F480B15252D8BEF76A8E16E106B82C8BA1762E 70D3EC0D8CE7FCD065098D9777C456BA6F35F5E382B05BCBCC25725A8BF15CE9 ECB6B5263D064AB44EF669C8E0547CB22E0950D513BBB39D9329E6388512A58B C3FAD349A20A1AACB0A5B43130DED84D63C9AFE1DEC1AF4DCA7CE23529D5DF3C A183F9085F0E21541B14D0262B2C5A8CBC093A5888A607D80C7930C211274F98 41145F821C06DA96099AE2466C5E15D95C203FD918DF0464E8F9FED955873277 EE903EFECEFF313E863BA272A489E1C98B4DCDE2481968F69EE63BAFC75EE724 07AF31DEC2C8040BFB39E0F370C377345C196539E2A50596253BA5D173296E82 5AA562591C39697668689B03DECE87E2865029A9937E14612BD86F52A25689C3 A216C44F11760E65D0115ADF2DE08AF7B3B877F317D190CDC54C451881A9375B 47A033559A12D40AF985662431B9AD2D2D3C375CD51D2674AD9968610C072E1D F73984B844D97C6B4D48A2134180044022745582EA5CA4EC26E73A3FCF265FFC B42F2A53C3BD3E483CCEBA578A078B3E3D37CEEDD06295559E7AC740C43C8580 39E9C988B4972D5F53FAF9B9223BDDEB42CE2EADCEDED117FA4A1E5141915C74 3E6713988FFADB9C101E7EA4E32926D602B4C71CC4E74E2B6ED2C5DCADD466FE 6E59CECB040107E032E8C41C7E8EDC9AA14C19A7BE0AB050B80FCD1724297215 55FE58D604ED04F2BEF433E4E8D743CCEC8A140C3B88CA2B37783DD21CC210D9 118843AAF5F1E42C971522B208C7A5EBA00D6C28AEFD2C7CEB27DFEB34C4F616 E761C946A6485F7A5DBFD921E1C3FA41F927B0714F5549923B1C27F6C704DCE8 CC14D43F5E61C16BE2030B378DDBB3C28B2F31EB3A9B2DE4125D9CB589803E70 E1F9FA1D93D9000C9699B28BF58A9B833B66179BD143DF97F4E24226D7521ABF 3FFBD47D0DD8783373FD30EC663646BE383B662A11CA47E53EAB63D102D2D9D4 6EF28DB89DCD5301654506704455A708CF5AB954536CB43935CBE2621305C53F 8356DE33BB289807C2F25A91855D3EEE681965ED4231B5068A223116300CE8C2 312618208F8C1E5ACCFB8FDEA53FA3B63167AF02135CC4CCE66A18220BABEF94 71202D27835A4B33BD1AFAD7FD36F3DA41A48D2424BCD5353D0B5C9AEAE3FB20 FD00FCE101C595F41B96B18DA7F963A77C1B6F11809C5D5B7047DD7B7ED4F62B B7333EC8E40F432A9E323DBC7E03FE6E77A80133A731F42698B610B773CEDB2A 03EF63BDE89D3EA8483C7D9D6A3CDD6136D5B59215B5E8A7342F69556C3A3DB4 7F10148CA111550A9EF89CA6B124A427C270DBC8A87BA8368DE2ADAA2192CF8B 6871079E8E4443615EFF3D40563B7DD45D61F9059895E4915405D085865092B2 CB3696AD723FB57419FCDB1971DAFC7F0C60DDC9641674162626319268DB3590 43D1A0B795D92F34FA3B53359BDBAAB0E8AD87880F750E2AC05DDD8EA50FD7C2 DADE975A9D383DACB1D4BD91CC064808825687E1EB47383BF09E639075446075 F6D1DA2201F3C9919CF8247F03694671F653A2681048EB85AD38364CC41E6BC7 B7C320EB0BFFCD328E8ACA2EC0DC397EDD9710A888BDFFB5D7F4C18C9145E604 7DACEED08D365B9BC4544F06F19AD3E452A468901182D2FB1D86AAAE7D7CCC27 4D38D73921F3A8BDE658C5D0EC4028F2BFADC53945976FD7DCBA7621CEF2532E 129FAE3421163C288CAC50ADC7E4D9F903C668FA533ED2970ABF1155772C0503 DA2DAFDC9AE2B9C3E3F69A368E335FA1AE61DB86E3103110D94BC0E579811BCB A73AEF0D63FA1286F8DF9C3BF0B4CC39A8DD1235763E2E41BF295215303663E1 089ED4A32C7BA6298D3869758873C687AEB356F9FB7259AFDAE54872D5569F12 5504DAA00675BED893051226EE0F8CFE97FCF34486DBE79A83138F0C17A4D446 1DD177C06611752E681DF48A5BA9FD18BBBB4CF93BB4378DA3F94BEC2E499DE7 301C3C35C1EAC523422A62AE984AFEEB5A3AC132164CE9CD7B6CCA854DBEC672 5A6E85D0A2929655453B1F8D899B31214416E0DC6408BBC7726F466A75483B9E 82A809966554FD7DA7D129FEF19CCD36485C0C8111C0F65445AE8FA18A88F65B 3FE53F0288488F7FAC353C3D4148316AC6CCB58E54ECC1DF8B1F0A5BE79C037C 1D66B2773C16497D104F5B8FF98997673D0E17D1302010B1EC836AA936BCB8C9 ECE8021CBB7AA4EDE0807B0E1CC9C73D6063817F37D2E6ADD4213BE9F2FA7F3D 1A905D272D40F2667D0294F06A528E002231ADCCE93EE8D8C83DB1D60177F181 C9EE9F67644A6DBF72DEB4D6BFBF2F4482EF642FA539FA9B11064017D4E2BE24 CC88CACF66A8985A5553283ED33DA5F0E0E54A3932FB9F7F7E261ACAC5DBD46F A0A60BA41D14F5040BFDD6C9ED7B54F1E54C1DA55955815CF354F47DA7E6E2B5 B64B48650C2205A807683514711EF6D77ACD8BD7F424A189AB88570B1A511157 F0F3FDDF868AC6E0F0AEFE887E1B962198CE9AD45FE86CD904FEA50730B6D256 979FFEF083080A0402FABF95848D194235EE82581079E13DD35391EF2798A87C 046F2D8F22FB936BFD373A7B42202DCE9AB3649CA62DA38F86202699F1BF925F E4EB251D4E62A3715F946EA1EAFAC067FA3A5CB857A683D62BFB3693CE879195 D566E6303BCF90CF402D61882D8C69B4EB10EA808101D040D1BED63E31DCD339 BCB74DFD079B9A9B6D6640EFB13271E933FA0ADFEDE7A87538432F6EAB4FE095 1E6DE7E738ACEBC87D8AAE22E2ABDE4C93800B639FDE1DFF522C7914F23BC412 AE85BCE949CB0EA61DC23465631126166E79F8F6F5283CF8065EBF661724AC75 26300339112D345AF28CCF08FCFB79DFD18FE29E46A3635D2A7679EC332C0977 D990F9FC23974FDEC676EA3103C511303FF0E0E2124FDBC4654C71DC1EF66939 869F82E023A824A78F2AA914D66DB7766DF78385F1C5A02F06B460E592F38E25 11D88F3C7C6CDD7778304BB2A7B5034A230F6FD79434B8482E44B5EA0504D4F1 E1FAC676C1931DF6117C984408693D8347E241BAA7F0C65DB7BA695553BF4756 7054F0DE33C6C4E8A0C2DB192A738DEC60453F7BDA82698491910126F9762F66 17B40D677AB73FC5A69D021A3289160A03FABBCF3F5CC97A802B8AE852C95C4C 4F87101381363761D803A9450D2DE0FCE3AB48F13BD859D41BD884A7865174DF 6FE24A98CFAD6B64FF0C2790CFA2E602A4FE1780982982A55A06EBDA791DFC9E FB456E31FA716ADF758CBAFB7FE82175483B72697F2754ECE0D451386A6C55B4 7CD891EF8CB7EA1DD3118A2FD37EBB4EF8C6EBDE568AE2EBCB7083937CFB44F8 D22A0874DF470229839C6B16724F24A6078BFEC824375C550B1000D3491735AB 63BA324E193AAF31FBDA29E4542DAF129275847AB0E01F4D0D0EB02B8B13BBB6 7BB8B63A9CAA73AD1AEB412A20062EEAA0BE81C9C8D7B6931A7958AEE0F39BFE 7C3FB88133273B600662DA77954C64E4EF8753ABD0537FEBC836EED5D7FA6E94 B8732A6829536BAC09567036082AA5DC5E2FC04F81FD09CCC2E06A38777E9B55 3B1B1CABD695328CBD62884B2F3967DBFAD2B34D05EAE84A9D26D3AC5E06137E 029A3DD224DD394A083EAE22983493EDA8E79D44593F2FCE1AD619DF37098882 56B364BCC055BB078AC5C64FECED4772A3AD84C5F118F72BBE0EC662F711C781 FF06E7FDF967E976CE2C4AC70C6DF29AB01AD6D24D45BD096361D01F2164D956 F1817C88F84C20295A78296307CF499B32719D081919B869188CA8F1BE38E78B 036105BE04BBAF24D2D903842C139919961DEC745F9C311C019802024A7DC772 A2B4298D951A3B32694C680B0838428348CFAA55C4E434290C8F8829A58AD442 D70095B3EF67AEAD84CC8B5EE39B242DA8AF17CC368109FE09A8255597C93E78 B55E37529BE1FFB9EC7B130AFA22616E02832D45D20B0D3D724AFBA85D123EF5 B821F5AD338666B99473238F7D0CC629D84CB5F1E319820BAFE6A9E87D84C47F F7FEE41C0A4B07DDC4D36F41C5BF46AD6ACF1B7129A2EDAF5B005173AA7E43A0 5CB99AA0B6BB2A25DD4CAB130511401EC745C2AB6B3CEA7110853B55311CE6A8 7CEA42FDD8D483B3C05FF2C1BA20F504343B03A84258B30FD0525D323A3671B9 18C15363EF8CECFD3FFD93170E427820847FB9E5270FEDCE5E00BE05349A721F 552CEE50DABA48AB98631555C6B9C05965E9650C3E8189954957F83D366EA95C 123E37C9AE58F141959767508FE7DAEE0A2797B992E78DE4B79E1FCA9E7C91CD 91C77EC2E1090069D1DE25968290BE7CCC80E1B9B2823EAD8FD92E45C1D44C7C AC8DACA28397C3DA27DA5D67B706C003A8507F3A1E85F4004C27DB20FEF9CEAA 4D3904E7AD7F556B5F777B843ACE2D6FE00CF8492C101E232E8BBA0F9E9D50A2 6ED9FD235F8D3DE2272D98836AD4394AC669A855A16125FA754CD81A23B753A4 638DC517C0762030D93F7F91D0933D197960350551A4748DC67C6E51A3C03D7E 1BDBD11F624AD9DB1E8EAE650783731A176EB7F4F6FDF972F09723689508DB0D 79B1B335DDE06CDE1B2CC182B7F142CD7690AAFE1C0A65B0147C64AD3C4B779D 4C8B99668D3258FABB40ECAF0D8030C030A25DB7835012C03AD5D32C71B16D29 D8CE2A2402B9EDF8F5FCA404FF49AE12FD47F3A65DE77AF571A4C9BBFF6EFC1D 15EC16083AF4F28C3C2CF6A3C38A3E255C90BF5CD91AE886EF07613CEF333B6C 08EABE48D7D9A3BBD92955FF6960DB410849946B1D769853D6F1CA89E405A8FF F96E7B3E7845567B4D639D058447B793902544A125F76421E6760701E50BB9B9 B2DF78815C771F3EBFDEBB80E415C29D661A2095793F93325F4DD948E78F2EED DC7295EA159C9102806E0FB888284AD7D128AA9CCA6971245CB62695B1731355 F0818ACEC8681721C36DFC80ECF0E9D59589080E941B049C772194E83DE1E26E D05087746F3EF6595180C4480008CFEF2F0AB926519BA31392E3A84A07F2C0B8 5890AF6485B5AF0C01DD099D6E8C46A1C177E592EFB1AA43A4C225136D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont TeXDict begin 39158280 55380996 1000 600 600 (libtasn1.dvi) @start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 134[41 2[41 43 30 30 30 1[43 38 43 64 21 2[21 43 38 23 34 43 34 43 38 11[58 1[43 2[52 1[58 70 48 3[58 60 50 1[59 55 1[58 7[38 38 38 38 38 38 38 38 38 38 1[21 1[21 31[43 12[{}45 74.7198 /CMR9 rf /Fc 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 2[39 3[39 97[{}13 74.7198 /CMSLTT10 rf /Fd 134[39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 39 8[39 39 39 39 2[39 1[39 1[39 2[39 1[39 39 39 39 39 39 39 5[39 7[39 39 39 1[39 39 39 39 2[39 39 39 39[{}51 74.7198 /CMTT9 rf /Fe 133[40 4[51 35 36 39 3[51 76 25 2[25 1[45 1[42 51 40 1[44 7[69 3[70 63 51 69 2[68 71 86 55 2[36 71 71 1[60 70 66 65 69 6[25 58[{}32 90.9091 /CMB10 rf /Ff 133[52 52 2[52 52 52 52 52 52 52 52 52 52 52 1[52 52 1[52 52 52 52 52 52 52 1[52 8[52 7[52 7[52 52 52 68[{}28 99.6264 /CMSLTT10 rf /Fg 133[40 48 2[48 51 35 36 36 48 51 45 51 76 25 1[28 25 51 45 28 40 51 40 51 45 10[68 7[68 1[57 2[33 2[59 62 69 18[45 4[25 1[45 28[51 51 12[{}35 90.9091 /CMSL10 rf /Fh 214[35 35 40[{}2 90.9091 /CMSS10 rf /Fi 134[52 52 52 52 52 52 52 52 1[52 52 52 52 52 52 1[52 52 52 52 52 52 52 52 52 1[52 25[52 18[52 52 6[52 42[{}28 99.6264 /CMTT10 rf /Fj 134[65 65 89 65 68 48 48 50 1[68 61 68 102 34 65 1[34 68 61 37 56 68 55 68 60 27[81 18[61 61 36[68 12[{}27 109.091 /CMBX12 rf /Fk 130[48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 1[48 48 1[48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 2[48 1[48 34[{}81 90.9091 /CMTT10 rf /Fl 197[25 58[{}1 90.9091 /CMMI10 rf /Fm 197[33 58[{}1 119.552 /CMMI12 rf /Fn 134[85 85 2[90 63 64 66 1[90 81 90 134 45 2[45 90 81 49 74 90 72 90 78 11[124 112 90 4[126 4[60 2[101 1[124 117 1[122 12[81 81 81 81 2[45 46[{}34 143.462 /CMBX12 rf /Fo 240[45 1[91 13[{}2 90.9091 /CMSY10 rf /Fp 138[62 62 62 62 1[62 62 62 1[62 2[62 62 62 1[62 2[62 62 32[62 14[62 2[62 62 45[{}18 119.552 /CMTT12 rf /Fq 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 71 1[37 75 67 41 61 75 60 75 65 11[103 94 75 100 1[92 1[105 128 81 1[69 50 105 106 85 88 103 97 1[102 6[37 67 1[67 1[67 67 67 67 67 67 1[37 4[52 52 27[75 12[{}53 119.552 /CMBX12 rf /Fr 131[91 1[40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 2[45 1[45 25 19[51 51 53 11[{}85 90.9091 /CMR10 rf /Fs 139[75 76 4[108 4[54 6[108 94 20[116 26[97 49[{}8 172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: a4 /setpagedevice where { pop << /PageSize [595 842] >> setpagedevice } { /a4 where { pop a4 } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fs(Libtasn1)p 150 1385 3600 34 v 1035 1486 a Fr(Abstract)31 b(Syn)m(tax)f(Notation)j(One)d (\(ASN.1\))h(library)f(for)g(the)h(GNU)g(system)2398 1594 y(for)f(v)m(ersion)h(3.4,)g(25)h(No)m(v)m(em)m(b)s(er)f(2013)150 4795 y Fq(F)-11 b(abio)45 b(Fiorina)150 4928 y(Simon)g(Josefsson)150 5061 y(Nik)l(os)h(Ma)l(vrogiannop)t(oulos)g(\()p Fp(help-libtasn1@)o (gn)o(u.o)o(rg)o Fq(\))p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4413 a Fr(This)33 b(man)m(ual)i(is)f(for)f (GNU)i(Libtasn1)f(\(v)m(ersion)h(3.4,)h(25)f(No)m(v)m(em)m(b)s(er)g (2013\),)i(whic)m(h)d(is)g(a)h(library)e(for)150 4523 y(Abstract)f(Syn)m(tax)f(Notation)j(One)d(\(ASN.1\))h(and)f (Distinguished)g(Enco)s(ding)g(Rules)g(\(DER\))h(manip-)150 4633 y(ulation.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fo(\015)e Fr(2001-2013)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h (to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s (cumen)m(t)f(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end %%Page: -1 3 TeXDict begin -1 2 bop 3725 -116 a Fr(i)150 299 y Fn(T)-13 b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fq(1)135 b(In)l(tro)t (duction)13 b Fm(:)19 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)57 b Fq(1)150 911 y(2)135 b(ASN.1)45 b(structure)g(handling)16 b Fm(:)j(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)61 b Fq(2)275 1048 y Fr(2.1)92 b(ASN.1)30 b(syn)m(tax)20 b Fl(:)c(:)g(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)50 b Fr(2)275 1157 y(2.2)92 b(Naming)18 b Fl(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)48 b Fr(3)275 1267 y(2.3)92 b(Simple)30 b(parsing)21 b Fl(:)15 b(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)51 b Fr(4)275 1377 y(2.4)92 b(Library)29 b(Notes)18 b Fl(:)f(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)48 b Fr(4)275 1486 y(2.5)92 b(F)-8 b(uture)30 b(dev)m(elopmen)m(ts)22 b Fl(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)52 b Fr(4)150 1729 y Fq(3)135 b(Utilities)16 b Fm(:)22 b(:)d(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)h(:)60 b Fq(5)275 1866 y Fr(3.1)92 b(In)m(v)m(oking)31 b(asn1P)m(arser)15 b Fl(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)45 b Fr(5)275 1975 y(3.2)92 b(In)m(v)m(oking)31 b(asn1Co)s(ding)19 b Fl(:)c(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)49 b Fr(5)275 2085 y(3.3)92 b(In)m(v)m(oking)31 b(asn1Deco)s(ding)17 b Fl(:)f(:)g(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)47 b Fr(6)150 2327 y Fq(4)135 b(F)-11 b(unction)44 b(reference)21 b Fm(:)g(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)66 b Fq(7)275 2464 y Fr(4.1)92 b(ASN.1)30 b(sc)m(hema)i(functions)13 b Fl(:)i(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)44 b Fr(7)275 2574 y(4.2)92 b(ASN.1)30 b(\014eld)g(functions)12 b Fl(:)k(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)43 b Fr(7)275 2683 y(4.3)92 b(DER)30 b(functions)17 b Fl(:)e(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)46 b Fr(14)275 2793 y(4.4)92 b(Error)29 b(handling)h(functions)23 b Fl(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)54 b Fr(19)275 2902 y(4.5)92 b(Auxilliary)31 b(functions)19 b Fl(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)48 b Fr(20)150 3145 y Fq(App)t(endix)c(A)160 b(Cop)l(ying)45 b(Information)25 b Fm(:)c(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f (:)70 b Fq(21)275 3282 y Fr(A.1)91 b(GNU)31 b(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)21 b Fl(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)51 b Fr(21)150 3524 y Fq(Concept)45 b(Index)18 b Fm(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)63 b Fq(29)150 3794 y(F)-11 b(unction)44 b(and)h(Data)h (Index)24 b Fm(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)69 b Fq(30)p eop end %%Page: 1 4 TeXDict begin 1 3 bop 150 -116 a Fr(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2592 b(1)150 299 y Fn(1)80 b(In)l(tro)t(duction) 150 533 y Fr(This)27 b(do)s(cumen)m(t)h(describ)s(es)g(the)g(Libtasn1)g (library)g(that)h(pro)m(vides)f(Abstract)h(Syn)m(tax)f(Notation)i(One) 150 643 y(\(ASN.1,)42 b(as)c(sp)s(eci\014ed)g(b)m(y)h(the)f(X.680)i (ITU-T)f(recommendation\))g(parsing)f(and)g(structures)g(man-)150 752 y(agemen)m(t,)g(and)c(Distinguished)h(Enco)s(ding)f(Rules)h(\(DER,) g(as)g(p)s(er)f(X.690\))j(enco)s(ding)e(and)f(deco)s(ding)150 862 y(functions.)275 996 y(The)29 b(main)i(features)f(of)h(this)f (library)g(are:)225 1131 y Fo(\017)60 b Fr(On-line)30 b(ASN.1)h(structure)f(managemen)m(t)i(that)f(do)s(esn't)f(require)g(an) m(y)h(C)f(co)s(de)g(\014le)h(generation.)225 1265 y Fo(\017)60 b Fr(O\013-line)30 b(ASN.1)f(structure)g(managemen)m(t)h(with)f(C)g(co) s(de)g(\014le)h(generation)g(con)m(taining)h(an)e(arra)m(y)-8 b(.)225 1400 y Fo(\017)60 b Fr(Distinguished)30 b(Enco)s(ding)g(Rules)g (\(DER\))i(enco)s(ding)e(supp)s(ort.)225 1534 y Fo(\017)60 b Fr(No)31 b(limits)g(for)f(INTEGER)g(and)g(ENUMERA)-8 b(TED)31 b(v)-5 b(alues.)225 1669 y Fo(\017)60 b Fr(It's)36 b(F)-8 b(ree)38 b(Soft)m(w)m(are.)59 b(An)m(yb)s(o)s(dy)35 b(can)h(use,)i(mo)s(dify)-8 b(,)38 b(and)d(redistribute)h(the)g (library)g(under)f(the)330 1778 y(terms)g(of)f(the)h(GNU)h(Lesser)e (General)i(Public)e(License)i(v)m(ersion)f(2.1)h(or)e(later.)55 b(The)34 b(command)330 1888 y(line)23 b(to)s(ols,)j(self-tests)e(and)e (build)g(infrastructure)f(are)j(licensed)f(under)e(the)i(GNU)h(General) f(Public)330 1998 y(License)31 b(v)m(ersion)g(3.0)g(or)g(later.)225 2132 y Fo(\017)60 b Fr(Thread-safet)m(y)-8 b(.)56 b(No)36 b(global)g(v)-5 b(ariables)36 b(are)f(used)g(and)f(m)m(ultiple)i (library)f(handles)f(and)h(session)330 2242 y(handles)30 b(ma)m(y)h(b)s(e)e(used)h(in)g(parallel.)225 2376 y Fo(\017)60 b Fr(P)m(ortabilit)m(y)-8 b(.)54 b(The)33 b(co)s(de)h(should)f(w)m(ork) h(on)g(all)g(Unix)g(lik)m(e)h(op)s(erating)f(systems,)h(and)f(Windo)m (ws.)330 2486 y(The)c(library)g(itself)h(should)e(b)s(e)h(p)s(ortable)h (to)g(an)m(y)f(C89)h(system,)g(not)g(ev)m(en)g(POSIX)e(is)h(required.)p eop end %%Page: 2 5 TeXDict begin 2 4 bop 150 -116 a Fr(Chapter)30 b(2:)41 b(ASN.1)31 b(structure)f(handling)2068 b(2)150 299 y Fn(2)80 b(ASN.1)53 b(structure)f(handling)150 632 y Fq(2.1)68 b(ASN.1)45 b(syn)l(tax)150 792 y Fr(The)30 b(parser)f(is)h(case)h (sensitiv)m(e.)42 b(The)30 b(commen)m(ts)h(b)s(egin)e(with)h Fk(--)g Fr(and)f(end)h(either)g(with)g(another)g Fk(--)p Fr(,)150 901 y(or)35 b(at)h(the)g(end)f(of)g(the)h(resp)s(ectiv)m(e)g (line,)h(whic)m(hev)m(er)f(comes)h(\014rst.)55 b(The)34 b(C-st)m(yle)j Fk(/*)p Fr(,)f Fk(*/)f Fr(commen)m(ts)150 1011 y(are)c(not)f(supp)s(orted.)275 1146 y(F)-8 b(or)31 b(an)f(example)h(of)g(the)f(syn)m(tax,)h(c)m(hec)m(k)h(the)f Fk(pkix.asn)d Fr(\014le)i(distributed)g(with)g(the)g(library)-8 b(.)275 1280 y(ASN.1)30 b(de\014nitions)g(m)m(ust)h(follo)m(w)g(the)g (syn)m(tax)g(b)s(elo)m(w:)436 1415 y Fk(definitions_name)44 b({})436 1634 y(DEFINITIONS)g()d(TAGS)h(::=)436 1854 y(BEGIN)436 2073 y()436 2292 y(END)275 2427 y Fr(The)39 b Fk(::=)g Fr(tok)m(en)i(m)m(ust)f(b)s(e)f(separate)i(from)f(other)g (elemen)m(ts,)k(so)c(the)g(follo)m(wing)h(declaration)h(is)150 2536 y(in)m(v)-5 b(alid:)533 2671 y Fk(--)47 b(INCORRECT)533 2781 y(Version)f(::=INTEGER)275 2916 y Fr(The)29 b(correct)j(form)e (is:)533 3050 y Fk(Version)46 b(::=)h(INTEGER)275 3185 y Fr(Here)30 b(is)h(the)f(list)h(of)g(t)m(yp)s(es)f(that)h(the)g (parser)f(can)g(manage:)225 3320 y Fo(\017)60 b Fk(INTEGER)p Fr(;)225 3455 y Fo(\017)g Fk(ENUMERATED)p Fr(;)225 3589 y Fo(\017)g Fk(BOOLEAN)p Fr(;)225 3724 y Fo(\017)g Fk(OBJECT)29 b(IDENTIFIER)p Fr(;)225 3859 y Fo(\017)60 b Fk(NULL)p Fr(;)225 3993 y Fo(\017)g Fk(BIT)29 b(STRING)p Fr(;)225 4128 y Fo(\017)60 b Fk(OCTET)29 b(STRING)p Fr(;)225 4263 y Fo(\017)60 b Fk(UTCTime)p Fr(;)225 4397 y Fo(\017)g Fk(GeneralizedTime)p Fr(;)225 4532 y Fo(\017)g Fk(GeneralString)p Fr(;)225 4667 y Fo(\017)g Fk(NumericString)p Fr(;)225 4801 y Fo(\017)g Fk(IA5String)p Fr(;)225 4936 y Fo(\017)g Fk(TeletexString)p Fr(;)225 5071 y Fo(\017)g Fk(PrintableString)p Fr(;)225 5205 y Fo(\017)g Fk(UniversalString)p Fr(;)225 5340 y Fo(\017)g Fk(BMPString)p Fr(;)p eop end %%Page: 3 6 TeXDict begin 3 5 bop 150 -116 a Fr(Chapter)30 b(2:)41 b(ASN.1)31 b(structure)f(handling)2068 b(3)225 299 y Fo(\017)60 b Fk(UTF8String)p Fr(;)225 437 y Fo(\017)g Fk(VisibleString)p Fr(;)225 576 y Fo(\017)g Fk(SEQUENCE)p Fr(;)225 714 y Fo(\017)g Fk(SEQUENCE)28 b(OF)p Fr(;)225 853 y Fo(\017)60 b Fk(SET)p Fr(;)225 992 y Fo(\017)g Fk(SET)29 b(OF)p Fr(;)225 1130 y Fo(\017)60 b Fk(CHOICE)p Fr(;)225 1269 y Fo(\017)g Fk(ANY)p Fr(;)225 1407 y Fo(\017)g Fk(ANY)29 b(DEFINED)g(BY)p Fr(.)275 1579 y(This)42 b(v)m(ersion)j(do)s (esn't)e(handle)g(the)h Fk(REAL)f Fr(t)m(yp)s(e.)81 b(It)44 b(do)s(esn't)f(supp)s(ort)f(the)i Fk(AUTOMATIC)28 b(TAGS)150 1688 y Fr(option,)j(and)f(the)g Fk(EXPORT)f Fr(and)h Fk(IMPORT)f Fr(sections,)i(either.)275 1831 y(The)e Fk(SIZE)h Fr(constrain)m(ts)h(are)g(allo)m(w)m(ed,)h(but)e(no)g(c)m(hec)m(k)i(is) f(done)f(on)g(them.)150 2075 y Fq(2.2)68 b(Naming)150 2235 y Fr(Consider)30 b(this)g(de\014nition:)436 2377 y Fk(Example)46 b({)i(1)f(2)h(3)f(4)g(})436 2597 y(DEFINITIONS)e (EXPLICIT)h(TAGS)g(::=)436 2816 y(BEGIN)436 3035 y(Group)h(::=)g (SEQUENCE)e({)580 3145 y(id)142 b(OBJECT)46 b(IDENTIFIER,)580 3254 y(value)94 b(Value)436 3364 y(})436 3583 y(Value)47 b(::=)g(SEQUENCE)e({)580 3692 y(value1)93 b(INTEGER,)580 3802 y(value2)g(BOOLEAN)436 3912 y(})436 4131 y(END)275 4273 y Fr(The)68 b(notation)j(to)f(access)g(the)g(`)p Fk(Group)p Fr(')e(t)m(yp)s(e)i(of)f(the)h(`)p Fk(Example)p Fr(')d(de\014nition)i(ab)s(o)m(v)m(e)i(is)150 4383 y(`)p Fk(Example.Group)p Fr(')40 b(\(as)j(a)g(NUL-terminated)h(string.\))78 b(Suc)m(h)42 b(strings)h(are)g(used)f(in)g(the)h(functions)150 4493 y(describ)s(ed)29 b(b)s(elo)m(w.)275 4635 y(Others)g(examples:)225 4778 y Fo(\017)60 b Fr(\014eld)30 b(`)p Fk(id)p Fr(')g(of)h(the)f(`)p Fk(Group)p Fr(')g(t)m(yp)s(e:)41 b(`)p Fk(Example.Group.id)p Fr(';)225 4916 y Fo(\017)60 b Fr(\014eld)24 b(`)p Fk(value1)p Fr(')f(of)i(the)f(`)p Fk(value)p Fr(')g(\014eld)g(of)g(the)h(`)p Fk(Group)p Fr(')e(t)m(yp)s(e:)38 b(`)p Fk(Example.Group.value.value1)o Fr('.)275 5088 y(Elemen)m(ts)26 b(of)f(structured)g(t)m(yp)s(es)g (unnamed)f(b)m(y)i(the)f(resp)s(ectiv)m(e)i(de\014nition)e(receiv)m(e)i (the)f(names)f Fk(?1)p Fr(,)150 5197 y Fk(?2)p Fr(,)30 b(and)g(so)g(on.)275 5340 y(The)f Fk(?LAST)g Fr(name)i(indicates)g(the) g(last)g(elemen)m(t)h(of)e(a)h Fk(SET)e(OF)h Fr(or)h Fk(SEQUENCE)d(OF)p Fr(.)p eop end %%Page: 4 7 TeXDict begin 4 6 bop 150 -116 a Fr(Chapter)30 b(2:)41 b(ASN.1)31 b(structure)f(handling)2068 b(4)150 299 y Fq(2.3)68 b(Simple)46 b(parsing)150 458 y Fr(F)-8 b(or)32 b(simple)f(t)m(yp)s(es)h(lik)m(e)g Fk(OCTET)d(STRING)h Fr(the)h(simple)g(parsing)g(functions)g(listed)h(b)s(elo)m(w)f(ma)m(y)h (b)s(e)f(used)150 568 y(instead.)225 702 y Fo(\017)60 b Fr([asn1)p 538 702 28 4 v 41 w(deco)s(de)p 849 702 V 40 w(simple)p 1142 702 V 40 w(der],)30 b(page)h(19)225 837 y Fo(\017)60 b Fr([asn1)p 538 837 V 41 w(enco)s(de)p 849 837 V 40 w(simple)p 1142 837 V 40 w(der],)30 b(page)h(15)150 1069 y Fq(2.4)68 b(Library)45 b(Notes)150 1229 y Fr(The)30 b(header)g(\014le)h(of)f(this)g(library)g(is)h Fk(libtasn1.h)p Fr(.)275 1363 y(The)d(main)g(t)m(yp)s(e)h(used)f(in)h(it)g(is)g Fk(asn1_node)p Fr(,)e(and)h(it's)h(used)f(to)i(store)f(the)g(ASN.1)g (de\014nitions)g(and)150 1473 y(structures)h(\(instances\).)275 1607 y(The)f Fk(NULL)h Fr(constan)m(t)h(can)g(b)s(e)f(used)f(for)h(the) h(v)-5 b(ariable)31 b(initialization.)44 b(F)-8 b(or)31 b(example:)438 1742 y Fk(asn1_node)45 b(definitions)g(=)i(NULL;)275 1876 y Fr(Some)35 b(functions)h(require)f(an)h Fk(errorDescription)31 b Fr(argumen)m(t)36 b(of)g(t)m(yp)s(e)g Fk(char)29 b(*)p Fr(,)37 b(p)s(oin)m(ting)f(to)h(a)150 1986 y(pre-allo)s(cated)f (bu\013er)c(of)i(at)h(least)g Fk(ASN1_MAX_ERROR_DESCRIPT)o(ION_)o(SIZ)o (E)28 b Fr(b)m(ytes)34 b(size)h(\(e.g.,)h(as)e(in)150 2095 y(`)p Fk(char)29 b(description[ASN1_MAX_ERROR)o(_DES)o(CRI)o(PTIO) o(N_SI)o(ZE])o(;)p Fr('\).)275 2230 y Fk(ASN1_MAX_NAME_SIZE)22 b Fr(is)28 b(the)h(maxim)m(um)e(n)m(um)m(b)s(er)g(of)h(c)m(haracters)h (allo)m(w)m(ed)h(for)e(an)g(ASN.1)g(iden-)150 2340 y(ti\014er.)150 2572 y Fq(2.5)68 b(F)-11 b(uture)44 b(dev)l(elopmen)l(ts)225 2731 y Fo(\017)60 b Fr(Add)27 b(functions)g(for)h(a)g(C)g(co)s(de)g (\014le)g(generation)h(con)m(taining)h(equiv)-5 b(alen)m(t)29 b(data)g(structures)e(\(not)i(a)330 2841 y(single)i(arra)m(y)g(lik)m(e) h(no)m(w\).)225 2976 y Fo(\017)60 b Fr(The)30 b Fk(REAL)f Fr(t)m(yp)s(e.)p eop end %%Page: 5 8 TeXDict begin 5 7 bop 150 -116 a Fr(Chapter)30 b(3:)41 b(Utilities)2776 b(5)150 299 y Fn(3)80 b(Utilities)150 635 y Fq(3.1)68 b(In)l(v)l(oking)46 b(asn1P)l(arser)150 794 y Fk(asn1Parser)27 b Fr(reads)j(a)g(single)h(\014le)f(with)f(ASN.1) i(de\014nitions)e(and)h(generates)h(a)f(\014le)g(with)g(an)g(arra)m(y)g (to)150 904 y(use)g(with)g(libtasn1)h(functions.)150 1039 y Fk(Usage:)94 b(asn1Parser)45 b([options])g(file)150 1258 y(Options:)198 1368 y(-h)i(:)g(shows)g(the)g(help)f(message.)198 1477 y(-v)h(:)g(shows)g(version)f(information)e(and)j(exit.)198 1587 y(-c)g(:)g(checks)f(the)h(syntax)f(only.)198 1697 y(-o)h(file)g(:)g(output)f(file.)198 1806 y(-n)h(name)g(:)g(array)f (name.)150 2040 y Fq(3.2)68 b(In)l(v)l(oking)46 b(asn1Co)t(ding)150 2200 y Fk(asn1Coding)27 b Fr(generates)k(a)e(DER)h(enco)s(ding)f(from)g (a)h(\014le)g(with)f(ASN.1)h(de\014nitions)f(and)g(another)h(one)150 2309 y(with)g(assignmen)m(ts.)275 2445 y(The)f(\014le)i(with)f (assignmen)m(ts)h(m)m(ust)f(ha)m(v)m(e)i(this)e(syn)m(tax:)150 2580 y Fk(InstanceName)92 b(Asn1Definition)150 2799 y(nameString)h (value)150 3019 y(nameString)g(value)150 3128 y(...)275 3264 y Fr(T)-8 b(o)35 b(sp)s(ecify)f(the)h(\014eld)f(of)h(a)g Fk(CHOICE)d Fr(to)k(b)s(e)e(used,)h(sp)s(ecify)f(its)h(name)g(as)f(a)h (v)-5 b(alue)36 b(to)f(the)g Fk(CHOICE)150 3373 y Fr(elemen)m(t)d (itself.)41 b(Use)31 b Fk('')f Fr(to)h(denote)g(the)g(ro)s(ot)f(elemen) m(t)i(itself.)42 b(\(as)31 b(in)f(the)g(example)h(b)s(elo)m(w.\))275 3509 y(The)e(output)h(\014le)h(is)f(a)h(binary)f(\014le)g(with)g(the)h (DER)f(enco)s(ding.)150 3644 y Fk(Usage:)94 b(asn1Coding)45 b([options])g(file1)h(file2)198 3754 y(file1)g(:)i(file)e(with)h(ASN1)f (definitions.)198 3863 y(file2)g(:)i(file)e(with)h(assignments.)150 3973 y(Options:)198 4083 y(-h)g(:)g(shows)g(the)g(help)f(message.)198 4192 y(-v)h(:)g(shows)g(version)f(information)e(and)j(exit.)198 4302 y(-c)g(:)g(checks)f(the)h(syntax)f(only.)198 4411 y(-o)h(file)g(:)g(output)f(file.)275 4547 y Fr(F)-8 b(or)31 b(example,)g(consider)f(an)h(ASN.1)f(de\014nitions)g(\014le)h(as)f (follo)m(ws:)150 4682 y Fk(PKIX1)46 b({)i(})150 4902 y(DEFINITIONS)d(IMPLICIT)g(TAGS)i(::=)150 5121 y(BEGIN)150 5340 y(Dss-Sig-Value)d(::=)j(SEQUENCE)f({)p eop end %%Page: 6 9 TeXDict begin 6 8 bop 150 -116 a Fr(Chapter)30 b(3:)41 b(Utilities)2776 b(6)389 299 y Fk(r)333 b(INTEGER,)389 408 y(s)g(INTEGER)150 518 y(})150 737 y(END)275 872 y Fr(And)29 b(a)i(assignmen)m(ts)g(\014le)f(as)h(follo)m(ws:)150 1006 y Fk(dp)47 b(PKIX1.Dss-Sig-Value)150 1225 y(r)g(42)150 1335 y(s)g(47)275 1469 y Fr(Running)32 b(the)h(command)h(b)s(elo)m(w)f (will)h(generate)h(a)f Fk(assign.out)d Fr(\014le,)j(con)m(taining)h (the)f(DER)g(en-)150 1579 y(co)s(ding)c(of)h Fk(PKIX1.Dss-Sig-Value)p Fr(.)150 1714 y Fk($)47 b(asn1Coding)e(pkix.asn)h(assign.asn1)275 1848 y Fr(If)38 b(the)h(ro)s(ot)h(elemen)m(t)g(is)f(of)h(the)f Fk(CHOICE)e Fr(t)m(yp)s(e,)42 b(the)d(assignmen)m(t)h(\014le)f(ma)m(y)h (b)s(e)e(lik)m(e)j(\(using)e(the)150 1958 y(t)m(yp)s(es)30 b(de\014ned)g(in)g Fk(pkix.asn)p Fr(\):)150 2092 y Fk(elt)47 b(PKIX1Implicit88.GeneralN)o(ame)150 2311 y('')286 b(dNSName)150 2421 y(dNSName)46 b(example.org)150 2653 y Fq(3.3)68 b(In)l(v)l(oking)46 b(asn1Deco)t(ding)150 2813 y Fk(asn1Decoding)20 b Fr(generates)25 b(an)f(ASN.1)g(structure)g(from)f(a)h(\014le)g(with)f (ASN.1)h(de\014nitions)f(and)h(a)g(binary)150 2922 y(\014le)30 b(with)h(a)f(DER)h(enco)s(ding.)150 3057 y Fk(Usage:)94 b(asn1Decoding)44 b([options])i(file1)g(file2)g(type)198 3166 y(file1)g(:)i(file)e(with)h(ASN1)f(definitions.)198 3276 y(file2)g(:)i(binary)e(file)g(with)h(a)g(DER)g(encoding.)198 3386 y(type)f(:)i(ASN1)e(definition)f(name.)150 3495 y(Options:)198 3605 y(-h)i(:)g(shows)g(the)g(help)f(message.)198 3714 y(-v)h(:)g(shows)g(version)f(information)e(and)j(exit.)198 3824 y(-o)g(file)g(:)g(output)f(file.)275 3958 y Fr(F)-8 b(or)47 b(example,)52 b(after)47 b(generating)h(the)f Fk(assign.out)d Fr(\014le)j(from)f(the)h(example)g(section)h(of)f(the) 150 4068 y Fk(asn1Coding)28 b Fr(command)i(ab)s(o)m(v)m(e,)i(the)e (follo)m(wing)i(in)m(v)m(o)s(cation)g(will)f(deco)s(de)g(the)f(DER)h (data.)150 4203 y Fk($)47 b(asn1Decoding)e(pkix.asn)g(assign.out)g (PKIX1.Dss-Sig-Value)p eop end %%Page: 7 10 TeXDict begin 7 9 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2359 b(7)150 299 y Fn(4)80 b(F)-13 b(unction)52 b(reference)150 682 y Fq(4.1)68 b(ASN.1)45 b(sc)l(hema)g(functions)150 906 y Fj(asn1)p 396 906 37 5 v 55 w(parser2tree)3350 1117 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_parser2tree)e Fh(\()p Fg(const)31 b(c)m(har)g(*)f Ff(file)p Fg(,)i(asn1)p 2238 1117 28 4 v 40 w(no)s(de)e(*)h Ff(definitions)p Fg(,)565 1227 y(c)m(har)g(*)g Ff(error_desc)p Fh(\))390 1336 y Fg(\014le)5 b Fr(:)41 b(sp)s(ecify)30 b(the)g(path)h(and)e(the)i(name)f (of)h(\014le)f(that)h(con)m(tains)h(ASN.1)f(declarations.)390 1485 y Fg(de\014nitions)t Fr(:)36 b(return)21 b(the)h(p)s(oin)m(ter)g (to)g(the)g(structure)g(created)h(from)e Fk(")p Fr(\014le)p Fk(")h Fr(ASN.1)g(declarations.)390 1634 y Fg(error)p 589 1634 V 40 w(desc)6 b Fr(:)40 b(return)29 b(the)i(error)f (description)g(or)h(an)f(empt)m(y)h(string)f(if)g(success.)390 1784 y(F)-8 b(unction)28 b(used)f(to)i(start)f(the)g(parse)g (algorithm.)41 b(Creates)28 b(the)g(structures)f(needed)g(to)i(manage) 390 1893 y(the)i(de\014nitions)e(included)h(in)g Fk(file)f Fr(\014le.)390 2042 y Fe(Returns:)39 b Fk(ASN1_SUCCESS)26 b Fr(if)i(the)h(\014le)g(has)f(a)h(correct)g(syn)m(tax)h(and)e(ev)m (ery)h(iden)m(ti\014er)g(is)f(kno)m(wn,)390 2152 y Fk (ASN1_ELEMENT_NOT_EMPTY)35 b Fr(if)41 b Fk(definitions)c Fr(not)k Fk(NULL)f Fr(,)k Fk(ASN1_FILE_NOT_FOUND)35 b Fr(if)41 b(an)390 2261 y(error)32 b(o)s(ccured)g(while)g(op)s(ening)g Fk(file)f Fr(,)h Fk(ASN1_SYNTAX_ERROR)c Fr(if)k(the)g(syn)m(tax)h(is)f (not)h(correct,)390 2371 y Fk(ASN1_IDENTIFIER_NOT_FOUN)o(D)c Fr(if)35 b(in)f(the)h(\014le)g(there)h(is)f(an)f(iden)m(ti\014er)h (that)h(is)f(not)g(de\014ned,)390 2480 y Fk(ASN1_NAME_TOO_LONG)27 b Fr(if)32 b(in)g(the)g(\014le)g(there)g(is)g(an)g(iden)m(ti\014er)g (whith)g(more)g(than)f Fk(ASN1_MAX_)390 2590 y(NAME_SIZE)d Fr(c)m(haracters.)150 2804 y Fj(asn1)p 396 2804 37 5 v 55 w(parser2arra)m(y)3350 3015 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_parser2array)e Fh(\()p Fg(const)31 b(c)m(har)g(*)g Ff(inputFileName)p Fg(,)j(const)d(c)m(har)g(*)565 3125 y Ff(outputFileName)p Fg(,)k(const)c(c)m(har)g(*)f Ff(vectorName)p Fg(,)k(c)m(har)d(*)f Ff(error_desc)p Fh(\))390 3234 y Fg(inputFileName)5 b Fr(:)49 b(sp)s(ecify)34 b(the)g(path)g(and)f(the)h(name)g(of)g(\014le)g(that)h(con)m(tains)g (ASN.1)g(declara-)390 3344 y(tions.)390 3493 y Fg(outputFileName)5 b Fr(:)41 b(sp)s(ecify)27 b(the)h(path)f(and)g(the)h(name)f(of)h (\014le)g(that)g(will)g(con)m(tain)h(the)e(C)g(v)m(ector)390 3603 y(de\014nition.)390 3752 y Fg(v)m(ectorName)5 b Fr(:)43 b(sp)s(ecify)30 b(the)h(name)f(of)h(the)f(C)g(v)m(ector.)390 3901 y Fg(error)p 589 3901 28 4 v 40 w(desc)6 b Fr(:)40 b(return)29 b(the)i(error)f(description)g(or)h(an)f(empt)m(y)h(string)f (if)g(success.)390 4050 y(F)-8 b(unction)42 b(that)g(generates)h(a)e(C) g(structure)g(from)g(an)g(ASN1)h(\014le.)73 b(Creates)42 b(a)g(\014le)f(con)m(tain-)390 4159 y(ing)k(a)h(C)f(v)m(ector)i(to)e (use)g(to)h(manage)g(the)g(de\014nitions)f(included)f(in)h Fk(inputFileName)d Fr(\014le.)390 4269 y(If)i Fk(inputFileName)e Fr(is)i Fk(")p Fr(/aa/bb/xx.yy)p Fk(")i Fr(and)e Fk(outputFileName)d Fr(is)k Fk(NULL)f Fr(,)k(the)d(\014le)g(cre-)390 4378 y(ated)g(is)f Fk(")p Fr(/aa/bb/xx)p 1188 4378 V 41 w(asn1)p 1406 4378 V 40 w(tab.c)p Fk(")p Fr(.)83 b(If)43 b Fk(vectorName)f Fr(is)i Fk(NULL)f Fr(the)h(v)m(ector)i(name)e(will)h(b)s(e)390 4488 y Fk(")p Fr(xx)p 540 4488 V 40 w(asn1)p 757 4488 V 40 w(tab)p Fk(")p Fr(.)390 4637 y Fe(Returns:)39 b Fk(ASN1_SUCCESS)26 b Fr(if)i(the)h(\014le)g(has)f(a)h(correct)g(syn)m (tax)h(and)e(ev)m(ery)h(iden)m(ti\014er)g(is)f(kno)m(wn,)390 4747 y Fk(ASN1_FILE_NOT_FOUND)39 b Fr(if)45 b(an)f(error)g(o)s(ccured)h (while)f(op)s(ening)g Fk(inputFileName)d Fr(,)48 b Fk(ASN1_)390 4856 y(SYNTAX_ERROR)23 b Fr(if)k(the)f(syn)m(tax)i(is)e(not)h(correct,) i Fk(ASN1_IDENTIFIER_NOT_FOU)o(ND)20 b Fr(if)27 b(in)f(the)h(\014le)390 4966 y(there)35 b(is)g(an)g(iden)m(ti\014er)g(that)g(is)g(not)g (de\014ned,)g Fk(ASN1_NAME_TOO_LONG)30 b Fr(if)35 b(in)g(the)g(\014le)g (there)g(is)390 5075 y(an)30 b(iden)m(ti\014er)h(whith)e(more)i(than)f Fk(ASN1_MAX_NAME_SIZE)25 b Fr(c)m(haracters.)150 5330 y Fq(4.2)68 b(ASN.1)45 b(\014eld)g(functions)p eop end %%Page: 8 11 TeXDict begin 8 10 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2359 b(8)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(arra)m(y2tree)3350 517 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_array2tree)d Fh(\()p Fg(const)31 b(asn1)p 1645 517 28 4 v 41 w(static)p 1902 517 V 41 w(no)s(de)f(*)h Ff(array)p Fg(,)h(asn1)p 2733 517 V 40 w(no)s(de)e(*)565 626 y Ff(definitions)p Fg(,)k(c)m(har)d(*)g Ff(errorDescription)p Fh(\))390 736 y Fg(arra)m(y)8 b Fr(:)41 b(sp)s(ecify)30 b(the)h(arra)m(y)f(that)h(con)m(tains)h(ASN.1)f (declarations)390 891 y Fg(de\014nitions)t Fr(:)44 b(return)31 b(the)h(p)s(oin)m(ter)h(to)g(the)f(structure)g(created)h(b)m(y)f(*ARRA) -8 b(Y)34 b(ASN.1)f(declara-)390 1001 y(tions)390 1156 y Fg(errorDescription)p Fr(:)41 b(return)30 b(the)g(error)g (description.)390 1312 y(Creates)38 b(the)g(structures)f(needed)h(to)g (manage)h(the)f(ASN.1)g(de\014nitions.)62 b Fk(array)36 b Fr(is)i(a)g(v)m(ector)390 1421 y(created)31 b(b)m(y)g Fk(asn1_parser2array\(\))25 b Fr(.)390 1577 y Fe(Returns:)37 b Fk(ASN1_SUCCESS)20 b Fr(if)k(structure)f(w)m(as)h(created)h (correctly)-8 b(,)27 b Fk(ASN1_ELEMENT_NOT_EMPTY)390 1686 y Fr(if)34 b(*)g Fk(definitions)d Fr(not)j(NULL,)g Fk(ASN1_IDENTIFIER_NOT_FOUND)27 b Fr(if)34 b(in)g(the)g(\014le)g(there) g(is)g(an)390 1796 y(iden)m(ti\014er)k(that)h(is)f(not)h(de\014ned)e (\(see)i Fk(errorDescription)34 b Fr(for)k(more)g(information\),)j Fk(ASN1_)390 1906 y(ARRAY_ERROR)27 b Fr(if)k(the)f(arra)m(y)h(p)s(oin)m (ted)f(b)m(y)h Fk(array)e Fr(is)h(wrong.)150 2126 y Fj(asn1)p 396 2126 37 5 v 55 w(delete)p 769 2126 V 54 w(structure)3350 2344 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_delete_structure)f Fh(\()p Fg(asn1)p 1721 2344 28 4 v 41 w(no)s(de)29 b(*)i Ff(structure)p Fh(\))390 2453 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f(structure)g(that)h(y)m(ou)g(w)m(an)m(t) g(to)g(delete.)390 2609 y(Deletes)h(the)f(structure)f(*)h Fk(structure)c Fr(.)41 b(A)m(t)31 b(the)g(end,)f(*)h Fk(structure)d Fr(is)i(set)h(to)g(NULL.)390 2764 y Fe(Returns:)41 b Fk(ASN1_SUCCESS)27 b Fr(if)k(successful,)g Fk(ASN1_ELEMENT_NOT_FOUND) 25 b Fr(if)30 b(*)h Fk(structure)e Fr(w)m(as)390 2874 y(NULL.)150 3094 y Fj(asn1)p 396 3094 37 5 v 55 w(delete)p 769 3094 V 54 w(structure2)3350 3312 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_delete_structure)q(2)e Fh(\()p Fg(asn1)p 1773 3312 28 4 v 41 w(no)s(de)30 b(*)g Ff(structure)p Fg(,)k(unsigned)29 b(in)m(t)565 3421 y Ff(flags)p Fh(\))390 3531 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f (structure)g(that)h(y)m(ou)g(w)m(an)m(t)g(to)g(delete.)390 3686 y Fg(\015ags)t Fr(:)41 b(additional)31 b(\015ags)g(\(see)g Fk(ASN1_DELETE_FLAG)26 b Fr(\))390 3842 y(Deletes)32 b(the)f(structure)f(*)h Fk(structure)c Fr(.)41 b(A)m(t)31 b(the)g(end,)f(*)h Fk(structure)d Fr(is)i(set)h(to)g(NULL.)390 3997 y Fe(Returns:)41 b Fk(ASN1_SUCCESS)27 b Fr(if)k(successful,)g Fk(ASN1_ELEMENT_NOT_FOUND)25 b Fr(if)30 b(*)h Fk(structure)e Fr(w)m(as)390 4107 y(NULL.)150 4327 y Fj(asn1)p 396 4327 37 5 v 55 w(delete)p 769 4327 V 54 w(elemen)m(t)3350 4545 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_delete_element)e Fh(\()p Fg(asn1)p 1616 4545 28 4 v 41 w(no)s(de)30 b Ff(structure)p Fg(,)j(const)e(c)m(har)g(*)565 4654 y Ff(element_name)p Fh(\))390 4764 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f(structure)g(that)h(con)m(tains)h(the)e (elemen)m(t)i(y)m(ou)f(w)m(an)m(t)g(to)g(delete.)390 4919 y Fg(elemen)m(t)p 700 4919 V 42 w(name)5 b Fr(:)40 b(elemen)m(t's)32 b(name)f(y)m(ou)g(w)m(an)m(t)g(to)g(delete.)390 5075 y(Deletes)h(the)f(elemen)m(t)h(named)e(*)h Fk(element_name)c Fr(inside)j(*)g Fk(structure)e Fr(.)390 5230 y Fe(Returns:)37 b Fk(ASN1_SUCCESS)19 b Fr(if)k(successful,)i Fk(ASN1_ELEMENT_NOT_FOUND) 17 b Fr(if)23 b(the)g Fk(element_name)390 5340 y Fr(w)m(as)31 b(not)f(found.)p eop end %%Page: 9 12 TeXDict begin 9 11 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2359 b(9)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(create)p 776 299 V 53 w(elemen)m(t)3350 492 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_create_element)e Fh(\()p Fg(asn1)p 1616 492 28 4 v 41 w(no)s(de)30 b Ff(definitions)p Fg(,)k(const)d(c)m(har)f(*)565 602 y Ff(source_name)p Fg(,)k(asn1)p 1379 602 V 40 w(no)s(de)c(*)h Ff(element)p Fh(\))390 712 y Fg(de\014nitions)t Fr(:)40 b(p)s(oin)m(ter)30 b(to)h(the)g(structure)f(returned)f(b)m(y)h Fk(")p Fr(parser)p 2633 712 V 40 w(asn1)p Fk(")g Fr(function)390 845 y Fg(source)p 644 845 V 40 w(name)5 b Fr(:)39 b(the)25 b(name)g(of)g(the)h(t)m(yp)s (e)f(of)h(the)f(new)g(structure)f(\(m)m(ust)i(b)s(e)e(inside)h(p)p 3296 845 V 40 w(structure\).)390 977 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(the)f(structure)g(created.)390 1110 y(Creates)h(a)g(structure)f(of)g(t)m(yp)s(e)h Fk(source_name)c Fr(.)41 b(Example)30 b(using)g Fk(")p Fr(pkix.asn)p Fk(")p Fr(:)390 1243 y(rc)g(=)g(asn1)p 780 1243 V 41 w(create)p 1057 1243 V 41 w(elemen)m(t\(cert)p 1588 1243 V 43 w(def,)g Fk(")p Fr(PKIX1.Certi\014cate)p Fk(")p Fr(,)i(certptr\);)390 1376 y Fe(Returns:)53 b Fk(ASN1_SUCCESS)34 b Fr(if)i(creation)i(OK,)f Fk(ASN1_ELEMENT_NOT_FOUND)30 b Fr(if)37 b Fk(source_name)390 1486 y Fr(is)30 b(not)h(kno)m(wn.)150 1682 y Fj(asn1)p 396 1682 37 5 v 55 w(prin)m(t)p 716 1682 V 54 w(structure)3350 1875 y Fr([F)-8 b(unction])-3599 b Fi(void)54 b(asn1_print_structure)d Fh(\()p Fg(FILE)31 b(*)f Ff(out)p Fg(,)i(asn1)p 2251 1875 28 4 v 40 w(no)s(de)e Ff(structure)p Fg(,)565 1985 y(const)h(c)m(har)g(*)f Ff(name)p Fg(,)i(in)m(t)f Ff(mode)p Fh(\))390 2095 y Fg(out)r Fr(:)41 b(p)s(oin)m(ter)30 b(to)h(the)g(output)f(\014le)g(\(e.g.)43 b(stdout\).)390 2228 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f (structure)g(that)h(y)m(ou)g(w)m(an)m(t)g(to)g(visit.)390 2360 y Fg(name)5 b Fr(:)41 b(an)30 b(elemen)m(t)i(of)f(the)f(structure) 390 2493 y Fg(mo)s(de)5 b Fr(:)40 b(sp)s(ecify)30 b(ho)m(w)h(m)m(uc)m (h)f(of)h(the)f(structure)g(to)h(prin)m(t,)f(can)h(b)s(e)f Fk(ASN1_PRINT_NAME)c Fr(,)k Fk(ASN1_)390 2603 y(PRINT_NAME_TYPE)c Fr(,)31 b Fk(ASN1_PRINT_NAME_TYPE_VA)o(LUE)24 b Fr(,)31 b(or)f Fk(ASN1_PRINT_ALL)c Fr(.)390 2736 y(Prin)m(ts)33 b(on)g(the)g Fk(out)f Fr(\014le)h(descriptor)f(the)h(structure's)g (tree)h(starting)f(from)g(the)g Fk(name)e Fr(elemen)m(t)390 2845 y(inside)f(the)h(structure)f Fk(structure)d Fr(.)150 3042 y Fj(asn1)p 396 3042 37 5 v 55 w(n)m(um)m(b)s(er)p 860 3042 V 54 w(of)p 1012 3042 V 55 w(elemen)m(ts)3350 3235 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_number_of_elemen)q (ts)f Fh(\()p Fg(asn1)p 1826 3235 28 4 v 40 w(no)s(de)30 b Ff(element)p Fg(,)j(const)e(c)m(har)f(*)565 3345 y Ff(name)p Fg(,)i(in)m(t)f(*)g Ff(num)p Fh(\))390 3454 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(the)f(ro)s(ot)h(of) f(an)h(ASN1)f(structure.)390 3587 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(a)h(sub-structure)e(of)i(R)m(OOT.)390 3720 y Fg(n)m(um)p Fr(:)40 b(p)s(oin)m(ter)30 b(to)h(an)g(in)m(teger)g (where)f(the)h(result)f(will)h(b)s(e)f(stored)390 3853 y(Coun)m(ts)e(the)h(n)m(um)m(b)s(er)e(of)h(elemen)m(ts)i(of)f(a)f (sub-structure)f(called)j(NAME)f(with)f(names)g(equal)h(to)390 3963 y Fk(")p Fr(?1)p Fk(")p Fr(,)p Fk(")p Fr(?2)p Fk(")p Fr(,)h(...)390 4096 y Fe(Returns:)36 b Fk(ASN1_SUCCESS)18 b Fr(if)k(successful,)h Fk(ASN1_ELEMENT_NOT_FOUND)15 b Fr(if)22 b Fk(name)e Fr(is)h(not)h(kno)m(wn,)390 4205 y Fk(ASN1_GENERIC_ERROR)j Fr(if)31 b(p)s(oin)m(ter)f Fk(num)g Fr(is)g Fk(NULL)f Fr(.)150 4401 y Fj(asn1)p 396 4401 37 5 v 55 w(\014nd)p 655 4401 V 54 w(structure)p 1200 4401 V 54 w(from)p 1504 4401 V 55 w(oid)3350 4595 y Fr([F)-8 b(unction])-3599 b Fi(const)54 b(char)f(*)g (asn1_find_structure_fr)q(om_)q(oid)f Fh(\()p Fg(asn1)p 2558 4595 28 4 v 41 w(no)s(de)565 4704 y Ff(definitions)p Fg(,)34 b(const)d(c)m(har)g(*)f Ff(oidValue)p Fh(\))390 4814 y Fg(de\014nitions)t Fr(:)40 b(ASN1)31 b(de\014nitions)390 4947 y Fg(oidV)-8 b(alue)5 b Fr(:)42 b(v)-5 b(alue)31 b(of)g(the)f(OID)g(to)i(searc)m(h)f(\(e.g.)42 b Fk(")p Fr(1.2.3.4)p Fk(")p Fr(\).)390 5080 y(Searc)m(h)31 b(the)f(structure)g (that)h(is)g(de\014ned)e(just)g(after)i(an)g(OID)f(de\014nition.)390 5213 y Fe(Returns:)41 b Fk(NULL)29 b Fr(when)h Fk(oidValue)e Fr(not)j(found,)e(otherwise)i(the)g(p)s(oin)m(ter)g(to)g(a)g(constan)m (t)h(string)390 5322 y(that)f(con)m(tains)h(the)e(elemen)m(t)i(name)e (de\014ned)g(just)f(after)i(the)g(OID.)p eop end %%Page: 10 13 TeXDict begin 10 12 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(10)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(cop)m(y)p 697 299 V 53 w(no)s(de)3350 496 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_copy_node)d Fh(\()p Fg(asn1)p 1355 496 28 4 v 41 w(no)s(de)29 b Ff(dst)p Fg(,)j(const)f(c)m(har)f(*)h Ff(dst_name)p Fg(,)565 605 y(asn1)p 748 605 V 40 w(no)s(de)f Ff(src)p Fg(,)i(const)e(c)m(har)h(*)g Ff(src_name)p Fh(\))390 715 y Fg(dst)r Fr(:)40 b(Destination)32 b(asn1)p 1251 715 V 41 w(no)s(de)d(no)s(de.)390 850 y Fg(dst)p 518 850 V 40 w(name)5 b Fr(:)41 b(Field)31 b(name)f(in)g (destination)h(no)s(de.)390 984 y Fg(src)6 b Fr(:)40 b(Source)30 b(asn1)p 1049 984 V 40 w(no)s(de)g(no)s(de.)390 1119 y Fg(src)p 508 1119 V 40 w(name)5 b Fr(:)41 b(Field)31 b(name)f(in)g(source)h(no)s(de.)390 1254 y(Create)g(a)g(deep)f(cop)m(y) h(of)g(a)f(asn1)p 1545 1254 V 41 w(no)s(de)f(v)-5 b(ariable.)390 1389 y Fe(Returns:)40 b Fr(Return)30 b Fk(ASN1_SUCCESS)d Fr(on)j(success.)150 1588 y Fj(asn1)p 396 1588 37 5 v 55 w(write)p 728 1588 V 53 w(v)-7 b(alue)3350 1785 y Fr([F)f(unction])-3599 b Fi(int)53 b(asn1_write_value)e Fh(\()p Fg(asn1)p 1460 1785 28 4 v 40 w(no)s(de)30 b Ff(node_root)p Fg(,)j(const)e(c)m(har)g(*)g Ff(name)p Fg(,)565 1895 y(const)g(v)m(oid)g(*)g Ff(ivalue)p Fg(,)h(in)m(t)f Ff(len)p Fh(\))390 2004 y Fg(no)s(de)p 586 2004 V 39 w(ro)s(ot)r Fr(:)41 b(p)s(oin)m(ter)31 b(to)g(a)g(structure)390 2139 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h (inside)e(the)g(structure)g(that)h(y)m(ou)g(w)m(an)m(t)g(to)g(set.)390 2274 y Fg(iv)-5 b(alue)5 b Fr(:)45 b(v)m(ector)34 b(used)e(to)h(sp)s (ecify)f(the)g(v)-5 b(alue)33 b(to)g(set.)47 b(If)32 b(len)g(is)h Fk(>)p Fr(0,)g(V)-10 b(ALUE)32 b(m)m(ust)g(b)s(e)g(a)g(t)m (w)m(o's)390 2383 y(complemen)m(t)k(form)e(in)m(teger.)56 b(if)35 b(len=0)g(*V)-10 b(ALUE)35 b(m)m(ust)g(b)s(e)f(a)h(n)m(ull)g (terminated)g(string)g(with)390 2493 y(an)30 b(in)m(teger)i(v)-5 b(alue.)390 2628 y Fg(len)p Fr(:)53 b(n)m(um)m(b)s(er)35 b(of)i(b)m(ytes)g(of)g(*v)-5 b(alue)38 b(to)f(use)f(to)h(set)h(the)e(v) -5 b(alue:)54 b(v)-5 b(alue[0]..v)g(alue[len-1])40 b(or)d(0)g(if)390 2737 y(v)-5 b(alue)31 b(is)f(a)h(n)m(ull)f(terminated)h(string)390 2872 y(Set)g(the)f(v)-5 b(alue)31 b(of)g(one)f(elemen)m(t)i(inside)e(a) h(structure.)390 3007 y(If)23 b(an)g(elemen)m(t)i(is)e(OPTIONAL)f(and)g (y)m(ou)i(w)m(an)m(t)g(to)g(delete)g(it,)i(y)m(ou)d(m)m(ust)g(use)g (the)h(v)-5 b(alue=NULL)390 3116 y(and)30 b(len=0.)41 b(Using)30 b Fk(")p Fr(pkix.asn)p Fk(")p Fr(:)390 3251 y(result=asn1)p 867 3251 V 40 w(write)p 1109 3251 V 40 w(v)-5 b(alue\(cert,)32 b Fk(")p Fr(tbsCerti\014cate.issuerUniqueID)p Fk(")p Fr(,)f(NULL,)g(0\);)390 3386 y(Description)g(for)f(eac)m(h)i(t)m (yp)s(e:)390 3520 y Fe(INTEGER:)f Fr(V)-10 b(ALUE)30 b(m)m(ust)g(con)m(tain)i(a)f(t)m(w)m(o's)h(complemen)m(t)f(form)f(in)m (teger.)390 3655 y(v)-5 b(alue[0]=0xFF)52 b(,)e(len=1)g(-)p Fk(>)g Fr(in)m(teger=-1.)101 b(v)-5 b(alue[0]=0xFF)52 b(v)-5 b(alue[1]=0xFF)52 b(,)e(len=2)g(-)p Fk(>)390 3765 y Fr(in)m(teger=-1.)85 b(v)-5 b(alue[0]=0x01)46 b(,)i(len=1)d(-)p Fk(>)f Fr(in)m(teger=)i(1.)83 b(v)-5 b(alue[0]=0x00)47 b(v)-5 b(alue[1]=0x01)47 b(,)390 3874 y(len=2)31 b(-)p Fk(>)f Fr(in)m(teger=)h(1.)42 b(v)-5 b(alue=)p Fk(")p Fr(123)p Fk(")31 b Fr(,)f(len=0)h(-)p Fk(>)f Fr(in)m(teger=)i(123.)390 4009 y Fe(ENUMERA)-8 b(TED:)30 b Fr(As)g(INTEGER)g(\(but)g(only)h(with) f(not)g(negativ)m(e)j(n)m(um)m(b)s(ers\).)390 4144 y Fe(BOOLEAN:)g Fr(V)-10 b(ALUE)35 b(m)m(ust)f(b)s(e)f(the)i(n)m(ull)f (terminated)g(string)h Fk(")p Fr(TR)m(UE)p Fk(")e Fr(or)h Fk(")p Fr(F)-10 b(ALSE)p Fk(")34 b Fr(and)390 4253 y(LEN)c(!=)g(0.)390 4388 y(v)-5 b(alue=)p Fk(")p Fr(TR)m(UE)p Fk(")88 b Fr(,)103 b(len=1)89 b(-)p Fk(>)g Fr(b)s(o)s(olean=TR)m(UE.)f(v)-5 b(alue=)p Fk(")p Fr(F)-10 b(ALSE)p Fk(")88 b Fr(,)103 b(len=1)89 b(-)p Fk(>)390 4497 y Fr(b)s(o)s(olean=F)-10 b(ALSE.)390 4632 y(OBJECT)26 b(IDENTIFIER:)h(V)-10 b(ALUE)27 b(m)m(ust)g(b)s(e)g(a)g(n)m(ull)g(terminated)h(string)f(with)g(eac)m(h) h(n)m(um)m(b)s(er)390 4742 y(separated)j(b)m(y)f(a)h(dot)f(\(e.g.)43 b Fk(")p Fr(1.2.3.543.1)p Fk(")p Fr(\).)h(LEN)30 b(!=)h(0.)390 4876 y(v)-5 b(alue=)p Fk(")p Fr(1)31 b(2)f(840)i(10040)h(4)d(3)p Fk(")h Fr(,)g(len=1)f(-)p Fk(>)g Fr(OID=dsa-with-sha.)390 5011 y Fe(UTCTime:)84 b Fr(V)-10 b(ALUE)53 b(m)m(ust)f(b)s(e)f(a)i(n)m (ull)f(terminated)g(string)g(in)g(one)h(of)f(these)g(formats:)390 5121 y Fk(")p Fr(YYMMDDhhmmssZ)p Fk(")p Fr(,)118 b Fk(")p Fr(YYMMDDhhmmssZ)p Fk(")p Fr(,)g Fk(")p Fr(YYMMDDhhmmss)p Fk(+)p Fr(hh'mm')p Fk(")p Fr(,)390 5230 y Fk(")p Fr (YYMMDDhhmmss-hh'mm')p Fk(")p Fr(,)40 b Fk(")p Fr(YYMMDDhhmm)p Fk(+)p Fr(hh'mm')p Fk(")p Fr(,)g(or)f Fk(")p Fr(YYMMDDhhmm-)390 5340 y(hh'mm')p Fk(")p Fr(.)g(LEN)31 b(!=)f(0.)p eop end %%Page: 11 14 TeXDict begin 11 13 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(11)390 299 y(v)-5 b(alue=)p Fk(")p Fr(9801011200Z)p Fk(")43 b Fr(,)f(len=1)e(-)p Fk(>)f Fr(time=Jann)m(uary)g(1st,)k(1998)e(at)f(12h)g(00m)g(Green)m (wic)m(h)390 408 y(Mean)31 b(Time)390 543 y Fe(GeneralizedTime:)94 b Fr(V)-10 b(ALUE)56 b(m)m(ust)f(b)s(e)h(in)f(one)h(of)g(this)g (format:)92 b Fk(")p Fr(YYYYMMDDhh-)390 653 y(mmss.sZ)p Fk(")p Fr(,)185 b Fk(")p Fr(YYYYMMDDhhmmss.sZ)p Fk(")p Fr(,)h Fk(")p Fr(YYYYMMDDhhmmss.s)p Fk(+)p Fr(hh'mm')p Fk(")p Fr(,)390 762 y Fk(")p Fr(YYYYMMDDhhmmss.s-hh'mm')p Fk(")p Fr(,)279 b Fk(")p Fr(YYYYMMDDhhmm)p Fk(+)p Fr(hh'mm')p Fk(")p Fr(,)g(or)390 872 y Fk(")p Fr(YYYYMMDDhhmm-hh'mm')p Fk(")36 b Fr(where)h(ss.s)f(indicates)i(the)f(seconds)f(with)h(an)m(y)g (precision)390 982 y(lik)m(e)32 b Fk(")p Fr(10.1)p Fk(")f Fr(or)f Fk(")p Fr(01.02)p Fk(")p Fr(.)43 b(LEN)30 b(!=)g(0)390 1117 y(v)-5 b(alue=)p Fk(")p Fr(2001010112001.1)q(2-0)q(70)q(0)p Fk(")50 b Fr(,)e(len=1)c(-)p Fk(>)h Fr(time=Jann)m(uary)e(1st,)49 b(2001)d(at)f(12h)f(00m)390 1226 y(01.12s)32 b(P)m(aci\014c)g(Da)m (yligh)m(t)h(Time)390 1361 y(OCTET)22 b(STRING:)h(V)-10 b(ALUE)23 b(con)m(tains)h(the)g(o)s(ctet)g(string)g(and)e(LEN)h(is)h (the)f(n)m(um)m(b)s(er)f(of)h(o)s(ctets.)390 1496 y(v)-5 b(alue=)p Fk(")p Fr($)p Fk(\\)p Fr(bac)m(kslash$x01$)p Fk(\\)p Fr(bac)m(kslash$x02$)p Fk(\\)p Fr(bac)m(kslash$x03)q Fk(")62 b Fr(,)g(len=3)57 b(-)p Fk(>)f Fr(three)g(b)m(ytes)390 1605 y(o)s(ctet)32 b(string)390 1740 y Fe(GeneralString:)42 b Fr(V)-10 b(ALUE)30 b(con)m(tains)h(the)g(generalstring)g(and)f(LEN)g (is)g(the)g(n)m(um)m(b)s(er)f(of)h(o)s(ctets.)390 1875 y(v)-5 b(alue=)p Fk(")p Fr($)p Fk(\\)p Fr(bac)m(kslash$x01$)p Fk(\\)p Fr(bac)m(kslash$x02$)p Fk(\\)p Fr(bac)m(kslash$x03)q Fk(")62 b Fr(,)g(len=3)57 b(-)p Fk(>)f Fr(three)g(b)m(ytes)390 1985 y(generalstring)390 2120 y(BIT)39 b(STRING:)g(V)-10 b(ALUE)39 b(con)m(tains)h(the)g(bit)f(string)g(organized)h(b)m(y)f(b)m (ytes)h(and)f(LEN)g(is)g(the)390 2229 y(n)m(um)m(b)s(er)29 b(of)i(bits.)390 2364 y(v)-5 b(alue=)p Fk(")p Fr($)p Fk(\\)p Fr(bac)m(kslash$xCF)p Fk(")31 b Fr(,)g(len=6)g(-)p Fk(>)f Fr(bit)g(string=)p Fk(")p Fr(110011)p Fk(")j Fr(\(six)d(bits\)) 390 2499 y Fe(CHOICE:)f Fr(if)g(NAME)g(indicates)h(a)g(c)m(hoice)g(t)m (yp)s(e,)g(V)-10 b(ALUE)29 b(m)m(ust)g(sp)s(ecify)g(one)g(of)g(the)h (alterna-)390 2608 y(tiv)m(es)i(with)e(a)g(n)m(ull)h(terminated)g (string.)40 b(LEN)31 b(!=)f(0.)41 b(Using)30 b Fk(")p Fr(pkix.asn)p Fk("\\)p Fr(:)390 2743 y(result=asn1)p 867 2743 28 4 v 40 w(write)p 1109 2743 V 40 w(v)-5 b(alue\(cert,)74 b Fk(")p Fr(certi\014cate1.tbsCerti\014cate.sub)5 b(ject)p Fk(")p Fr(,)76 b Fk(")p Fr(rdnSequence)p Fk(")p Fr(,)390 2853 y(1\);)390 2988 y Fe(ANY:)30 b Fr(V)-10 b(ALUE)31 b(indicates)g(the)f(der)g(enco)s(ding)h(of)f(a)h(structure.)40 b(LEN)30 b(!=)h(0.)390 3123 y(SEQUENCE)i(OF:)h(V)-10 b(ALUE)34 b(m)m(ust)g(b)s(e)g(the)g(n)m(ull)g(terminated)h(string)f Fk(")p Fr(NEW)p Fk(")g Fr(and)f(LEN)h(!=)390 3232 y(0.)46 b(With)32 b(this)g(instruction)g(another)g(elemen)m(t)i(is)e(app)s (ended)e(in)h(the)i(sequence.)45 b(The)32 b(name)g(of)390 3342 y(this)e(elemen)m(t)i(will)f(b)s(e)f Fk(")p Fr(?1)p Fk(")g Fr(if)g(it's)h(the)g(\014rst)e(one,)i Fk(")p Fr(?2)p Fk(")f Fr(for)g(the)h(second)f(and)g(so)h(on.)390 3477 y(Using)g Fk(")p Fr(pkix.asn)p Fk("\\)p Fr(:)390 3611 y(result=asn1)p 867 3611 V 40 w(write)p 1109 3611 V 40 w(v)-5 b(alue\(cert,)241 b Fk(")p Fr (certi\014cate1.tbsCerti\014cate.sub)5 b(ject.rdnSequence)p Fk(")p Fr(,)390 3721 y Fk(")p Fr(NEW)p Fk(")p Fr(,)30 b(1\);)390 3856 y(SET)f(OF:)i(the)g(same)f(as)h(SEQUENCE)e(OF.)i(Using) f Fk(")p Fr(pkix.asn)p Fk(")p Fr(:)390 3991 y(result=asn1)p 867 3991 V 40 w(write)p 1109 3991 V 40 w(v)-5 b(alue\(cert,)25 b Fk(")p Fr(tbsCerti\014cate.sub)5 b(ject.rdnSequence.?LAST)p Fk(")p Fr(,)22 b Fk(")p Fr(NEW)p Fk(")p Fr(,)390 4100 y(1\);)390 4235 y Fe(Returns:)38 b Fk(ASN1_SUCCESS)21 b Fr(if)k(the)g(v)-5 b(alue)26 b(w)m(as)f(set,)i Fk (ASN1_ELEMENT_NOT_FOUND)19 b Fr(if)25 b Fk(name)f Fr(is)h(not)390 4345 y(a)31 b(v)-5 b(alid)30 b(elemen)m(t,)j(and)c Fk (ASN1_VALUE_NOT_VALID)c Fr(if)31 b Fk(ivalue)d Fr(has)i(a)h(wrong)f (format.)150 4544 y Fj(asn1)p 396 4544 37 5 v 55 w(read)p 685 4544 V 54 w(v)-7 b(alue)3350 4742 y Fr([F)f(unction])-3599 b Fi(int)53 b(asn1_read_value)d Fh(\()p Fg(asn1)p 1407 4742 28 4 v 41 w(no)s(de)30 b Ff(root)p Fg(,)h(const)g(c)m(har)g(*)g Ff(name)p Fg(,)g(v)m(oid)g(*)565 4851 y Ff(ivalue)p Fg(,)h(in)m(t)f(*)g Ff(len)p Fh(\))390 4961 y Fg(ro)s(ot)r Fr(:)41 b(p)s(oin)m(ter)30 b(to)i(a)e(structure.)390 5096 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h(inside)e(a)h(structure)f (that)h(y)m(ou)f(w)m(an)m(t)h(to)h(read.)390 5230 y Fg(iv)-5 b(alue)5 b Fr(:)45 b(v)m(ector)34 b(that)e(will)h(con)m(tain)g(the)g (elemen)m(t's)g(con)m(ten)m(t,)i(m)m(ust)d(b)s(e)g(a)g(p)s(oin)m(ter)g (to)h(memory)390 5340 y(cells)e(already)g(allo)s(cated.)p eop end %%Page: 12 15 TeXDict begin 12 14 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(12)390 299 y Fg(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*v)-5 b(alue:)41 b(v)-5 b(alue[0]..v)g(alue[len-1].)45 b(Initialy)31 b(holds)f(the)h(sizeof)g(v)-5 b(alue.)390 433 y(Returns)29 b(the)i(v)-5 b(alue)31 b(of)f(one)h(elemen)m(t)h(inside)e(a)h (structure.)390 566 y(If)h(an)h(elemen)m(t)h(is)f(OPTIONAL)f(and)g(the) h(function)f Fk(")p Fr(read)p 2494 566 28 4 v 40 w(v)-5 b(alue)p Fk(")33 b Fr(returns)f Fk(ASN1_ELEMENT_)390 676 y(NOT_FOUND)19 b Fr(,)k(it)f(means)g(that)g(this)f(elemen)m(t)i(w)m (asn't)f(presen)m(t)g(in)f(the)g(der)g(enco)s(ding)h(that)g(created)390 786 y(the)37 b(structure.)61 b(The)37 b(\014rst)g(elemen)m(t)h(of)g(a)f (SEQUENCE)p 2439 786 V 39 w(OF)g(or)h(SET)p 2943 786 V 39 w(OF)f(is)g(named)g Fk(")p Fr(?1)p Fk(")p Fr(.)390 895 y(The)30 b(second)g(one)h Fk(")p Fr(?2)p Fk(")f Fr(and)g(so)g(on.) 390 1029 y Fe(INTEGER:)h Fr(V)-10 b(ALUE)30 b(will)h(con)m(tain)h(a)e (t)m(w)m(o's)i(complemen)m(t)g(form)e(in)m(teger.)390 1163 y(in)m(teger=-1)i(-)p Fk(>)f Fr(v)-5 b(alue[0]=0xFF)32 b(,)f(len=1.)41 b(in)m(teger=1)32 b(-)p Fk(>)e Fr(v)-5 b(alue[0]=0x01)33 b(,)d(len=1.)390 1296 y Fe(ENUMERA)-8 b(TED:)30 b Fr(As)g(INTEGER)g(\(but)g(only)h(with)f(not)g(negativ)m(e)j (n)m(um)m(b)s(ers\).)390 1430 y Fe(BOOLEAN:)38 b Fr(V)-10 b(ALUE)39 b(will)h(b)s(e)e(the)h(n)m(ull)g(terminated)h(string)f Fk(")p Fr(TR)m(UE)p Fk(")f Fr(or)h Fk(")p Fr(F)-10 b(ALSE)p Fk(")39 b Fr(and)390 1540 y(LEN=5)30 b(or)h(LEN=6.)390 1674 y(OBJECT)g(IDENTIFIER:)h(V)-10 b(ALUE)32 b(will)g(b)s(e)g(a)g(n)m (ull)g(terminated)g(string)g(with)g(eac)m(h)h(n)m(um)m(b)s(er)390 1783 y(separated)e(b)m(y)f(a)h(dot)f(\(i.e.)42 b Fk(")p Fr(1.2.3.543.1)p Fk(")p Fr(\).)390 1917 y(LEN)30 b(=)g(strlen\(V)-10 b(ALUE\))p Fk(+)p Fr(1)390 2051 y Fe(UTCTime:)41 b Fr(V)-10 b(ALUE)30 b(will)h(b)s(e)e(a)i(n)m(ull)f(terminated)h(string)f(in)g (one)g(of)h(these)f(formats:)41 b Fk(")p Fr(YYM-)390 2160 y(MDDhhmmss)p Fk(+)p Fr(hh'mm')p Fk(")28 b Fr(or)j Fk(")p Fr(YYMMDDhhmmss-hh'mm')p Fk(")p Fr(.)39 b(LEN=strlen\(V)-10 b(ALUE\))p Fk(+)p Fr(1.)390 2294 y Fe(GeneralizedTime:)48 b Fr(V)-10 b(ALUE)33 b(will)g(b)s(e)g(a)g(n)m(ull)g(terminated)g (string)g(in)g(the)g(same)g(format)h(used)390 2404 y(to)d(set)g(the)g (v)-5 b(alue.)390 2537 y(OCTET)26 b(STRING:)h(V)-10 b(ALUE)27 b(will)h(con)m(tain)h(the)f(o)s(ctet)h(string)e(and)g(LEN)g(will)h(b)s (e)f(the)g(n)m(um)m(b)s(er)390 2647 y(of)k(o)s(ctets.)390 2781 y Fe(GeneralString:)51 b Fr(V)-10 b(ALUE)34 b(will)i(con)m(tain)g (the)f(generalstring)g(and)g(LEN)f(will)h(b)s(e)f(the)h(n)m(um)m(b)s (er)390 2890 y(of)c(o)s(ctets.)390 3024 y(BIT)j(STRING:)h(V)-10 b(ALUE)34 b(will)h(con)m(tain)h(the)f(bit)g(string)f(organized)i(b)m(y) e(b)m(ytes)h(and)f(LEN)h(will)390 3134 y(b)s(e)30 b(the)g(n)m(um)m(b)s (er)f(of)i(bits.)390 3268 y Fe(CHOICE:)j Fr(If)f(NAME)i(indicates)g(a)g (c)m(hoice)h(t)m(yp)s(e,)f(V)-10 b(ALUE)34 b(will)h(sp)s(ecify)f(the)g (alternativ)m(e)i(se-)390 3377 y(lected.)390 3511 y Fe(ANY:)h Fr(If)f(NAME)i(indicates)g(an)f(an)m(y)g(t)m(yp)s(e,)i(V)-10 b(ALUE)37 b(will)g(indicate)h(the)g(DER)f(enco)s(ding)g(of)390 3620 y(the)31 b(structure)e(actually)j(used.)390 3754 y Fe(Returns:)64 b Fk(ASN1_SUCCESS)38 b Fr(if)k(v)-5 b(alue)42 b(is)g(returned,)i Fk(ASN1_ELEMENT_NOT_FOUND)36 b Fr(if)42 b Fk(name)f Fr(is)390 3864 y(not)33 b(a)g(v)-5 b(alid)34 b(elemen)m(t,)h Fk(ASN1_VALUE_NOT_FOUND)27 b Fr(if)33 b(there)g(isn't)g(an)m(y)g(v)-5 b(alue)34 b(for)e(the)h(elemen)m(t)390 3973 y(selected,)28 b(and)d Fk(ASN1_MEM_ERROR)c Fr(if)26 b(The)f(v)-5 b(alue)26 b(v)m(ector)h (isn't)e(big)h(enough)f(to)h(store)g(the)g(result,)390 4083 y(and)k(in)g(this)g(case)i Fk(len)d Fr(will)i(con)m(tain)g(the)g (n)m(um)m(b)s(er)e(of)i(b)m(ytes)f(needed.)150 4281 y Fj(asn1)p 396 4281 37 5 v 55 w(read)p 685 4281 V 54 w(v)-7 b(alue)p 1015 4281 V 53 w(t)m(yp)s(e)3350 4476 y Fr([F)f(unction])-3599 b Fi(int)53 b(asn1_read_value_type)f Fh(\()p Fg(asn1)p 1669 4476 28 4 v 40 w(no)s(de)29 b Ff(root)p Fg(,)i(const)e(c)m(har)h (*)f Ff(name)p Fg(,)i(v)m(oid)f(*)565 4586 y Ff(ivalue)p Fg(,)i(in)m(t)f(*)g Ff(len)p Fg(,)h(unsigned)d(in)m(t)i(*)g Ff(etype)p Fh(\))390 4695 y Fg(ro)s(ot)r Fr(:)41 b(p)s(oin)m(ter)30 b(to)i(a)e(structure.)390 4829 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h(inside)e(a)h(structure)f (that)h(y)m(ou)f(w)m(an)m(t)h(to)h(read.)390 4963 y Fg(iv)-5 b(alue)5 b Fr(:)45 b(v)m(ector)34 b(that)e(will)h(con)m(tain)g(the)g (elemen)m(t's)g(con)m(ten)m(t,)i(m)m(ust)d(b)s(e)g(a)g(p)s(oin)m(ter)g (to)h(memory)390 5072 y(cells)e(already)g(allo)s(cated.)390 5206 y Fg(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*v) -5 b(alue:)41 b(v)-5 b(alue[0]..v)g(alue[len-1].)45 b(Initialy)31 b(holds)f(the)h(sizeof)g(v)-5 b(alue.)390 5340 y Fg(et)m(yp)s(e)5 b Fr(:)41 b(The)30 b(t)m(yp)s(e)h(of)f(the)h(v)-5 b(alue)31 b(read)f(\(ASN1)p 2037 5340 V 41 w(ETYPE\))p eop end %%Page: 13 16 TeXDict begin 13 15 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(13)390 299 y(Returns)29 b(the)i(v)-5 b(alue)31 b(of)f(one)h(elemen)m(t)h(inside)e(a)h (structure.)390 434 y(If)h(an)h(elemen)m(t)h(is)f(OPTIONAL)f(and)g(the) h(function)f Fk(")p Fr(read)p 2494 434 28 4 v 40 w(v)-5 b(alue)p Fk(")33 b Fr(returns)f Fk(ASN1_ELEMENT_)390 543 y(NOT_FOUND)19 b Fr(,)k(it)f(means)g(that)g(this)f(elemen)m(t)i(w)m (asn't)f(presen)m(t)g(in)f(the)g(der)g(enco)s(ding)h(that)g(created)390 653 y(the)37 b(structure.)61 b(The)37 b(\014rst)g(elemen)m(t)h(of)g(a)f (SEQUENCE)p 2439 653 V 39 w(OF)g(or)h(SET)p 2943 653 V 39 w(OF)f(is)g(named)g Fk(")p Fr(?1)p Fk(")p Fr(.)390 762 y(The)30 b(second)g(one)h Fk(")p Fr(?2)p Fk(")f Fr(and)g(so)g(on.) 390 897 y Fe(INTEGER:)h Fr(V)-10 b(ALUE)30 b(will)h(con)m(tain)h(a)e(t) m(w)m(o's)i(complemen)m(t)g(form)e(in)m(teger.)390 1032 y(in)m(teger=-1)i(-)p Fk(>)f Fr(v)-5 b(alue[0]=0xFF)32 b(,)f(len=1.)41 b(in)m(teger=1)32 b(-)p Fk(>)e Fr(v)-5 b(alue[0]=0x01)33 b(,)d(len=1.)390 1167 y Fe(ENUMERA)-8 b(TED:)30 b Fr(As)g(INTEGER)g(\(but)g(only)h(with)f(not)g(negativ)m(e)j (n)m(um)m(b)s(ers\).)390 1302 y Fe(BOOLEAN:)38 b Fr(V)-10 b(ALUE)39 b(will)h(b)s(e)e(the)h(n)m(ull)g(terminated)h(string)f Fk(")p Fr(TR)m(UE)p Fk(")f Fr(or)h Fk(")p Fr(F)-10 b(ALSE)p Fk(")39 b Fr(and)390 1411 y(LEN=5)30 b(or)h(LEN=6.)390 1546 y(OBJECT)g(IDENTIFIER:)h(V)-10 b(ALUE)32 b(will)g(b)s(e)g(a)g(n)m (ull)g(terminated)g(string)g(with)g(eac)m(h)h(n)m(um)m(b)s(er)390 1656 y(separated)e(b)m(y)f(a)h(dot)f(\(i.e.)42 b Fk(")p Fr(1.2.3.543.1)p Fk(")p Fr(\).)390 1791 y(LEN)30 b(=)g(strlen\(V)-10 b(ALUE\))p Fk(+)p Fr(1)390 1926 y Fe(UTCTime:)41 b Fr(V)-10 b(ALUE)30 b(will)h(b)s(e)e(a)i(n)m(ull)f(terminated)h(string)f(in)g (one)g(of)h(these)f(formats:)41 b Fk(")p Fr(YYM-)390 2035 y(MDDhhmmss)p Fk(+)p Fr(hh'mm')p Fk(")28 b Fr(or)j Fk(")p Fr(YYMMDDhhmmss-hh'mm')p Fk(")p Fr(.)39 b(LEN=strlen\(V)-10 b(ALUE\))p Fk(+)p Fr(1.)390 2170 y Fe(GeneralizedTime:)48 b Fr(V)-10 b(ALUE)33 b(will)g(b)s(e)g(a)g(n)m(ull)g(terminated)g (string)g(in)g(the)g(same)g(format)h(used)390 2280 y(to)d(set)g(the)g (v)-5 b(alue.)390 2415 y(OCTET)26 b(STRING:)h(V)-10 b(ALUE)27 b(will)h(con)m(tain)h(the)f(o)s(ctet)h(string)e(and)g(LEN)g(will)h(b)s (e)f(the)g(n)m(um)m(b)s(er)390 2524 y(of)k(o)s(ctets.)390 2659 y Fe(GeneralString:)51 b Fr(V)-10 b(ALUE)34 b(will)i(con)m(tain)g (the)f(generalstring)g(and)g(LEN)f(will)h(b)s(e)f(the)h(n)m(um)m(b)s (er)390 2769 y(of)c(o)s(ctets.)390 2903 y(BIT)j(STRING:)h(V)-10 b(ALUE)34 b(will)h(con)m(tain)h(the)f(bit)g(string)f(organized)i(b)m(y) e(b)m(ytes)h(and)f(LEN)h(will)390 3013 y(b)s(e)30 b(the)g(n)m(um)m(b)s (er)f(of)i(bits.)390 3148 y Fe(CHOICE:)j Fr(If)f(NAME)i(indicates)g(a)g (c)m(hoice)h(t)m(yp)s(e,)f(V)-10 b(ALUE)34 b(will)h(sp)s(ecify)f(the)g (alternativ)m(e)i(se-)390 3257 y(lected.)390 3392 y Fe(ANY:)h Fr(If)f(NAME)i(indicates)g(an)f(an)m(y)g(t)m(yp)s(e,)i(V)-10 b(ALUE)37 b(will)g(indicate)h(the)g(DER)f(enco)s(ding)g(of)390 3502 y(the)31 b(structure)e(actually)j(used.)390 3637 y Fe(Returns:)64 b Fk(ASN1_SUCCESS)38 b Fr(if)k(v)-5 b(alue)42 b(is)g(returned,)i Fk(ASN1_ELEMENT_NOT_FOUND)36 b Fr(if)42 b Fk(name)f Fr(is)390 3746 y(not)33 b(a)g(v)-5 b(alid)34 b(elemen)m(t,)h Fk(ASN1_VALUE_NOT_FOUND)27 b Fr(if)33 b(there)g(isn't)g(an)m(y)g(v)-5 b(alue)34 b(for)e(the)h(elemen)m(t)390 3856 y(selected,)28 b(and)d Fk(ASN1_MEM_ERROR)c Fr(if)26 b(The)f(v)-5 b(alue)26 b(v)m(ector)h (isn't)e(big)h(enough)f(to)h(store)g(the)g(result,)390 3965 y(and)k(in)g(this)g(case)i Fk(len)d Fr(will)i(con)m(tain)g(the)g (n)m(um)m(b)s(er)e(of)i(b)m(ytes)f(needed.)150 4165 y Fj(asn1)p 396 4165 37 5 v 55 w(read)p 685 4165 V 54 w(tag)3350 4362 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_read_tag)d Fh(\()p Fg(asn1)p 1303 4362 28 4 v 40 w(no)s(de)30 b Ff(root)p Fg(,)i(const)f(c)m(har)f(*)h Ff(name)p Fg(,)h(in)m(t)f(*)565 4472 y Ff(tagValue)p Fg(,)i(in)m(t)e(*)g Ff(classValue)p Fh(\))390 4581 y Fg(ro)s(ot)r Fr(:)41 b(p)s(oin)m(ter)30 b(to)i(a)e(structure)390 4716 y Fg(name)5 b Fr(:)41 b(the)30 b(name)h(of)f(the)h(elemen)m(t)h(inside)e(a)h(structure.)390 4851 y Fg(tagV)-8 b(alue)5 b Fr(:)43 b(v)-5 b(ariable)31 b(that)g(will)g(con)m(tain)h(the)e(T)-8 b(A)m(G)32 b(v)-5 b(alue.)390 4986 y Fg(classV)d(alue)5 b Fr(:)43 b(v)-5 b(ariable)31 b(that)g(will)g(sp)s(ecify)f(the)g(T)-8 b(A)m(G)32 b(t)m(yp)s(e.)390 5121 y(Returns)40 b(the)h(T)-8 b(A)m(G)41 b(and)f(the)h(CLASS)e(of)i(one)g(elemen)m(t)h(inside)e(a)h (structure.)71 b(CLASS)40 b(can)390 5230 y(ha)m(v)m(e)e(one)g(of)f (these)h(constan)m(ts:)56 b Fk(ASN1_CLASS_APPLICATION)31 b Fr(,)39 b Fk(ASN1_CLASS_UNIVERSAL)32 b Fr(,)390 5340 y Fk(ASN1_CLASS_PRIVATE)25 b Fr(or)31 b Fk(ASN1_CLASS_CONTEXT_SPEC)o (IFIC)24 b Fr(.)p eop end %%Page: 14 17 TeXDict begin 14 16 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(14)390 299 y Fe(Returns:)37 b Fk(ASN1_SUCCESS)21 b Fr(if)k(successful,)g Fk(ASN1_ELEMENT_NOT_FOUND) 18 b Fr(if)25 b Fk(name)e Fr(is)h(not)h(a)g(v)-5 b(alid)390 408 y(elemen)m(t.)150 628 y Fj(asn1)p 396 628 37 5 v 55 w(read)p 685 628 V 54 w(no)s(de)p 995 628 V 55 w(v)e(alue)3350 846 y Fr([F)f(unction])-3599 b Fi(int)53 b(asn1_read_node_value)f Fh(\()p Fg(asn1)p 1669 846 28 4 v 40 w(no)s(de)30 b Ff(node)p Fg(,)i(asn1)p 2371 846 V 40 w(data)p 2587 846 V 41 w(no)s(de)p 2818 846 V 39 w(st)f(*)565 955 y Ff(data)p Fh(\))390 1065 y Fg(no)s(de)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(a)f(no)s(de.) 390 1220 y Fg(data)p Fr(:)41 b(a)31 b(p)s(oin)m(t)g(to)g(a)f(asn1)p 1315 1220 V 41 w(data)p 1532 1220 V 40 w(no)s(de)p 1762 1220 V 40 w(st)390 1375 y(Returns)22 b(the)g(v)-5 b(alue)23 b(a)g(data)h(no)s(de)d(inside)i(a)g(asn1)p 2084 1375 V 40 w(no)s(de)f(structure.)37 b(The)22 b(data)i(returned)d(should)390 1485 y(b)s(e)30 b(handled)f(as)i(constan)m(t)g(v)-5 b(alues.)390 1640 y Fe(Returns:)40 b Fk(ASN1_SUCCESS)27 b Fr(if)k(the)f(no)s(de)g (exists.)150 1903 y Fq(4.3)68 b(DER)46 b(functions)150 2127 y Fj(asn1)p 396 2127 37 5 v 55 w(length)p 786 2127 V 54 w(der)3350 2345 y Fr([F)-8 b(unction])-3599 b Fi(void)54 b(asn1_length_der)c Fh(\()p Fg(unsigned)29 b(long)i(in)m(t)g Ff(len)p Fg(,)g(unsigned)f(c)m(har)h(*)f Ff(der)p Fg(,)i(in)m(t)565 2454 y(*)f Ff(der_len)p Fh(\))390 2564 y Fg(len)p Fr(:)41 b(v)-5 b(alue)31 b(to)g(con)m(v)m(ert.)390 2719 y Fg(der)7 b Fr(:)40 b(bu\013er)29 b(to)i(hold)f(the)h(returned)e(enco)s(ding)h (\(ma)m(y)i(b)s(e)d Fk(NULL)h Fr(\).)390 2874 y Fg(der)p 523 2874 28 4 v 40 w(len)p Fr(:)40 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f(b)m(ytes)h(of)g(ANS)f(\(der[0]..der[der)p 2791 2874 V 40 w(len-1]\).)390 3029 y(Creates)35 b(the)f(DER)h(enco)s (ding)f(of)g(the)g(pro)m(vided)g(length)h(v)-5 b(alue.)52 b(The)34 b Fk(der)f Fr(bu\013er)h(m)m(ust)g(ha)m(v)m(e)390 3139 y(enough)27 b(ro)s(om)f(for)h(the)g(output.)40 b(The)26 b(maxim)m(um)h(length)g(this)g(function)g(will)g(enco)s(de)g(is)g Fk(ASN1_)390 3249 y(MAX_LENGTH_SIZE)f Fr(.)390 3404 y(T)-8 b(o)31 b(kno)m(w)f(the)h(size)g(of)g(the)f(DER)h(enco)s(ding)f(use)g(a) h Fk(NULL)e Fr(v)-5 b(alue)31 b(for)f Fk(der)f Fr(.)150 3624 y Fj(asn1)p 396 3624 37 5 v 55 w(o)s(ctet)p 722 3624 V 53 w(der)3350 3841 y Fr([F)-8 b(unction])-3599 b Fi(void)54 b(asn1_octet_der)49 b Fh(\()p Fg(const)31 b(unsigned)f(c)m(har)g(*)h Ff(str)p Fg(,)h(in)m(t)f Ff(str_len)p Fg(,)565 3951 y(unsigned)e(c)m(har)i(*)g Ff(der)p Fg(,)g(in)m(t)g(*)g Ff(der_len)p Fh(\))390 4060 y Fg(str)7 b Fr(:)40 b(the)31 b(input)e(data.)390 4215 y Fg(str)p 503 4215 28 4 v 40 w(len)p Fr(:)41 b(STR)29 b(length)i(\(str[0]..str[*str)p 1787 4215 V 42 w(len-1]\).)390 4370 y Fg(der)7 b Fr(:)40 b(enco)s(ded)30 b(string)g(returned.)390 4526 y Fg(der)p 523 4526 V 40 w(len)p Fr(:)40 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f (b)m(ytes)h(of)g(DER)f(\(der[0]..der[der)p 2802 4526 V 41 w(len-1]\).)390 4681 y(Creates)j(a)f(length-v)-5 b(alue)34 b(DER)e(enco)s(ding)g(for)g(the)g(input)f(data.)47 b(The)31 b(DER)h(enco)s(ding)g(of)h(the)390 4790 y(input)c(data)i(will) g(b)s(e)f(placed)h(in)f(the)g Fk(der)g Fr(v)-5 b(ariable.)390 4945 y(Note)32 b(that)f(the)f(OCTET)f(STRING)h(tag)h(is)g(not)f (included)g(in)g(the)h(output.)390 5101 y(This)41 b(function)g(do)s(es) g(not)h(return)e(an)m(y)i(v)-5 b(alue)42 b(b)s(ecause)f(it)i(is)e(exp)s (ected)h(that)g Fk(der_len)e Fr(will)390 5210 y(con)m(tain)30 b(enough)e(b)m(ytes)i(to)f(store)g(the)g(string)g(plus)e(the)i(DER)g (enco)s(ding.)40 b(The)28 b(DER)h(enco)s(ding)390 5320 y(size)i(can)g(b)s(e)f(obtained)g(using)g Fk(asn1_length_der\(\))c Fr(.)p eop end %%Page: 15 18 TeXDict begin 15 17 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(15)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(enco)s(de)p 818 299 V 54 w(simple)p 1214 299 V 55 w(der)3350 500 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_encode_simple_de)q(r)e Fh(\()p Fg(unsigned)30 b(in)m(t)h Ff(etype)p Fg(,)h(const)f(unsigned)565 609 y(c)m(har)g(*)f Ff(str)p Fg(,)i(unsigned)d(in)m(t)i Ff(str_len)p Fg(,)h(unsigned)e(c)m(har)g(*)h Ff(tl)p Fg(,)g(unsigned)e(in)m(t)i(*)g Ff(tl_len)p Fh(\))390 719 y Fg(et)m(yp)s(e)5 b Fr(:)41 b(The)30 b(t)m(yp)s(e)h(of)f(the)h(string)f(to)h(b)s(e)f(enco)s(ded)g (\(ASN1)p 2444 719 28 4 v 41 w(ETYPE)p 2805 719 V 39 w(\))390 858 y Fg(str)7 b Fr(:)40 b(the)31 b(string)f(data.)390 996 y Fg(str)p 503 996 V 40 w(len)p Fr(:)41 b(the)30 b(string)h(length)390 1135 y Fg(tl)t Fr(:)41 b(the)30 b(enco)s(ded)g(tag)i(and)e(length)390 1274 y Fg(tl)p 456 1274 V 41 w(len)p Fr(:)40 b(the)31 b(b)m(ytes)g(of)f(the)h Fk(tl)f Fr(\014eld)390 1413 y(Creates)j(the)g(DER)g(enco)s(ding)f(for)h (v)-5 b(arious)32 b(simple)h(ASN.1)g(t)m(yp)s(es)f(lik)m(e)i(strings)e (etc.)49 b(It)32 b(stores)390 1522 y(the)k(tag)h(and)e(length)h(in)g Fk(tl)f Fr(,)i(whic)m(h)f(should)f(ha)m(v)m(e)i(space)f(for)g(at)g (least)h Fk(ASN1_MAX_TL_SIZE)390 1632 y Fr(b)m(ytes.)k(Initially)32 b Fk(tl_len)c Fr(should)i(con)m(tain)h(the)g(size)g(of)g Fk(tl)e Fr(.)390 1771 y(The)39 b(complete)i(DER)f(enco)s(ding)g(should) e(consist)i(of)g(the)g(v)-5 b(alue)40 b(in)g Fk(tl)f Fr(app)s(ended)e(with)j(the)390 1880 y(pro)m(vided)30 b Fk(str)f Fr(.)390 2019 y Fe(Returns:)40 b Fk(ASN1_SUCCESS)27 b Fr(if)k(successful)f(or)g(an)g(error)g(v)-5 b(alue.)150 2222 y Fj(asn1)p 396 2222 37 5 v 55 w(bit)p 601 2222 V 54 w(der)3350 2423 y Fr([F)d(unction])-3599 b Fi(void)54 b(asn1_bit_der)49 b Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(str)p Fg(,)g(in)m(t)g Ff(bit_len)p Fg(,)i(unsigned)565 2533 y(c)m(har)e(*)g Ff(der)p Fg(,)g(in)m(t)g(*)g Ff(der_len)p Fh(\))390 2642 y Fg(str)7 b Fr(:)40 b(BIT)30 b(string.)390 2781 y Fg(bit)p 507 2781 28 4 v 40 w(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f(bits)g(in)g(STR.)390 2920 y Fg(der)7 b Fr(:)40 b(string)30 b(returned.)390 3059 y Fg(der)p 523 3059 V 40 w(len)p Fr(:)40 b(n)m(um)m(b)s(er)29 b(of)i(meaningful)f (b)m(ytes)h(of)g(DER)f(\(der[0]..der[ans)p 2807 3059 V 41 w(len-1]\).)390 3197 y(Creates)i(a)f(length-v)-5 b(alue)33 b(DER)e(enco)s(ding)g(for)g(the)g(input)f(data)i(as)f(it)h(w) m(ould)f(ha)m(v)m(e)h(b)s(een)f(for)g(a)390 3307 y(BIT)f(STRING.)g(The) g(DER)h(enco)s(ded)f(data)h(will)f(b)s(e)g(copied)h(in)f Fk(der)f Fr(.)390 3446 y(Note)j(that)f(the)f(BIT)g(STRING)g(tag)i(is)e (not)h(included)e(in)h(the)h(output.)390 3584 y(This)41 b(function)g(do)s(es)g(not)h(return)e(an)m(y)i(v)-5 b(alue)42 b(b)s(ecause)f(it)i(is)e(exp)s(ected)h(that)g Fk(der_len)e Fr(will)390 3694 y(con)m(tain)30 b(enough)e(b)m(ytes)i(to)f(store)g (the)g(string)g(plus)e(the)i(DER)g(enco)s(ding.)40 b(The)28 b(DER)h(enco)s(ding)390 3804 y(size)i(can)g(b)s(e)f(obtained)g(using)g Fk(asn1_length_der\(\))c Fr(.)150 4007 y Fj(asn1)p 396 4007 37 5 v 55 w(der)p 625 4007 V 54 w(co)s(ding)3350 4208 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_der_coding)d Fh(\()p Fg(asn1)p 1407 4208 28 4 v 41 w(no)s(de)30 b Ff(element)p Fg(,)i(const)f(c)m(har)g(*)g Ff(name)p Fg(,)g(v)m(oid)g(*) 565 4318 y Ff(ider)p Fg(,)h(in)m(t)f(*)g Ff(len)p Fg(,)g(c)m(har)g(*)f Ff(ErrorDescription)p Fh(\))390 4427 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(elemen)m(t)390 4566 y Fg(name)5 b Fr(:)39 b(the)27 b(name)h(of)f(the)g(structure)g(y)m (ou)g(w)m(an)m(t)h(to)g(enco)s(de)f(\(it)h(m)m(ust)f(b)s(e)f(inside)h (*POINTER\).)390 4705 y Fg(ider)7 b Fr(:)39 b(v)m(ector)30 b(that)f(will)f(con)m(tain)i(the)e(DER)h(enco)s(ding.)40 b(DER)28 b(m)m(ust)g(b)s(e)g(a)h(p)s(oin)m(ter)f(to)h(memory)390 4814 y(cells)i(already)g(allo)s(cated.)390 4953 y Fg(len)p Fr(:)49 b(n)m(um)m(b)s(er)33 b(of)h(b)m(ytes)h(of)g(*)g Fk(ider)e Fr(:)48 b Fk(ider)34 b Fr([0]..)54 b Fk(ider)33 b Fr([len-1],)k(Initialy)e(holds)f(the)g(sizeof)i(of)390 5063 y(der)30 b(v)m(ector.)390 5201 y Fg(ErrorDescription)p Fr(:)41 b(return)29 b(the)i(error)f(description)g(or)g(an)h(empt)m(y)f (string)h(if)f(success.)390 5340 y(Creates)h(the)g(DER)f(enco)s(ding)g (for)h(the)f(NAME)h(structure)f(\(inside)g(*POINTER)g(structure\).)p eop end %%Page: 16 19 TeXDict begin 16 18 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(16)390 299 y Fe(Returns:)47 b Fk(ASN1_SUCCESS)30 b Fr(if)k(DER)g(enco)s(ding)f(OK,)g Fk(ASN1_ELEMENT_NOT_FOUND)28 b Fr(if)33 b Fk(name)g Fr(is)390 408 y(not)h(a)g(v)-5 b(alid)35 b(elemen)m(t,)h Fk(ASN1_VALUE_NOT_FOUND) 29 b Fr(if)34 b(there)g(is)g(an)g(elemen)m(t)h(without)f(a)g(v)-5 b(alue,)390 518 y Fk(ASN1_MEM_ERROR)24 b Fr(if)29 b(the)f Fk(ider)g Fr(v)m(ector)i(isn't)e(big)h(enough)f(and)g(in)g(this)g(case) h Fk(len)f Fr(will)h(con)m(tain)390 628 y(the)i(length)f(needed.)150 846 y Fj(asn1)p 396 846 37 5 v 55 w(get)p 616 846 V 54 w(length)p 1005 846 V 54 w(der)3350 1063 y Fr([F)-8 b(unction])-3599 b Fi(long)54 b(asn1_get_length_der)d Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(der)p Fg(,)g(in)m(t)g Ff(der_len)p Fg(,)565 1172 y(in)m(t)g(*)g Ff(len)p Fh(\))390 1282 y Fg(der)7 b Fr(:)40 b(DER)30 b(data)h(to)g(deco)s(de.)390 1436 y Fg(der)p 523 1436 28 4 v 40 w(len)p Fr(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g(deco)s(de.)390 1590 y Fg(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length) f(of)h(the)g(DER)f(length)h(\014eld.)390 1744 y(Extract)g(a)g(length)g (\014eld)f(from)g(DER)g(data.)390 1898 y Fe(Returns:)40 b Fr(Return)29 b(the)h(deco)s(ded)f(length)h(v)-5 b(alue,)30 b(or)g(-1)g(on)g(inde\014nite)f(length,)h(or)g(-2)g(when)f(the)390 2008 y(v)-5 b(alue)30 b(w)m(as)h(to)s(o)f(big)g(to)h(\014t)e(in)h(a)g (in)m(t,)h(or)f(-4)g(when)f(the)h(deco)s(ded)g(length)g(v)-5 b(alue)30 b(plus)f Fk(len)g Fr(w)m(ould)390 2117 y(exceed)i Fk(der_len)e Fr(.)150 2336 y Fj(asn1)p 396 2336 37 5 v 55 w(get)p 616 2336 V 54 w(tag)p 839 2336 V 53 w(der)3350 2553 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_get_tag_der)e Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(der)p Fg(,)g(in)m(t)g Ff(der_len)p Fg(,)565 2662 y(unsigned)e(c)m(har)i(*)g Ff(cls)p Fg(,)g(in)m(t)g(*)g Ff(len)p Fg(,)g(unsigned)f(long)h(*)g Ff(tag)p Fh(\))390 2772 y Fg(der)7 b Fr(:)40 b(DER)30 b(data)h(to)g(deco)s(de.)390 2926 y Fg(der)p 523 2926 28 4 v 40 w(len)p Fr(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g(deco)s (de.)390 3080 y Fg(cls)t Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(deco)s(ded)e(class.)390 3234 y Fg(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length) f(of)h(the)g(DER)f(T)-8 b(A)m(G)31 b(data.)390 3388 y Fg(tag)8 b Fr(:)42 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h (the)f(deco)s(ded)f(tag.)390 3542 y(Deco)s(de)h(the)g(class)g(and)f(T) -8 b(A)m(G)31 b(from)f(DER)h(co)s(de.)390 3696 y Fe(Returns:)40 b Fr(Returns)30 b Fk(ASN1_SUCCESS)d Fr(on)j(success,)h(or)f(an)h (error.)150 3915 y Fj(asn1)p 396 3915 37 5 v 55 w(get)p 616 3915 V 54 w(length)p 1005 3915 V 54 w(b)s(er)3350 4131 y Fr([F)-8 b(unction])-3599 b Fi(long)54 b(asn1_get_length_ber)d Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(ber)p Fg(,)g(in)m(t)g Ff(ber_len)p Fg(,)565 4241 y(in)m(t)g(*)g Ff(len)p Fh(\))390 4350 y Fg(b)s(er)7 b Fr(:)39 b(BER)31 b(data)g(to)g(deco)s(de.)390 4505 y Fg(b)s(er)p 526 4505 28 4 v 39 w(len)p Fr(:)41 b(Length)30 b(of)h(BER)f(data)h(to)g(deco)s (de.)390 4659 y Fg(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length)f(of)h(the)g(BER)f(length)h(\014eld.)390 4813 y(Extract)g(a)g(length)f(\014eld)g(from)g(BER)g(data.)41 b(The)30 b(di\013erence)h(to)g Fk(asn1_get_length_der\(\))24 b Fr(is)390 4922 y(that)31 b(this)f(function)g(will)h(return)e(a)i (length)g(ev)m(en)g(if)f(the)h(v)-5 b(alue)31 b(has)f(inde\014nite)g (enco)s(ding.)390 5076 y Fe(Returns:)40 b Fr(Return)27 b(the)i(deco)s(ded)g(length)g(v)-5 b(alue,)30 b(or)e(negativ)m(e)j(v)-5 b(alue)29 b(when)f(the)h(v)-5 b(alue)29 b(w)m(as)g(to)s(o)390 5186 y(big.)390 5340 y Fe(Since:)41 b Fr(2.0)p eop end %%Page: 17 20 TeXDict begin 17 19 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(17)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(get)p 616 299 V 54 w(o)s(ctet)p 941 299 V 53 w(der)3350 511 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_get_octet_der)e Fh(\()p Fg(const)31 b(unsigned)f(c)m(har)g(*)h Ff(der)p Fg(,)h(in)m(t)f Ff(der_len)p Fg(,)h(in)m(t)565 621 y(*)f Ff(ret_len)p Fg(,)i(unsigned)c(c)m(har)i(*) f Ff(str)p Fg(,)i(in)m(t)f Ff(str_size)p Fg(,)i(in)m(t)e(*)f Ff(str_len)p Fh(\))390 731 y Fg(der)7 b Fr(:)40 b(DER)30 b(data)h(to)g(deco)s(de)g(con)m(taining)h(the)e(OCTET)f(SEQUENCE.)390 881 y Fg(der)p 523 881 28 4 v 40 w(len)p Fr(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g(deco)s(de.)390 1031 y Fg(ret)p 507 1031 V 40 w(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)32 b(con)m(taining)f(the)g(length)g(of)f(the)h(DER)f(data.)390 1181 y Fg(str)7 b Fr(:)40 b(Pre-allo)s(cated)33 b(output)d(bu\013er)f (to)i(put)f(deco)s(ded)g(OCTET)f(SEQUENCE)g(in.)390 1332 y Fg(str)p 503 1332 V 40 w(size)5 b Fr(:)41 b(Length)31 b(of)f(pre-allo)s(cated)j(output)d(bu\013er.)390 1482 y Fg(str)p 503 1482 V 40 w(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(length)f(of)h(the)f(OCTET)f (SEQUENCE.)390 1632 y(Extract)i(an)g(OCTET)d(SEQUENCE)i(from)f(DER)i (data.)390 1782 y Fe(Returns:)40 b Fr(Returns)30 b Fk(ASN1_SUCCESS)d Fr(on)j(success,)h(or)f(an)h(error.)150 1997 y Fj(asn1)p 396 1997 37 5 v 55 w(get)p 616 1997 V 54 w(bit)p 820 1997 V 54 w(der)3350 2210 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_get_bit_der)e Fh(\()p Fg(const)31 b(unsigned)e(c)m(har)i(*)g Ff(der)p Fg(,)g(in)m(t)g Ff(der_len)p Fg(,)i(in)m(t)d(*)565 2320 y Ff(ret_len)p Fg(,)j(unsigned)c(c)m(har)i (*)g Ff(str)p Fg(,)g(in)m(t)g Ff(str_size)p Fg(,)i(in)m(t)e(*)g Ff(bit_len)p Fh(\))390 2429 y Fg(der)7 b Fr(:)40 b(DER)30 b(data)h(to)g(deco)s(de)g(con)m(taining)h(the)e(BIT)h(SEQUENCE.)390 2579 y Fg(der)p 523 2579 28 4 v 40 w(len)p Fr(:)40 b(Length)31 b(of)f(DER)h(data)g(to)g(deco)s(de.)390 2730 y Fg(ret)p 507 2730 V 40 w(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)32 b(con)m(taining)f(the)g(length)g(of)f(the)h(DER)f(data.)390 2880 y Fg(str)7 b Fr(:)40 b(Pre-allo)s(cated)33 b(output)d(bu\013er)f (to)i(put)f(deco)s(ded)g(BIT)g(SEQUENCE)f(in.)390 3030 y Fg(str)p 503 3030 V 40 w(size)5 b Fr(:)41 b(Length)31 b(of)f(pre-allo)s(cated)j(output)d(bu\013er.)390 3180 y Fg(bit)p 507 3180 V 40 w(len)p Fr(:)41 b(Output)29 b(v)-5 b(ariable)31 b(con)m(taining)h(the)f(size)g(of)g(the)f(BIT)g (SEQUENCE.)390 3331 y(Extract)h(a)g(BIT)f(SEQUENCE)f(from)h(DER)h (data.)390 3481 y Fe(Returns:)40 b Fr(Return)30 b Fk(ASN1_SUCCESS)d Fr(on)j(success,)h(or)f(an)h(error.)150 3696 y Fj(asn1)p 396 3696 37 5 v 55 w(der)p 625 3696 V 54 w(deco)s(ding)3350 3908 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_der_decoding)e Fh(\()p Fg(asn1)p 1512 3908 28 4 v 40 w(no)s(de)30 b(*)h Ff(element)p Fg(,)i(const)d(v)m(oid)h(*)g Ff(ider)p Fg(,)h(in)m(t)565 4018 y Ff(len)p Fg(,)g(c)m(har)e(*)h Ff(errorDescription)p Fh(\))390 4128 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(structure.)390 4278 y Fg(ider)7 b Fr(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g(DER)g(enco)s(ding.) 390 4428 y Fg(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g (*)g Fk(ider)e Fr(:)40 b Fk(ider)30 b Fr([0]..)42 b Fk(ider)29 b Fr([len-1].)390 4578 y Fg(errorDescription)p Fr(:)41 b(n)m(ull-terminated)32 b(string)e(con)m(tains)h(details)h(when)d(an)h (error)g(o)s(ccurred.)390 4729 y(Fill)38 b(the)f(structure)g(*)h Fk(ELEMENT)d Fr(with)h(v)-5 b(alues)38 b(of)f(a)h(DER)f(enco)s(ding)g (string.)61 b(The)36 b(structure)390 4838 y(m)m(ust)43 b(just)f(b)s(e)g(created)i(with)e(function)g Fk (asn1_create_element\(\))37 b Fr(.)78 b(If)42 b(an)h(error)f(o)s(ccurs) 390 4948 y(during)29 b(the)i(deco)s(ding)f(pro)s(cedure,)f(the)i(*)g Fk(ELEMENT)d Fr(is)j(deleted)g(and)f(set)g(equal)h(to)g Fk(NULL)f Fr(.)390 5098 y Fe(Returns:)39 b Fk(ASN1_SUCCESS)25 b Fr(if)i(DER)h(enco)s(ding)g(OK,)f Fk(ASN1_ELEMENT_NOT_FOUND)22 b Fr(if)28 b Fk(ELEMENT)390 5208 y Fr(is)g Fk(NULL)e Fr(,)i(and)g Fk(ASN1_TAG_ERROR)23 b Fr(or)28 b Fk(ASN1_DER_ERROR)c Fr(if)j(the)h(der)f(enco)s(ding)h(do)s(esn't)f(matc)m(h)390 5317 y(the)k(structure)e(name)i(\(*)g Fk(ELEMENT)d Fr(deleted\).)p eop end %%Page: 18 21 TeXDict begin 18 20 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(18)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(der)p 625 299 V 54 w(deco)s(ding)p 1153 299 V 55 w(elemen)m(t)3350 490 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_der_decoding_ele)q(ment)f Fh(\()p Fg(asn1)p 1930 490 28 4 v 41 w(no)s(de)30 b(*)g Ff(structure)p Fg(,)k(const)d(c)m(har)565 600 y(*)g Ff(elementName)p Fg(,)j(const)d(v)m(oid)g(*)f Ff(ider)p Fg(,)i(in)m(t)f Ff(len)p Fg(,)g(c)m(har)g(*)g Ff(errorDescription)p Fh(\))390 709 y Fg(structure)5 b Fr(:)40 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h (structure)390 841 y Fg(elemen)m(tName)5 b Fr(:)43 b(name)31 b(of)f(the)h(elemen)m(t)g(to)h(\014ll)390 973 y Fg(ider)7 b Fr(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g(DER)g(enco)s (ding)f(of)g(the)h(whole)g(structure.)390 1104 y Fg(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g(*der:)40 b(der[0]..der[len-1])390 1236 y Fg(errorDescription)p Fr(:)h(n)m(ull-terminated)32 b(string)e(con)m(tains)h(details)h(when)d (an)h(error)g(o)s(ccurred.)390 1368 y(Fill)41 b(the)g(elemen)m(t)g (named)f Fk(ELEMENTNAME)d Fr(with)j(v)-5 b(alues)40 b(of)h(a)f(DER)g (enco)s(ding)g(string.)70 b(The)390 1477 y(structure)36 b(m)m(ust)h(just)f(b)s(e)g(created)i(with)e(function)h Fk(asn1_create_element\(\))31 b Fr(.)60 b(The)36 b(DER)390 1587 y(v)m(ector)d(m)m(ust)e(con)m(tain)h(the)f(enco)s(ding)g(string)g (of)g(the)h(whole)f Fk(STRUCTURE)d Fr(.)43 b(If)31 b(an)g(error)f(o)s (ccurs)390 1697 y(during)f(the)i(deco)s(ding)f(pro)s(cedure,)f(the)i(*) g Fk(STRUCTURE)d Fr(is)i(deleted)h(and)f(set)h(equal)g(to)g Fk(NULL)e Fr(.)390 1828 y Fe(Returns:)63 b Fk(ASN1_SUCCESS)39 b Fr(if)j(DER)g(enco)s(ding)g(OK,)f Fk(ASN1_ELEMENT_NOT_FOUND)36 b Fr(if)42 b(ELE-)390 1938 y(MENT)24 b(is)h Fk(NULL)e Fr(or)h Fk(elementName)d Fr(==)j(NULL,)g(and)g Fk(ASN1_TAG_ERROR)d Fr(or)j Fk(ASN1_DER_ERROR)390 2048 y Fr(if)30 b(the)h(der)f(enco)s (ding)g(do)s(esn't)g(matc)m(h)h(the)g(structure)f Fk(structure)e Fr(\(*ELEMENT)i(deleted\).)150 2241 y Fj(asn1)p 396 2241 37 5 v 55 w(der)p 625 2241 V 54 w(deco)s(ding)p 1153 2241 V 55 w(startEnd)3350 2432 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_der_decoding_sta)q(rtEn)q(d)f Fh(\()p Fg(asn1)p 1983 2432 28 4 v 40 w(no)s(de)30 b Ff(element)p Fg(,)j(const)d(v)m(oid)h(*)565 2542 y Ff(ider)p Fg(,)h(in)m(t)f Ff(len)p Fg(,)g(const)g(c)m(har)g(*)g Ff(name_element)p Fg(,)j(in)m(t)d(*)f Ff(start)p Fg(,)j(in)m(t)d(*)h Ff(end)p Fh(\))390 2652 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(elemen)m(t)390 2783 y Fg(ider)7 b Fr(:)40 b(v)m(ector)32 b(that)f(con)m(tains)g(the)g(DER)g(enco)s(ding.) 390 2915 y Fg(len)p Fr(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)m(ytes)h(of)g (*)g Fk(ider)e Fr(:)40 b Fk(ider)30 b Fr([0]..)42 b Fk(ider)29 b Fr([len-1])390 3047 y Fg(name)p 608 3047 V 40 w(elemen)m(t)r Fr(:)42 b(an)31 b(elemen)m(t)g(of)g(NAME)g(structure.)390 3178 y Fg(start)r Fr(:)41 b(the)31 b(p)s(osition)f(of)h(the)f(\014rst)g (b)m(yte)h(of)g(NAME)p 2189 3178 V 40 w(ELEMENT)f(deco)s(ding)g(\()h Fk(ider)e Fr([*start]\))390 3310 y Fg(end)t Fr(:)40 b(the)30 b(p)s(osition)h(of)f(the)h(last)g(b)m(yte)g(of)g(NAME)p 2129 3310 V 40 w(ELEMENT)f(deco)s(ding)g(\()h Fk(ider)e Fr([*end]\))390 3442 y(Find)45 b(the)h(start)g(and)f(end)g(p)s(oin)m(t) g(of)h(an)f(elemen)m(t)i(in)e(a)h(DER)g(enco)s(ding)f(string.)87 b(I)45 b(mean)390 3551 y(that)35 b(if)f(y)m(ou)h(ha)m(v)m(e)h(a)e(der)g (enco)s(ding)g(and)g(y)m(ou)h(ha)m(v)m(e)g(already)g(used)f(the)g (function)g Fk(asn1_der_)390 3661 y(decoding\(\))22 b Fr(to)j(\014ll)g(a)g(structure,)h(it)f(ma)m(y)h(happ)s(en)d(that)i(y)m (ou)g(w)m(an)m(t)h(to)f(\014nd)e(the)i(piece)h(of)f(string)390 3771 y(concerning)31 b(an)f(elemen)m(t)i(of)e(the)h(structure.)390 3902 y(One)f(example)h(is)f(the)h(sequence)g Fk(")p Fr (tbsCerti\014cate)p Fk(")g Fr(inside)f(an)g(X509)i(certi\014cate.)390 4034 y Fe(Returns:)63 b Fk(ASN1_SUCCESS)39 b Fr(if)j(DER)g(enco)s(ding) g(OK,)f Fk(ASN1_ELEMENT_NOT_FOUND)36 b Fr(if)42 b(ELE-)390 4144 y(MENT)37 b(is)g Fk(asn1_node)e Fr(EMPTY)h(or)h Fk(name_element)d Fr(is)j(not)g(a)h(v)-5 b(alid)37 b(elemen)m(t,)j Fk(ASN1_TAG_)390 4253 y(ERROR)j Fr(or)h Fk(ASN1_DER_ERROR)d Fr(if)j(the)h(der)f(enco)s(ding)g(do)s(esn't)g(matc)m(h)i(the)e (structure)g(ELE-)390 4363 y(MENT.)150 4557 y Fj(asn1)p 396 4557 37 5 v 55 w(expand)p 836 4557 V 54 w(an)m(y)p 1080 4557 V 53 w(de\014ned)p 1517 4557 V 55 w(b)m(y)3350 4748 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_expand_any_defin)q (ed_b)q(y)f Fh(\()p Fg(asn1)p 1983 4748 28 4 v 40 w(no)s(de)30 b Ff(definitions)p Fg(,)565 4857 y(asn1)p 748 4857 V 40 w(no)s(de)g(*)h Ff(element)p Fh(\))390 4967 y Fg(de\014nitions)t Fr(:)40 b(ASN1)31 b(de\014nitions)390 5099 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(structure)390 5230 y(Expands)36 b(ev)m(ery)j Fk(")p Fr(ANY)f(DEFINED)g(BY)p Fk(")g Fr(elemen)m(t)h(of)f(a)g(structure)g(created)g(from)g(a)g(DER) 390 5340 y(deco)s(ding)c(pro)s(cess)g(\(asn1)p 1314 5340 V 41 w(der)p 1482 5340 V 40 w(deco)s(ding)g(function\).)53 b(The)34 b(elemen)m(t)i(ANY)f(m)m(ust)f(b)s(e)g(de\014ned)p eop end %%Page: 19 22 TeXDict begin 19 21 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(19)390 299 y(b)m(y)26 b(an)f(OBJECT)g(IDENTIFIER.)h(The)f(t)m(yp)s(e)h(used)f(to)i(expand)e (the)h(elemen)m(t)h(ANY)g(is)f(the)g(\014rst)390 408 y(one)31 b(follo)m(wing)h(the)e(de\014nition)g(of)h(the)f(actual)i(v)-5 b(alue)31 b(of)f(the)h(OBJECT)e(IDENTIFIER.)390 537 y Fe(Returns:)55 b Fk(ASN1_SUCCESS)35 b Fr(if)j(Substitution)f(OK,)g Fk(ASN1_ERROR_TYPE_ANY)c Fr(if)k(some)i Fk(")p Fr(ANY)390 647 y(DEFINED)34 b(BY)p Fk(")f Fr(elemen)m(t)i(couldn't)e(b)s(e)g (expanded)f(due)g(to)i(a)f(problem)g(in)g(OBJECT)p 3504 647 28 4 v 39 w(ID)g(-)p Fk(>)390 757 y Fr(TYPE)d(asso)s(ciation,)i(or) f(other)f(error)g(co)s(des)h(dep)s(ending)e(on)h(DER)g(deco)s(ding.)150 945 y Fj(asn1)p 396 945 37 5 v 55 w(expand)p 836 945 V 54 w(o)s(ctet)p 1161 945 V 53 w(string)3350 1130 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_expand_octet_str)q(ing)f Fh(\()p Fg(asn1)p 1878 1130 28 4 v 41 w(no)s(de)29 b Ff(definitions)p Fg(,)34 b(asn1)p 2946 1130 V 40 w(no)s(de)565 1240 y(*)d Ff(element)p Fg(,)i(const)d(c)m(har)h(*)g Ff(octetName)p Fg(,)i(const)e(c)m(har)g(*)g Ff(objectName)p Fh(\))390 1350 y Fg(de\014nitions)t Fr(:)40 b(ASN1)31 b(de\014nitions)390 1478 y Fg(elemen)m(t)r Fr(:)42 b(p)s(oin)m(ter)31 b(to)g(an)f(ASN1)h(structure)390 1607 y Fg(o)s(ctetName)5 b Fr(:)43 b(name)30 b(of)h(the)g(OCTECT)d(STRING)i(\014eld)g(to)h (expand.)390 1736 y Fg(ob)5 b(jectName)g Fr(:)45 b(name)31 b(of)h(the)g(OBJECT)e(IDENTIFIER)h(\014eld)g(to)i(use)e(to)h(de\014ne)f (the)g(t)m(yp)s(e)h(for)390 1846 y(expansion.)390 1975 y(Expands)23 b(an)h Fk(")p Fr(OCTET)e(STRING)p Fk(")i Fr(elemen)m(t)h(of)g(a)f(structure)g(created)h(from)f(a)h(DER)f(deco)s (ding)390 2084 y(pro)s(cess)39 b(\(the)h Fk(asn1_der_decoding\(\))34 b Fr(function\).)68 b(The)39 b(t)m(yp)s(e)h(used)f(for)g(expansion)g (is)h(the)390 2194 y(\014rst)c(one)h(follo)m(wing)h(the)f(de\014nition) g(of)f(the)h(actual)i(v)-5 b(alue)37 b(of)g(the)g(OBJECT)e(IDENTIFIER) 390 2304 y(indicated)c(b)m(y)f(OBJECTNAME.)390 2433 y Fe(Returns:)36 b Fk(ASN1_SUCCESS)18 b Fr(if)j(substitution)g(OK,)g Fk(ASN1_ELEMENT_NOT_FOUND)15 b Fr(if)22 b Fk(objectName)390 2542 y Fr(or)j Fk(octetName)e Fr(are)j(not)f(correct,)j Fk(ASN1_VALUE_NOT_VALID)20 b Fr(if)25 b(it)h(w)m(asn't)g(p)s(ossible)f (to)h(\014nd)e(the)390 2652 y(t)m(yp)s(e)31 b(to)g(use)f(for)g (expansion,)g(or)h(other)f(errors)g(dep)s(ending)f(on)h(DER)h(deco)s (ding.)150 2840 y Fj(asn1)p 396 2840 37 5 v 55 w(deco)s(de)p 818 2840 V 54 w(simple)p 1214 2840 V 55 w(der)3350 3025 y Fr([F)-8 b(unction])-3599 b Fi(int)53 b(asn1_decode_simple_de)q(r)e Fh(\()p Fg(unsigned)30 b(in)m(t)h Ff(etype)p Fg(,)h(const)f(unsigned) 565 3135 y(c)m(har)g(*)g Ff(der)p Fg(,)g(unsigned)e(in)m(t)i Ff(der_len)p Fg(,)i(const)e(unsigned)e(c)m(har)i(**)g Ff(str)p Fg(,)h(unsigned)d(in)m(t)i(*)565 3245 y Ff(str_len)p Fh(\))390 3354 y Fg(et)m(yp)s(e)5 b Fr(:)41 b(The)30 b(t)m(yp)s(e)h(of)f(the)h(string)f(to)h(b)s(e)f(enco)s(ded)g(\(ASN1)p 2444 3354 28 4 v 41 w(ETYPE)p 2805 3354 V 39 w(\))390 3483 y Fg(der)7 b Fr(:)40 b(the)30 b(enco)s(ded)g(string)390 3612 y Fg(der)p 523 3612 V 40 w(len)p Fr(:)40 b(the)31 b(b)m(ytes)g(of)f(the)h(enco)s(ded)f(string)390 3741 y Fg(str)7 b Fr(:)40 b(a)31 b(p)s(oin)m(ter)f(to)h(the)g(data)390 3870 y Fg(str)p 503 3870 V 40 w(len)p Fr(:)41 b(the)30 b(length)h(of)g(the)f(data)390 3999 y(Deco)s(des)35 b(a)f(simple)g(DER) g(enco)s(ded)f(t)m(yp)s(e)h(\(e.g.)52 b(a)35 b(string,)f(whic)m(h)g(is) g(not)g(constructed\).)51 b(The)390 4108 y(output)30 b(is)g(a)h(p)s(oin)m(ter)g(inside)f(the)g Fk(der)g Fr(.)390 4237 y Fe(Returns:)40 b Fk(ASN1_SUCCESS)27 b Fr(if)k(successful)f(or)g (an)g(error)g(v)-5 b(alue.)150 4459 y Fq(4.4)68 b(Error)45 b(handling)g(functions)150 4677 y Fj(asn1)p 396 4677 37 5 v 55 w(p)s(error)3350 4863 y Fr([F)-8 b(unction])-3599 b Fi(void)54 b(asn1_perror)48 b Fh(\()p Fg(in)m(t)32 b Ff(error)p Fh(\))390 4973 y Fg(error)7 b Fr(:)40 b(is)30 b(an)h(error)f(returned)f(b)m(y)h(a)h(libtasn1)g(function.)390 5101 y(Prin)m(ts)26 b(a)g(string)h(to)f(stderr)g(with)g(a)g (description)g(of)h(an)f(error.)38 b(This)26 b(function)g(is)g(lik)m(e) h Fk(perror\(\))390 5211 y Fr(.)41 b(The)30 b(only)g(di\013erence)h(is) f(that)h(it)g(accepts)h(an)e(error)g(returned)f(b)m(y)i(a)f(libtasn1)h (function.)390 5340 y Fe(Since:)41 b Fr(1.6)p eop end %%Page: 20 23 TeXDict begin 20 22 bop 150 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unction)31 b(reference)2313 b(20)150 299 y Fj(asn1)p 396 299 37 5 v 55 w(strerror)3350 496 y Fr([F)-8 b(unction])-3599 b Fi(const)54 b(char)f(*)g(asn1_strerror)c Fh(\()p Fg(in)m(t)32 b Ff(error)p Fh(\))390 605 y Fg(error)7 b Fr(:)40 b(is)30 b(an)h(error)f(returned)f(b)m(y)h(a)h(libtasn1)g(function.)390 740 y(Returns)i(a)h(string)g(with)f(a)h(description)g(of)g(an)g(error.) 50 b(This)33 b(function)h(is)g(similar)g(to)g(strerror.)390 849 y(The)c(only)h(di\013erence)g(is)g(that)g(it)g(accepts)h(an)e (error)g(\(n)m(um)m(b)s(er\))g(returned)g(b)m(y)g(a)h(libtasn1)h(func-) 390 959 y(tion.)390 1093 y Fe(Returns:)40 b Fr(P)m(oin)m(ter)32 b(to)f(static)h(zero-terminated)g(string)f(describing)f(error)g(co)s (de.)390 1228 y Fe(Since:)41 b Fr(1.6)150 1460 y Fq(4.5)68 b(Auxilliary)46 b(functions)150 1685 y Fj(asn1)p 396 1685 V 55 w(\014nd)p 655 1685 V 54 w(no)s(de)3350 1881 y Fr([F)-8 b(unction])-3599 b Fi(asn1_node)55 b(asn1_find_node)50 b Fh(\()p Fg(asn1)p 1669 1881 28 4 v 40 w(no)s(de)30 b Ff(pointer)p Fg(,)j(const)e(c)m(har)f(*)h Ff(name)p Fh(\))390 1991 y Fg(p)s(oin)m(ter)7 b Fr(:)40 b(NODE)p 1021 1991 V 40 w(ASN)31 b(elemen)m(t)g(p)s(oin)m(ter.)390 2125 y Fg(name)5 b Fr(:)41 b(n)m(ull)30 b(terminated)h(string)f(with)g (the)h(elemen)m(t's)h(name)e(to)i(\014nd.)390 2260 y(Searc)m(hes)g(for) g(an)g(elemen)m(t)h(called)g Fk(name)e Fr(starting)h(from)f Fk(pointer)f Fr(.)45 b(The)31 b(name)h(is)g(comp)s(osed)390 2369 y(b)m(y)39 b(di\013eren)m(ts)g(iden)m(ti\014ers)g(separated)g(b)m (y)f(dots.)66 b(When)39 b(*)g Fk(pointer)e Fr(has)h(a)i(name,)h(the)e (\014rst)390 2479 y(iden)m(ti\014er)26 b(m)m(ust)g(b)s(e)g(the)g(name)g (of)g(*)h Fk(pointer)d Fr(,)j(otherwise)g(it)f(m)m(ust)g(b)s(e)g(the)g (name)g(of)g(one)h(c)m(hild)390 2589 y(of)k(*)f Fk(pointer)f Fr(.)390 2723 y Fe(Returns:)40 b Fr(the)31 b(searc)m(h)g(result,)f(or)h Fk(NULL)e Fr(if)h(not)h(found.)150 2922 y Fj(asn1)p 396 2922 37 5 v 55 w(c)m(hec)m(k)p 744 2922 V 52 w(v)m(ersion)3350 3119 y Fr([F)-8 b(unction])-3599 b Fi(const)54 b(char)f(*)g (asn1_check_version)e Fh(\()p Fg(const)31 b(c)m(har)g(*)g Ff(req_version)p Fh(\))390 3229 y Fg(req)p 520 3229 28 4 v 40 w(v)m(ersion)p Fr(:)41 b(Required)30 b(v)m(ersion)h(n)m(um)m(b)s (er,)e(or)i Fk(NULL)e Fr(.)390 3363 y(Chec)m(k)e(that)h(the)f(v)m (ersion)g(of)g(the)g(library)g(is)g(at)g(minim)m(um)g(the)g(requested)f (one)i(and)e(return)g(the)390 3473 y(v)m(ersion)j(string;)g(return)d Fk(NULL)h Fr(if)h(the)h(condition)f(is)g(not)h(satis\014ed.)40 b(If)27 b(a)i Fk(NULL)e Fr(is)h(passed)f(to)i(this)390 3582 y(function,)h(no)h(c)m(hec)m(k)h(is)e(done,)g(but)g(the)h(v)m (ersion)f(string)h(is)f(simply)g(returned.)390 3717 y(See)h Fk(ASN1_VERSION)c Fr(for)j(a)h(suitable)f Fk(req_version)e Fr(string.)390 3851 y Fe(Returns:)43 b Fr(V)-8 b(ersion)32 b(string)g(of)g(run-time)f(library)-8 b(,)33 b(or)e Fk(NULL)g Fr(if)h(the)g(run-time)f(library)g(do)s(es)h(not)390 3961 y(meet)f(the)g(required)e(v)m(ersion)i(n)m(um)m(b)s(er.)p eop end %%Page: 21 24 TeXDict begin 21 23 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(21)150 299 y Fn(App)t(endix)52 b(A)81 b(Cop)l(ying)52 b(Information)150 608 y Fq(A.1)67 b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h(License)1359 767 y Fr(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 898 y(Cop)m(yrigh)m(t)842 895 y(c)817 898 y Fo(\015)e Fr(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 1007 y Fk(http://fsf.org/)390 1227 y Fr(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 1336 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f (is)f(not)h(allo)m(w)m(ed.)199 1467 y(0.)61 b(PREAMBLE)330 1597 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g (a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 1707 y(useful)29 b(do)s(cumen)m(t)h Fg(free)36 b Fr(in)29 b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j (the)e(e\013ectiv)m(e)j(freedom)330 1817 y(to)f(cop)m(y)g(and)f (redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i (either)f(commercially)h(or)e(non-)330 1926 y(commercially)-8 b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f (the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 2036 y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g (considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 2145 y(made)30 b(b)m(y)h(others.)330 2276 y(This)22 b(License)i(is)f(a) h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 2385 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g (sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 2495 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) e(for)g(free)h(soft)m(w)m(are.)330 2626 y(W)-8 b(e)31 b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h (for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 2735 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) 65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 2845 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g (to)330 2954 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g (for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 b(ject)30 b(matter)i(or)330 3064 y(whether)f(it)h(is)f(published)f(as)i (a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h (License)g(principally)f(for)330 3174 y(w)m(orks)f(whose)h(purp)s(ose)d (is)j(instruction)f(or)g(reference.)199 3304 y(1.)61 b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3435 y(This)39 b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i (in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3544 y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 3654 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f (a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d (in)330 3764 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j (conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 3873 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h (or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g (a)h(licensee,)i(and)330 3983 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 4092 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) m(yrigh)m(t)j(la)m(w.)330 4223 y(A)i(\\Mo)s(di\014ed)f(V)-8 b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f (con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4333 y(a)k(p)s(ortion)f (of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s (di\014cations)f(and/or)h(translated)g(in)m(to)330 4442 y(another)31 b(language.)330 4573 y(A)26 b(\\Secondary)g(Section")h(is) f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f (the)g(Do)s(cumen)m(t)330 4682 y(that)c(deals)g(exclusiv)m(ely)h(with)e (the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f (Do)s(cumen)m(t)330 4792 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m (erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) m(tains)h(nothing)f(that)330 4902 y(could)j(fall)h(directly)g(within)f (that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 5011 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 b(The)330 5121 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e (historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 b(or)g(with)g(related)330 5230 y(matters,)38 b(or)d(of)h(legal,)i (commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s (osition)f(regarding)330 5340 y(them.)p eop end %%Page: 22 25 TeXDict begin 22 24 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(22)330 299 y(The)25 b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g (Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 408 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)330 518 y(under)f(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 628 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) e(In)m(v)-5 b(arian)m(t)330 737 y(Sections.)39 b(If)25 b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) -5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 878 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short) g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 b(ron)m(t-Co)m(v)m(er)330 988 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er) j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f (Do)s(cumen)m(t)h(is)f(released)g(under)330 1097 y(this)h(License.)40 b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26 b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m (v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 1207 y(b)s(e)k(at)h(most)g(25)g(w) m(ords.)330 1348 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g(the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m (hine-readable)h(cop)m(y)-8 b(,)38 b(represen)m(ted)330 1457 y(in)d(a)h(format)g(whose)g(sp)s(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g(public,)h(that)f(is)g(suitable)g (for)330 1567 y(revising)c(the)g(do)s(cumen)m(t)f(straigh)m(tforw)m (ardly)i(with)e(generic)i(text)g(editors)f(or)f(\(for)h(images)h(com-) 330 1677 y(p)s(osed)23 b(of)h(pixels\))g(generic)h(pain)m(t)f(programs) g(or)f(\(for)h(dra)m(wings\))g(some)g(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1786 y(editor,)k(and)f(that)g(is)g (suitable)h(for)f(input)f(to)i(text)g(formatters)f(or)g(for)g (automatic)i(translation)f(to)330 1896 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input)g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g(otherwise)330 2005 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g(whose)f(markup,)i(or)e (absence)h(of)g(markup,)g(has)g(b)s(een)f(arranged)g(to)330 2115 y(th)m(w)m(art)27 b(or)g(discourage)g(subsequen)m(t)f(mo)s (di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 b(ransparen)m(t.)39 b(An)27 b(image)330 2225 y(format)35 b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g(substan)m(tial)h(amoun) m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g(is)330 2334 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i(\\Opaque".)330 2475 y(Examples)49 b(of)f(suitable)i(formats)f(for)f(T)-8 b(ransparen)m(t)48 b(copies)i(include)e(plain)h(ASCI)s(I)e(without)330 2585 y(markup,)33 b(T)-8 b(exinfo)33 b(input)f(format,)i(LaT)1745 2604 y(E)1795 2585 y(X)f(input)f(format,)j(SGML)d(or)h(XML)h(using)e(a) h(publicly)330 2694 y(a)m(v)-5 b(ailable)36 b(DTD,)e(and)f (standard-conforming)h(simple)f(HTML,)h(P)m(ostScript)g(or)g(PDF)g (designed)330 2804 y(for)h(h)m(uman)g(mo)s(di\014cation.)57 b(Examples)35 b(of)h(transparen)m(t)f(image)i(formats)f(include)f(PNG,) h(X)m(CF)330 2913 y(and)h(JPG.)62 b(Opaque)36 b(formats)i(include)f (proprietary)g(formats)h(that)g(can)g(b)s(e)e(read)i(and)f(edited)330 3023 y(only)c(b)m(y)g(proprietary)f(w)m(ord)h(pro)s(cessors,)g(SGML)g (or)g(XML)g(for)g(whic)m(h)g(the)g(DTD)g(and/or)g(pro-)330 3133 y(cessing)26 b(to)s(ols)g(are)g(not)f(generally)i(a)m(v)-5 b(ailable,)29 b(and)24 b(the)i(mac)m(hine-generated)h(HTML,)e(P)m (ostScript)330 3242 y(or)30 b(PDF)h(pro)s(duced)e(b)m(y)h(some)h(w)m (ord)f(pro)s(cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330 3383 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m (ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f (follo)m(wing)330 3493 y(pages)28 b(as)g(are)g(needed)g(to)g(hold,)g (legibly)-8 b(,)30 b(the)e(material)h(this)e(License)i(requires)e(to)h (app)s(ear)f(in)h(the)330 3602 y(title)g(page.)40 b(F)-8 b(or)28 b(w)m(orks)e(in)g(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h (an)m(y)e(title)j(page)e(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 3712 y(means)j(the)f(text)i(near)e(the)h(most)g(prominen)m(t)g(app)s (earance)f(of)h(the)g(w)m(ork's)g(title,)h(preceding)f(the)330 3821 y(b)s(eginning)f(of)g(the)h(b)s(o)s(dy)e(of)h(the)h(text.)330 3962 y(The)j(\\publisher")g(means)h(an)m(y)f(p)s(erson)g(or)h(en)m(tit) m(y)h(that)f(distributes)f(copies)i(of)e(the)h(Do)s(cumen)m(t)330 4072 y(to)c(the)g(public.)330 4213 y(A)f(section)h(\\En)m(titled)g (XYZ")f(means)f(a)h(named)g(subunit)e(of)h(the)h(Do)s(cumen)m(t)h (whose)e(title)i(either)330 4322 y(is)d(precisely)g(XYZ)g(or)f(con)m (tains)i(XYZ)f(in)f(paren)m(theses)i(follo)m(wing)g(text)g(that)f (translates)h(XYZ)e(in)330 4432 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g(sp)s(eci\014c)g(section)h(name)f (men)m(tioned)h(b)s(elo)m(w,)g(suc)m(h)330 4542 y(as)i(\\Ac)m(kno)m (wledgemen)m(ts",)33 b(\\Dedications",)e(\\Endorsemen)m(ts",)e(or)f (\\History".\))42 b(T)-8 b(o)29 b(\\Preserv)m(e)330 4651 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g(section)g(when)f(y)m(ou)h(mo)s (dify)e(the)i(Do)s(cumen)m(t)h(means)e(that)h(it)g(remains)g(a)330 4761 y(section)e(\\En)m(titled)f(XYZ")g(according)g(to)g(this)g (de\014nition.)330 4902 y(The)c(Do)s(cumen)m(t)i(ma)m(y)f(include)f(W) -8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to)g(the)g(notice)h(whic)m (h)e(states)i(that)330 5011 y(this)34 b(License)g(applies)g(to)h(the)f (Do)s(cumen)m(t.)52 b(These)33 b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 5121 y(b)s(e)k(included)g(b)m (y)g(reference)h(in)g(this)f(License,)j(but)d(only)h(as)g(regards)f (disclaiming)i(w)m(arran)m(ties:)330 5230 y(an)m(y)e(other)g (implication)i(that)e(these)g(W)-8 b(arran)m(t)m(y)39 b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5340 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)p eop end %%Page: 23 26 TeXDict begin 23 25 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(23)199 299 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)330 445 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h(the)g(Do)s(cumen)m(t)h(in)f(an) m(y)g(medium,)h(either)g(commercially)h(or)330 555 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j(and)42 b(the)h(license)330 664 y(notice)37 b(sa)m(ying)g(this)e(License)i(applies)e(to)i(the)f(Do) s(cumen)m(t)g(are)g(repro)s(duced)e(in)i(all)g(copies,)j(and)330 774 y(that)27 b(y)m(ou)g(add)f(no)h(other)f(conditions)h(whatso)s(ev)m (er)h(to)f(those)g(of)g(this)f(License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 883 y(tec)m(hnical)35 b(measures)d(to)i (obstruct)f(or)g(con)m(trol)h(the)f(reading)g(or)g(further)e(cop)m (ying)j(of)f(the)g(copies)330 993 y(y)m(ou)25 b(mak)m(e)g(or)g (distribute.)38 b(Ho)m(w)m(ev)m(er,)28 b(y)m(ou)d(ma)m(y)g(accept)h (comp)s(ensation)f(in)f(exc)m(hange)j(for)d(copies.)330 1103 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f(n)m(um)m(b)s (er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g(the)f (conditions)330 1212 y(in)e(section)i(3.)330 1358 y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g (conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g (publicly)330 1468 y(displa)m(y)31 b(copies.)199 1614 y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1760 y(If)25 b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g (that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 1870 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f (100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 1979 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i (the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 2089 y(these)j(Co)m(v)m (er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 2198 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f (the)h(publisher)330 2308 y(of)k(these)h(copies.)53 b(The)34 b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i (with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2418 y(equally)e (prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g (other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 2527 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) 330 2637 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d (b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 2746 y(resp)s(ects.)330 2892 y(If)32 b(the)h(required)f(texts)i(for)e (either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g (legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 3002 y(the)h(\014rst)f (ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 3112 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3258 y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f (the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 3367 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g (T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) 330 3477 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h (Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d (whic)m(h)330 3587 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e (has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m (ork)330 3696 y(proto)s(cols)40 b(a)f(complete)h(T)-8 b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g (added)f(material.)67 b(If)330 3806 y(y)m(ou)39 b(use)g(the)g(latter)h (option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e (steps,)k(when)d(y)m(ou)h(b)s(egin)330 3915 y(distribution)f(of)g (Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 4025 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s (cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h (time)330 4134 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i (\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h (of)f(that)330 4244 y(edition)31 b(to)g(the)g(public.)330 4390 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g (con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 4500 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s (er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m (vide)g(y)m(ou)330 4609 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g (the)f(Do)s(cumen)m(t.)199 4756 y(4.)61 b(MODIFICA)-8 b(TIONS)330 4902 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) e(the)h(conditions)330 5011 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f (V)-8 b(ersion)22 b(under)d(precisely)330 5121 y(this)29 b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f (licensing)330 5230 y(distribution)k(and)h(mo)s(di\014cation)g(of)h (the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s (ossesses)f(a)i(cop)m(y)g(of)330 5340 y(it.)41 b(In)30 b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s (di\014ed)e(V)-8 b(ersion:)p eop end %%Page: 24 27 TeXDict begin 24 26 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(24)357 299 y(A.)60 b(Use)33 b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m (ers,)i(if)e(an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the) 510 408 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)510 518 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 628 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 758 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h (one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c (for)510 867 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g (Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h (\014v)m(e)510 977 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s (cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g (few)m(er)510 1087 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g (y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1217 y(C.)60 b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g (publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 b(as)f(the)510 1326 y(publisher.)355 1456 y(D.)61 b(Preserv)m(e)31 b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) 363 1587 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i (notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g (other)510 1696 y(cop)m(yrigh)m(t)g(notices.)365 1826 y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g (notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 1936 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g (form)510 2045 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 2176 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f (full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e (required)g(Co)m(v)m(er)510 2285 y(T)-8 b(exts)31 b(giv)m(en)g(in)f (the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2415 y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) 392 2545 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g (\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g (item)510 2655 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d (authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)510 2765 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e (the)g(Do)s(cu-)510 2874 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f (title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s (cumen)m(t)510 2984 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i (then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 b(ersion)37 b(as)510 3093 y(stated)31 b(in)f(the)h(previous)f(sen)m (tence.)378 3224 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s (cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m (t)h(for)g(public)e(access)j(to)510 3333 y(a)e(T)-8 b(ransparen)m(t)30 b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3443 y(the)g(Do)s(cumen)m (t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3552 y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h (published)510 3662 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e (the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) d(of)i(the)510 3771 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s (ermission.)354 3902 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m (titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k (Preserv)m(e)c(the)g(Title)510 4011 y(of)j(the)f(section,)j(and)d (preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) h(of)f(eac)m(h)i(of)f(the)510 4121 y(con)m(tributor)k(ac)m(kno)m (wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 4251 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f (in)f(their)g(text)i(and)510 4361 y(in)f(their)g(titles.)58 b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 4470 y(section)c(titles.)341 4600 y(M.)61 b(Delete)33 b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 4710 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 4840 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f (to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g (in)510 4950 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 b(Section.)354 5080 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 5230 y(If)h(the)g(Mo)s(di\014ed)g (V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f (app)s(endices)g(that)h(qualify)330 5340 y(as)28 b(Secondary)g (Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h (Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)p eop end %%Page: 25 28 TeXDict begin 25 27 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(25)330 299 y(y)m(our)32 b(option)h(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e (in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)330 408 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 518 y(titles)32 b(m)m(ust)e(b)s(e)g (distinct)h(from)e(an)m(y)i(other)g(section)g(titles.)330 650 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section)i(En)m(titled)f (\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g(nothing)g(but) 330 759 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 b(parties|for)g(example,)g (statemen)m(ts)i(of)330 869 y(p)s(eer)27 b(review)g(or)g(that)h(the)f (text)i(has)d(b)s(een)h(appro)m(v)m(ed)g(b)m(y)g(an)h(organization)h (as)e(the)h(authoritativ)m(e)330 978 y(de\014nition)i(of)h(a)f (standard.)330 1110 y(Y)-8 b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g (up)e(to)i(\014v)m(e)g(w)m(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er) 30 b(T)-8 b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1219 y(to)g(25)g(w)m(ords)e(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s(di\014ed)330 1329 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f(F)-8 b(ron)m(t-Co)m(v)m (er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1439 y(added)27 b(b)m(y)g(\(or)h(through) f(arrangemen)m(ts)h(made)g(b)m(y\))g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t)g(already)330 1548 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g(same)h(co)m(v)m (er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m(y)g(arrangemen)m (t)330 1658 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m(y)i(y)m(ou)f(are)f (acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g(not)f(add)g (another;)j(but)330 1767 y(y)m(ou)c(ma)m(y)h(replace)g(the)f(old)g (one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e (publisher)f(that)330 1877 y(added)e(the)g(old)h(one.)330 2008 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s (cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s (ermission)330 2118 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g (for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g (Mo)s(di\014ed)330 2228 y(V)-8 b(ersion.)199 2359 y(5.)61 b(COMBINING)31 b(DOCUMENTS)330 2491 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m (bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h (released)g(under)f(this)g(License,)330 2600 y(under)f(the)h(terms)g (de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f (v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2710 y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s (cumen)m(ts,)330 2819 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g (as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) g(w)m(ork)f(in)h(its)g(license)330 2929 y(notice,)32 b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 b(arran)m(t)m(y)32 b(Disclaimers.)330 3061 y(The)e(com)m(bined)g(w)m (ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) i(and)d(m)m(ultiple)i(iden)m(tical)330 3170 y(In)m(v)-5 b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h (single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m (v)-5 b(arian)m(t)330 3280 y(Sections)27 b(with)g(the)g(same)g(name)g (but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f (eac)m(h)h(suc)m(h)f(section)330 3389 y(unique)33 b(b)m(y)h(adding)f (at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g (the)g(original)h(author)f(or)330 3499 y(publisher)23 b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m (um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 3608 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h (com)m(bined)330 3718 y(w)m(ork.)330 3850 y(In)41 b(the)g(com)m (bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g (En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 3959 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h (En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 4069 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 b(Y)-8 b(ou)330 4178 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m (titled)f(\\Endorsemen)m(ts.")199 4310 y(6.)61 b(COLLECTIONS)28 b(OF)i(DOCUMENTS)330 4441 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f (collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g (do)s(cumen)m(ts)f(released)330 4551 y(under)41 b(this)h(License,)k (and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f (the)h(v)-5 b(arious)330 4661 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 b(pro)m(vided)42 b(that)i(y)m(ou)330 4770 y(follo)m(w)38 b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g (of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 4880 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h (collection,)i(and)d(distribute)g(it)h(individu-)330 5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g (a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end %%Page: 26 29 TeXDict begin 26 28 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(26)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h(W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f(its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep)s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h(on)f(a)g(v)m (olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g(is)h(called) 330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i(resulting)e (from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g(the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e(b)s(ey)m (ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g (aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g (other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h (not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h (Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f (these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241 y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f (of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m (er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m (ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h (aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5 b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f (in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f (brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61 b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a) i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e (translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h (terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f (sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i (holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24 b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f (License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the) h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513 y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g (License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f (translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f (License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m (ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28 b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m (kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m (e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61 b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h (Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38 b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g (cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330 3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically) i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330 3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i (of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h (particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h (\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g (cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h (terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8 b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34 b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h (reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288 y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d (license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h (reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h (holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g (reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m (ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f (License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330 4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g (violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h (of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28 b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h (terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38 b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e) 330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end %%Page: 27 30 TeXDict begin 27 29 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(27)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g(the)g(GNU)g(F) -8 b(ree)330 543 y(Do)s(cumen)m(tation)34 b(License)e(from)g(time)h(to) g(time.)46 b(Suc)m(h)31 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h (in)g(spirit)330 653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m (y)h(di\013er)f(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i (concerns.)330 762 y(See)c Fk(http://www.gnu.org/copy)o(left)o(/)p Fr(.)330 897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m (en)g(a)g(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29 b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g (License)h(\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33 b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f (follo)m(wing)i(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m (ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g (b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s (ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445 y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m (ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46 b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f (can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f (License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen) m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m (tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g (for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330 2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or) e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330 2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m (table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h (facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g (w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i (edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33 b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s (oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330 2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m (orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330 2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m (ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330 2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a) g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330 2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29 b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions) f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g (organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e (or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h (as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330 3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h (licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330 3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h (License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330 3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f (part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts) 330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j (w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s (er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h (Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site) g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end %%Page: 28 31 TeXDict begin 28 30 bop 150 -116 a Fr(App)s(endix)29 b(A:)h(Cop)m(ying)h(Information)2140 b(28)150 299 y Fq(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f(for)g(y)l(our)g(do)t(cumen)l(ts) 150 458 y Fr(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m (t)g(y)m(ou)f(ha)m(v)m(e)i(written,)g(include)f(a)f(cop)m(y)i(of)f(the) f(License)h(in)g(the)150 568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g (follo)m(wing)i(cop)m(yrigh)m(t)g(and)e(license)h(notices)g(just)f (after)h(the)g(title)h(page:)468 680 y Fd(Copyright)42 b(\(C\))79 b Fc(year)g(your)40 b(name)p Fd(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h(distribute)g(and/or)g (modify)f(this)g(document)468 854 y(under)h(the)f(terms)g(of)g(the)g (GNU)g(Free)g(Documentation)i(License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h(published)h(by)d(the)h(Free)g (Software)h(Foundation;)468 1029 y(with)g(no)e(Invariant)j(Sections,)f (no)f(Front-Cover)h(Texts,)g(and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f(license)i(is)f(included)h (in)f(the)g(section)g(entitled)h(``GNU)468 1203 y(Free)g(Documentation) h(License''.)275 1337 y Fr(If)d(y)m(ou)h(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6 b(.)22 b(.)g(.)12 b(T)-8 b(exts.")31 b(line)g(with)f(this:)547 1559 y Fd(with)40 b(the)g(Invariant)h(Sections)g(being)g Fc(list)f(their)g(titles)p Fd(,)h(with)547 1646 y(the)f(Front-Cover)i(Texts)e(being)g Fc(list)p Fd(,)h(and)f(with)g(the)g(Back-Cover)h(Texts)547 1733 y(being)f Fc(list)p Fd(.)275 1868 y Fr(If)34 b(y)m(ou)i(ha)m(v)m (e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f(Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g(of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g(alternativ)m(es)i(to)e (suit)f(the)h(situation.)275 2112 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f (con)m(tains)i(non)m(trivial)g(examples)g(of)f(program)f(co)s(de,)j(w)m (e)e(recommend)g(releasing)150 2222 y(these)44 b(examples)f(in)g (parallel)h(under)e(y)m(our)h(c)m(hoice)i(of)e(free)g(soft)m(w)m(are)h (license,)k(suc)m(h)43 b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s(ermit)e(their)i(use)f(in)g(free)g(soft)m (w)m(are.)p eop end %%Page: 29 32 TeXDict begin 29 31 bop 150 -116 a Fr(Concept)31 b(Index)2927 b(29)150 299 y Fn(Concept)52 b(Index)150 638 y Fq(A)150 757 y Fb(ASN.1)25 b(sc)n(hema)14 b Fa(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(2)150 846 y(asn1Co)r(ding)27 b(program)10 b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(5)150 935 y(asn1Deco)r(ding)27 b(program)8 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(6)150 1023 y(asn1P)n(arser)27 b(program)7 b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(5)150 1281 y Fq(F)150 1400 y Fb(FDL,)26 b(GNU)f(F)-6 b(ree)25 b(Do)r(cumen)n(tation)h(License)20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)45 b Fb(21)150 1489 y(F)-6 b(uture)25 b(dev)n(elopmen)n(ts)9 b Fa(:)k(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(4)150 1746 y Fq(H)150 1866 y Fb(Header)26 b(\014le)f(libtasn1.h)18 b Fa(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)45 b Fb(4)2025 638 y Fq(M)2025 760 y Fb(Main)26 b(t)n(yp)r(e)f(asn1)p 2550 760 24 4 v 34 w(no)r(de)19 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)46 b Fb(4)2025 1023 y Fq(P)2025 1145 y Fb(P)n(orting)12 b Fa(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)39 b Fb(1)2025 1408 y Fq(S)2025 1530 y Fb(Supp)r(orted)24 b(ASN.1)h(t)n(yp)r(es,)h(list)g(of)14 b Fa(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)41 b Fb(2)2025 1793 y Fq(T)2025 1915 y Fb(threads)13 b Fa(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)40 b Fb(1)p eop end %%Page: 30 33 TeXDict begin 30 32 bop 150 -116 a Fr(F)-8 b(unction)31 b(and)f(Data)i(Index)2503 b(30)150 299 y Fn(F)-13 b(unction)52 b(and)h(Data)i(Index)150 610 y Fd(asn1_array2tree)13 b Fa(:)k(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(8)150 697 y Fd(asn1_bit_der)22 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(15)150 785 y Fd(asn1_check_version)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(20)150 872 y Fd(asn1_copy_node)14 b Fa(:)i(:)d(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)40 b Fb(10)150 959 y Fd(asn1_create_element)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(9)150 1046 y Fd(asn1_decode_simple_der)10 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)37 b Fb(19)150 1133 y Fd(asn1_delete_element)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(8)150 1220 y Fd(asn1_delete_structure)15 b Fa(:)j(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(8)150 1308 y Fd(asn1_delete_structure2)13 b Fa(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)40 b Fb(8)150 1395 y Fd(asn1_der_coding)11 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(15)150 1482 y Fd(asn1_der_decoding)6 b Fa(:)17 b(:)c(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)32 b Fb(17)150 1569 y Fd(asn1_der_decoding_element) 26 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)46 b Fb(18)150 1656 y Fd(asn1_der_decoding_startEnd)18 b Fa(:)g(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) 44 b Fb(18)150 1743 y Fd(asn1_encode_simple_der)10 b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(15)150 1831 y Fd (asn1_expand_any_defined_by)18 b Fa(:)g(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(18)150 1918 y Fd(asn1_expand_octet_string)28 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(19)150 2005 y Fd(asn1_find_node)14 b Fa(:)i(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)40 b Fb(20)150 2092 y Fd(asn1_find_structure_from_oid)15 b Fa(:)k(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) 41 b Fb(9)2025 610 y Fd(asn1_get_bit_der)9 b Fa(:)16 b(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(17)2025 697 y Fd(asn1_get_length_ber)18 b Fa(:)f(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fb(16)2025 785 y Fd(asn1_get_length_der)18 b Fa(:)f(:)c(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)45 b Fb(16)2025 872 y Fd(asn1_get_octet_der)25 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(17)2025 959 y Fd(asn1_get_tag_der)9 b Fa(:)16 b(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)35 b Fb(16)2025 1046 y Fd(asn1_length_der)11 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(14)2025 1133 y Fd(asn1_number_of_elements)10 b Fa(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)37 b Fb(9)2025 1220 y Fd(asn1_octet_der)14 b Fa(:)i(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(14)2025 1308 y Fd(asn1_parser2array)8 b Fa(:)17 b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(7)2025 1395 y Fd(asn1_parser2tree)11 b Fa(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)38 b Fb(7)2025 1482 y Fd(asn1_perror)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) 48 b Fb(19)2025 1569 y Fd(asn1_print_structure)18 b Fa(:)f(:)c(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)45 b Fb(9)2025 1656 y Fd(asn1_read_node_value)16 b Fa(:)h(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(14)2025 1743 y Fd(asn1_read_tag)16 b Fa(:)g(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fb(13)2025 1831 y Fd(asn1_read_value)11 b Fa(:)17 b(:)c(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(11)2025 1918 y Fd (asn1_read_value_type)16 b Fa(:)h(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(12)2025 2005 y Fd(asn1_strerror)16 b Fa(:)g(:)d(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fb(20)2025 2092 y Fd(asn1_write_value)9 b Fa(:)16 b(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)35 b Fb(10)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF libtasn1-3.4/doc/Makefile.am0000664000000000000000000001554612244721142012601 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . SUBDIRS = cyclo if ENABLE_GTK_DOC SUBDIRS += reference endif EXTRA_DIST = gdoc TODO libtasn1.html libtasn1.ps libtasn1.pdf info_TEXINFOS = libtasn1.texi libtasn1_TEXINFOS = fdl-1.3.texi texinfo.css $(gdoc_TEXINFOS) AM_MAKEINFOFLAGS = -I $(top_builddir)/doc TEXI2DVI = texi2dvi $(AM_MAKEINFOFLAGS) AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \ --no-split --number-sections --css-include=texinfo.css dist_man_MANS = $(gdoc_MANS) asn1Parser.1 asn1Coding.1 asn1Decoding.1 HELP2MAN_OPTS = --info-page libtasn1 asn1Parser.1: $(top_srcdir)/src/asn1Parser.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 syntax tree generator for libtasn1" \ --output=$@ $(top_builddir)/src/asn1Parser$(EXEEXT) asn1Coding.1: $(top_srcdir)/src/asn1Coding.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER encoder" \ --output=$@ $(top_builddir)/src/asn1Coding$(EXEEXT) asn1Decoding.1: $(top_srcdir)/src/asn1Decoding.c $(top_srcdir)/configure.ac $(HELP2MAN) $(HELP2MAN_OPTS) \ --name="ASN.1 DER decoder" \ --output=$@ $(top_builddir)/src/asn1Decoding$(EXEEXT) gdoc_MANS = gdoc_MANS += man/asn1_get_length_der.3 gdoc_MANS += man/asn1_get_tag_der.3 gdoc_MANS += man/asn1_get_length_ber.3 gdoc_MANS += man/asn1_get_octet_der.3 gdoc_MANS += man/asn1_get_bit_der.3 gdoc_MANS += man/asn1_der_decoding.3 gdoc_MANS += man/asn1_der_decoding_element.3 gdoc_MANS += man/asn1_der_decoding_startEnd.3 gdoc_MANS += man/asn1_expand_any_defined_by.3 gdoc_MANS += man/asn1_expand_octet_string.3 gdoc_MANS += man/asn1_decode_simple_der.3 gdoc_MANS += man/asn1_perror.3 gdoc_MANS += man/asn1_strerror.3 gdoc_MANS += man/asn1_find_node.3 gdoc_MANS += man/asn1_length_der.3 gdoc_MANS += man/asn1_octet_der.3 gdoc_MANS += man/asn1_encode_simple_der.3 gdoc_MANS += man/asn1_bit_der.3 gdoc_MANS += man/asn1_der_coding.3 gdoc_MANS += man/asn1_write_value.3 gdoc_MANS += man/asn1_read_value.3 gdoc_MANS += man/asn1_read_value_type.3 gdoc_MANS += man/asn1_read_tag.3 gdoc_MANS += man/asn1_read_node_value.3 gdoc_MANS += man/asn1_array2tree.3 gdoc_MANS += man/asn1_delete_structure.3 gdoc_MANS += man/asn1_delete_structure2.3 gdoc_MANS += man/asn1_delete_element.3 gdoc_MANS += man/asn1_create_element.3 gdoc_MANS += man/asn1_print_structure.3 gdoc_MANS += man/asn1_number_of_elements.3 gdoc_MANS += man/asn1_find_structure_from_oid.3 gdoc_MANS += man/asn1_copy_node.3 gdoc_MANS += man/asn1_parser2tree.3 gdoc_MANS += man/asn1_parser2array.3 gdoc_MANS += man/asn1_check_version.3 gdoc_TEXINFOS = gdoc_TEXINFOS += texi/decoding.c.texi gdoc_TEXINFOS += texi/errors.c.texi gdoc_TEXINFOS += texi/parser_aux.c.texi gdoc_TEXINFOS += texi/coding.c.texi gdoc_TEXINFOS += texi/element.c.texi gdoc_TEXINFOS += texi/gstr.c.texi gdoc_TEXINFOS += texi/structure.c.texi gdoc_TEXINFOS += texi/ASN1.c.texi gdoc_TEXINFOS += texi/version.c.texi gdoc_TEXINFOS += texi/asn1_get_length_der.texi gdoc_TEXINFOS += texi/asn1_get_tag_der.texi gdoc_TEXINFOS += texi/asn1_get_length_ber.texi gdoc_TEXINFOS += texi/asn1_get_octet_der.texi gdoc_TEXINFOS += texi/asn1_get_bit_der.texi gdoc_TEXINFOS += texi/asn1_der_decoding.texi gdoc_TEXINFOS += texi/asn1_der_decoding_element.texi gdoc_TEXINFOS += texi/asn1_der_decoding_startEnd.texi gdoc_TEXINFOS += texi/asn1_expand_any_defined_by.texi gdoc_TEXINFOS += texi/asn1_expand_octet_string.texi gdoc_TEXINFOS += texi/asn1_decode_simple_der.texi gdoc_TEXINFOS += texi/asn1_perror.texi gdoc_TEXINFOS += texi/asn1_strerror.texi gdoc_TEXINFOS += texi/asn1_find_node.texi gdoc_TEXINFOS += texi/asn1_length_der.texi gdoc_TEXINFOS += texi/asn1_octet_der.texi gdoc_TEXINFOS += texi/asn1_encode_simple_der.texi gdoc_TEXINFOS += texi/asn1_bit_der.texi gdoc_TEXINFOS += texi/asn1_der_coding.texi gdoc_TEXINFOS += texi/asn1_write_value.texi gdoc_TEXINFOS += texi/asn1_read_value.texi gdoc_TEXINFOS += texi/asn1_read_value_type.texi gdoc_TEXINFOS += texi/asn1_read_tag.texi gdoc_TEXINFOS += texi/asn1_read_node_value.texi gdoc_TEXINFOS += texi/asn1_array2tree.texi gdoc_TEXINFOS += texi/asn1_delete_structure.texi gdoc_TEXINFOS += texi/asn1_delete_structure2.texi gdoc_TEXINFOS += texi/asn1_delete_element.texi gdoc_TEXINFOS += texi/asn1_create_element.texi gdoc_TEXINFOS += texi/asn1_print_structure.texi gdoc_TEXINFOS += texi/asn1_number_of_elements.texi gdoc_TEXINFOS += texi/asn1_find_structure_from_oid.texi gdoc_TEXINFOS += texi/asn1_copy_node.texi gdoc_TEXINFOS += texi/asn1_parser2tree.texi gdoc_TEXINFOS += texi/asn1_parser2array.texi gdoc_TEXINFOS += texi/asn1_check_version.texi GDOC_SRC = $(top_srcdir)/lib/decoding.c $(top_srcdir)/lib/errors.c \ $(top_srcdir)/lib/parser_aux.c $(top_srcdir)/lib/coding.c \ $(top_srcdir)/lib/element.c $(top_srcdir)/lib/gstr.c \ $(top_srcdir)/lib/structure.c $(top_srcdir)/lib/ASN1.c \ $(top_srcdir)/lib/version.c compare-makefile: @MANS=""; \ TEXINFOS=""; \ for i in $(GDOC_SRC); do \ BASE=`basename $$i`; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$BASE.texi"; \ done; \ FUNCS=`$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; \ for i in $$FUNCS; do \ MANS="$$MANS\ngdoc_MANS += man/$$i.3"; \ TEXINFOS="$$TEXINFOS\ngdoc_TEXINFOS += texi/$$i.texi"; \ done; \ grep -v -e '^gdoc_MANS += ' -e '^gdoc_TEXINFOS += ' Makefile.am | \ perl -p -e "s,^gdoc_MANS =,gdoc_MANS =$$MANS,;" | \ perl -p -e "s,^gdoc_TEXINFOS =,gdoc_TEXINFOS =$$TEXINFOS,;" \ > tmp-$@; diff -u $(srcdir)/Makefile.am tmp-$@ rm -f tmp-$@ $(gdoc_MANS) $(gdoc_TEXINFOS): stamp_docs clean-local: -rm -f stamp_docs stamp_docs: $(mkdir_p) man texi; \ for i in `$(srcdir)/gdoc -listfunc $(GDOC_SRC)`; do \ echo -n "Creating documentation for $$i... " && \ $(srcdir)/gdoc -man \ -module $(PACKAGE) \ -pkg-name "$(PACKAGE_NAME)" \ -sourceversion $(VERSION) \ -include libtasn1.h \ -seeinfo $(PACKAGE) -verbatimcopying \ -copyright "2006-2013 Free Software Foundation, Inc." \ -function $$i \ $(GDOC_SRC) > man/$$i.3 && \ $(srcdir)/gdoc -texinfo -function $$i \ $(GDOC_SRC) > texi/$$i.texi && \ echo "ok"; \ done; \ for i in $(GDOC_SRC); do \ BASE=`basename $$i`; \ echo -n "Creating documentation for $$i... " && \ $(srcdir)/gdoc -texinfo $$i > texi/$$BASE.texi && \ echo "ok"; \ done touch $@ .PHONY: compare-makefile libtasn1-3.4/Makefile.am0000664000000000000000000000310612244720630012022 00000000000000## Process this file with automake to produce Makefile.in # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is part of LIBTASN1. # # 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 . DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc EXTRA_DIST = windows/asn1-parser/asn1-parser.vcproj \ windows/asn1-parser/config.h windows/libtasn1.ncb \ windows/libtasn1.sln windows/libtasn1.suo \ windows/gnulib/getopt.h windows/gnulib/gnulib.vcproj \ windows/libtasn1/libtasn1.vcproj \ windows/test-parser/test-parser.vcproj \ windows/test-tree/test-tree.vcproj windows/libtasn14win.mk SUBDIRS = gl lib src examples tests doc ACLOCAL_AMFLAGS = -I m4 -I gl/m4 -I lib/glm4 EXTRA_DIST += cfg.mk maint.mk .clcopying gnulib-update: gnulib-tool --add-import --dir=. --lib=libgnu --source-base=lib/gllib --m4-base=lib/glm4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --lgpl=2 --no-conditional-dependencies --libtool --macro-prefix=lgl --no-vc-files dist-hook: make -C doc/ compare-makefile