remove stray CRs in files; keep all files with UNIX line-ends
authorGurusamy Sarathy <gsar@cpan.org>
Sun, 2 Sep 2001 01:06:30 +0000 (01:06 +0000)
committerGurusamy Sarathy <gsar@cpan.org>
Sun, 2 Sep 2001 01:06:30 +0000 (01:06 +0000)
(Porting/makerel adds CRs to the files that need it in the
distribution)

p4raw-id: //depot/perl@11821

NetWare/t/NWScripts.pl
README.dos
ext/Encode/Encode/cns11643-1.enc
ext/Encode/Encode/cns11643-2.enc
ext/SDBM_File/Makefile.PL
jpl/JNI/JNI.xs
jpl/JNI/Makefile.PL

index bd1ab91..a2f22a4 100644 (file)
@@ -11,7 +11,7 @@ $DirName = "t";
 
 # These scripts have problems (either abend or hang) as of now (11 May 2001).
 # So, they are commented out in the corresponding auto scripts, io.pl and lib.pl
-@ScriptsNotUsed = ("t/io/argv.t", "t/io/openpid.t", "t/lib/filehandle.t", "t/lib/warnings.t");\r
+@ScriptsNotUsed = ("t/io/argv.t", "t/io/openpid.t", "t/lib/filehandle.t", "t/lib/warnings.t");
 
 opendir(DIR, $DirName);
 @Dirs = readdir(DIR);
index 207325a..9c444a4 100644 (file)
-If you read this file _as_is_, just ignore the funny characters you\r
-see. It is written in the POD format (see perlpod manpage) which is\r
-specially designed to be readable as is.\r
-\r
-=head1 NAME\r
-\r
-perldos - Perl under DOS, W31, W95.\r
-\r
-=head1 SYNOPSIS\r
-\r
-These are instructions for building Perl under DOS (or w??), using\r
-DJGPP v2.03 or later.  Under w95 long filenames are supported.\r
-\r
-=head1 DESCRIPTION\r
-\r
-Before you start, you should glance through the README file\r
-found in the top-level directory where the Perl distribution\r
-was extracted.  Make sure you read and understand the terms under\r
-which this software is being distributed.\r
-\r
-This port currently supports MakeMaker (the set of modules that\r
-is used to build extensions to perl).  Therefore, you should be\r
-able to build and install most extensions found in the CPAN sites.\r
-\r
-Detailed instructions on how to build and install perl extension\r
-modules, including XS-type modules, is included.  See 'BUILDING AND\r
-INSTALLING MODULES'.\r
-\r
-=head2 Prerequisites for Compiling Perl on DOS\r
-\r
-=over 4\r
-\r
-=item DJGPP\r
-\r
-DJGPP is a port of GNU C/C++ compiler and development tools to 32-bit,\r
-protected-mode environment on Intel 32-bit CPUs running MS-DOS and compatible\r
-operating systems, by DJ Delorie <dj@delorie.com> and friends.\r
-\r
-For more details (FAQ), check out the home of DJGPP at:\r
-\r
-        http://www.delorie.com/djgpp/\r
-\r
-If you have questions about DJGPP, try posting to the DJGPP newsgroup:\r
-comp.os.msdos.djgpp, or use the email gateway djgpp@delorie.com.\r
-\r
-You can find the full DJGPP distribution on any SimTel.Net mirror all over\r
-the world. Like:\r
-\r
-        ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2*\r
-\r
-You need the following files to build perl (or add new modules):\r
-\r
-        v2/djdev203.zip\r
-        v2/bnu2951b.zip\r
-        v2gnu/gcc2952b.zip\r
-        v2gnu/bsh204b.zip\r
-        v2gnu/mak3791b.zip\r
-        v2gnu/fil316b.zip\r
-        v2gnu/sed302b.zip\r
-        v2gnu/txt20b.zip\r
-        v2gnu/dif272b.zip\r
-        v2gnu/grep24b.zip\r
-        v2gnu/shl112b.zip\r
-        v2gnu/gawk303b.zip\r
-        v2misc/csdpmi4b.zip\r
-\r
-or possibly any newer version.\r
-\r
-=item Pthreads\r
-\r
-Thread support is not tested in this version of the djgpp perl.\r
-\r
-=back\r
-\r
-=head2 Shortcomings of Perl under DOS\r
-\r
-Perl under DOS lacks some features of perl under UNIX because of\r
-deficiencies in the UNIX-emulation, most notably:\r
-\r
-=over 4\r
-\r
-=item *\r
-\r
-fork() and pipe()\r
-\r
-=item *\r
-\r
-some features of the UNIX filesystem regarding link count and file dates\r
-\r
-=item *\r
-\r
-in-place operation is a little bit broken with short filenames\r
-\r
-=item *\r
-\r
-sockets\r
-\r
-=back\r
-\r
-=head2 Building Perl on DOS\r
-\r
-=over 4\r
-\r
-=item *\r
-\r
-Unpack the source package F<perl5.6*.tar.gz> with djtarx. If you want\r
-to use long file names under w95 and also to get Perl to pass all its\r
-tests, don't forget to use\r
-\r
-        set LFN=y\r
-        set FNCASE=y\r
-\r
-before unpacking the archive.\r
-\r
-=item *\r
-\r
-Create a "symlink" or copy your bash.exe to sh.exe in your C<($DJDIR)/bin>\r
-directory.\r
-\r
-        ln -s bash.exe sh.exe\r
-\r
-[If you have the recommended version of bash for DJGPP, this is already\r
-done for you.]\r
-\r
-And make the C<SHELL> environment variable point to this F<sh.exe>:\r
-\r
-        set SHELL=c:/djgpp/bin/sh.exe (use full path name!)\r
-\r
-You can do this in F<djgpp.env> too. Add this line BEFORE any section\r
-definition:\r
-\r
-        +SHELL=%DJDIR%/bin/sh.exe\r
-\r
-=item *\r
-\r
-If you have F<split.exe> and F<gsplit.exe> in your path, then rename \r
-F<split.exe> to F<djsplit.exe>, and F<gsplit.exe> to F<split.exe>.\r
-Copy or link F<gecho.exe> to F<echo.exe> if you don't have F<echo.exe>.\r
-Copy or link F<gawk.exe> to F<awk.exe> if you don't have F<awk.exe>.\r
-\r
-[If you have the recommended versions of djdev, shell utilities and\r
-gawk, all these are already done for you, and you will not need to do\r
-anything.]\r
-\r
-=item *\r
-\r
-Chdir to the djgpp subdirectory of perl toplevel and type the following\r
-commands:\r
-\r
-        set FNCASE=y\r
-        configure.bat\r
-\r
-This will do some preprocessing then run the Configure script for you.\r
-The Configure script is interactive, but in most cases you just need to\r
-press ENTER.  The "set" command ensures that DJGPP preserves the letter\r
-case of file names when reading directories.  If you already issued this\r
-set command when unpacking the archive, and you are in the same DOS\r
-session as when you unpacked the archive, you don't have to issue the\r
-set command again.  This command is necessary *before* you start to \r
-(re)configure or (re)build perl in order to ensure both that perl builds \r
-correctly and that building XS-type modules can succeed.  See the DJGPP \r
-info entry for "_preserve_fncase" for more information:\r
-\r
-        info libc alphabetical _preserve_fncase\r
-\r
-If the script says that your package is incomplete, and asks whether\r
-to continue, just answer with Y (this can only happen if you don't use\r
-long filenames or forget to issue "set FNCASE=y" first).\r
-\r
-When Configure asks about the extensions, I suggest IO and Fcntl,\r
-and if you want database handling then SDBM_File or GDBM_File\r
-(you need to install gdbm for this one). If you want to use the\r
-POSIX extension (this is the default), make sure that the stack\r
-size of your F<cc1.exe> is at least 512kbyte (you can check this\r
-with: C<stubedit cc1.exe>).\r
-\r
-You can use the Configure script in non-interactive mode too.\r
-When I built my F<perl.exe>, I used something like this:\r
-\r
-        configure.bat -des\r
-\r
-You can find more info about Configure's command line switches in\r
-the F<INSTALL> file.\r
-\r
-When the script ends, and you want to change some values in the\r
-generated F<config.sh> file, then run\r
-\r
-        sh Configure -S\r
-\r
-after you made your modifications.\r
-\r
-IMPORTANT: if you use this C<-S> switch, be sure to delete the CONFIG\r
-environment variable before running the script:\r
-\r
-        set CONFIG=\r
-\r
-=item *\r
-\r
-Now you can compile Perl. Type:\r
-\r
-        make\r
-\r
-=back\r
-\r
-=head2 Testing Perl on DOS\r
-\r
-Type:\r
-\r
-        make test\r
-\r
-If you're lucky you should see "All tests successful". But there can be\r
-a few failed subtests (less than 5 hopefully) depending on some external\r
-conditions (e.g. some subtests fail under linux/dosemu or plain dos\r
-with short filenames only).\r
-\r
-=head2 Installation of Perl on DOS\r
-\r
-Type:\r
-\r
-        make install\r
-\r
-This will copy the newly compiled perl and libraries into your DJGPP\r
-directory structure. Perl.exe and the utilities go into C<($DJDIR)/bin>,\r
-and the library goes under C<($DJDIR)/lib/perl5>. The pod documentation\r
-goes under C<($DJDIR)/lib/perl5/pod>.\r
-\r
-=head1 BUILDING AND INSTALLING MODULES ON DOS\r
-\r
-=head2 Building Prerequisites for Perl on DOS\r
-\r
-For building and installing non-XS modules, all you need is a working\r
-perl under DJGPP.  Non-XS modules do not require re-linking the perl\r
-binary, and so are simpler to build and install.\r
-\r
-XS-type modules do require re-linking the perl binary, because part of\r
-an XS module is written in "C", and has to be linked together with the\r
-perl binary to be executed.  This is required because perl under DJGPP\r
-is built with the "static link" option, due to the lack of "dynamic\r
-linking" in the DJGPP environment.\r
-\r
-Because XS modules require re-linking of the perl binary, you need both\r
-the perl binary distribution and the perl source distribution to build\r
-an XS extension module.  In addition, you will have to have built your\r
-perl binary from the source distribution so that all of the components\r
-of the perl binary are available for the required link step.\r
-\r
-=head2 Unpacking CPAN Modules on DOS\r
-\r
-First, download the module package from CPAN (e.g., the "Comma Separated\r
-Value" text package, Text-CSV-0.01.tar.gz).  Then expand the contents of\r
-the package into some location on your disk.  Most CPAN modules are\r
-built with an internal directory structure, so it is usually safe to\r
-expand it in the root of your DJGPP installation.  Some people prefer to\r
-locate source trees under /usr/src (i.e., C<($DJDIR)/usr/src>), but you may\r
-put it wherever seems most logical to you, *EXCEPT* under the same\r
-directory as your perl source code.  There are special rules that apply\r
-to modules which live in the perl source tree that do not apply to most\r
-of the modules in CPAN.\r
-\r
-Unlike other DJGPP packages, which are normal "zip" files, most CPAN\r
-module packages are "gzipped tarballs".  Recent versions of WinZip will\r
-safely unpack and expand them, *UNLESS* they have zero-length files.  It\r
-is a known WinZip bug (as of v7.0) that it will not extract zero-length\r
-files.\r
-\r
-From the command line, you can use the djtar utility provided with DJGPP\r
-to unpack and expand these files.  For example:\r
-\r
-        C:\djgpp>djtarx -v Text-CSV-0.01.tar.gz\r
-\r
-This will create the new directory C<($DJDIR)/Text-CSV-0.01>, filling\r
-it with the source for this module.\r
-\r
-=head2 Building Non-XS Modules on DOS\r
-\r
-To build a non-XS module, you can use the standard module-building\r
-instructions distributed with perl modules.\r
-\r
-    perl Makefile.PL\r
-    make\r
-    make test\r
-    make install\r
-\r
-This is sufficient because non-XS modules install only ".pm" files and\r
-(sometimes) pod and/or man documentation.  No re-linking of the perl\r
-binary is needed to build, install or use non-XS modules.\r
-\r
-=head2 Building XS Modules on DOS\r
-\r
-To build an XS module, you must use the standard module-building\r
-instructions distributed with perl modules *PLUS* three extra\r
-instructions specific to the DJGPP "static link" build environment.\r
-\r
-    set FNCASE=y\r
-    perl Makefile.PL\r
-    make\r
-    make perl\r
-    make test\r
-    make -f Makefile.aperl inst_perl MAP_TARGET=perl.exe\r
-    make install\r
-\r
-The first extra instruction sets DJGPP's FNCASE environment variable so\r
-that the new perl binary which you must build for an XS-type module will\r
-build correctly.  The second extra instruction re-builds the perl binary\r
-in your module directory before you run "make test", so that you are\r
-testing with the new module code you built with "make".  The third extra\r
-instruction installs the perl binary from your module directory into the\r
-standard DJGPP binary directory, C<($DJDIR)/bin>, replacing your\r
-previous perl binary.\r
-\r
-Note that the MAP_TARGET value *must* have the ".exe" extension or you\r
-will not create a "perl.exe" to replace the one in C<($DJDIR)/bin>.\r
-\r
-When you are done, the XS-module install process will have added information\r
-to yout "perllocal" information telling that the perl binary has been replaced,\r
-and what module was installed.  you can view this information at any time\r
-by using the command:\r
-\r
-        perl -S perldoc perllocal\r
-\r
-=head1 AUTHOR\r
-\r
-Laszlo Molnar, F<laszlo.molnar@eth.ericsson.se> [Installing/building perl]\r
-\r
-Peter J. Farley III F<pjfarley@banet.net> [Building/installing modules]\r
-\r
-=head1 SEE ALSO\r
-\r
-perl(1).\r
-\r
-=cut\r
-\r
+If you read this file _as_is_, just ignore the funny characters you
+see. It is written in the POD format (see perlpod manpage) which is
+specially designed to be readable as is.
+
+=head1 NAME
+
+perldos - Perl under DOS, W31, W95.
+
+=head1 SYNOPSIS
+
+These are instructions for building Perl under DOS (or w??), using
+DJGPP v2.03 or later.  Under w95 long filenames are supported.
+
+=head1 DESCRIPTION
+
+Before you start, you should glance through the README file
+found in the top-level directory where the Perl distribution
+was extracted.  Make sure you read and understand the terms under
+which this software is being distributed.
+
+This port currently supports MakeMaker (the set of modules that
+is used to build extensions to perl).  Therefore, you should be
+able to build and install most extensions found in the CPAN sites.
+
+Detailed instructions on how to build and install perl extension
+modules, including XS-type modules, is included.  See 'BUILDING AND
+INSTALLING MODULES'.
+
+=head2 Prerequisites for Compiling Perl on DOS
+
+=over 4
+
+=item DJGPP
+
+DJGPP is a port of GNU C/C++ compiler and development tools to 32-bit,
+protected-mode environment on Intel 32-bit CPUs running MS-DOS and compatible
+operating systems, by DJ Delorie <dj@delorie.com> and friends.
+
+For more details (FAQ), check out the home of DJGPP at:
+
+        http://www.delorie.com/djgpp/
+
+If you have questions about DJGPP, try posting to the DJGPP newsgroup:
+comp.os.msdos.djgpp, or use the email gateway djgpp@delorie.com.
+
+You can find the full DJGPP distribution on any SimTel.Net mirror all over
+the world. Like:
+
+        ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2*
+
+You need the following files to build perl (or add new modules):
+
+        v2/djdev203.zip
+        v2/bnu2951b.zip
+        v2gnu/gcc2952b.zip
+        v2gnu/bsh204b.zip
+        v2gnu/mak3791b.zip
+        v2gnu/fil316b.zip
+        v2gnu/sed302b.zip
+        v2gnu/txt20b.zip
+        v2gnu/dif272b.zip
+        v2gnu/grep24b.zip
+        v2gnu/shl112b.zip
+        v2gnu/gawk303b.zip
+        v2misc/csdpmi4b.zip
+
+or possibly any newer version.
+
+=item Pthreads
+
+Thread support is not tested in this version of the djgpp perl.
+
+=back
+
+=head2 Shortcomings of Perl under DOS
+
+Perl under DOS lacks some features of perl under UNIX because of
+deficiencies in the UNIX-emulation, most notably:
+
+=over 4
+
+=item *
+
+fork() and pipe()
+
+=item *
+
+some features of the UNIX filesystem regarding link count and file dates
+
+=item *
+
+in-place operation is a little bit broken with short filenames
+
+=item *
+
+sockets
+
+=back
+
+=head2 Building Perl on DOS
+
+=over 4
+
+=item *
+
+Unpack the source package F<perl5.6*.tar.gz> with djtarx. If you want
+to use long file names under w95 and also to get Perl to pass all its
+tests, don't forget to use
+
+        set LFN=y
+        set FNCASE=y
+
+before unpacking the archive.
+
+=item *
+
+Create a "symlink" or copy your bash.exe to sh.exe in your C<($DJDIR)/bin>
+directory.
+
+        ln -s bash.exe sh.exe
+
+[If you have the recommended version of bash for DJGPP, this is already
+done for you.]
+
+And make the C<SHELL> environment variable point to this F<sh.exe>:
+
+        set SHELL=c:/djgpp/bin/sh.exe (use full path name!)
+
+You can do this in F<djgpp.env> too. Add this line BEFORE any section
+definition:
+
+        +SHELL=%DJDIR%/bin/sh.exe
+
+=item *
+
+If you have F<split.exe> and F<gsplit.exe> in your path, then rename 
+F<split.exe> to F<djsplit.exe>, and F<gsplit.exe> to F<split.exe>.
+Copy or link F<gecho.exe> to F<echo.exe> if you don't have F<echo.exe>.
+Copy or link F<gawk.exe> to F<awk.exe> if you don't have F<awk.exe>.
+
+[If you have the recommended versions of djdev, shell utilities and
+gawk, all these are already done for you, and you will not need to do
+anything.]
+
+=item *
+
+Chdir to the djgpp subdirectory of perl toplevel and type the following
+commands:
+
+        set FNCASE=y
+        configure.bat
+
+This will do some preprocessing then run the Configure script for you.
+The Configure script is interactive, but in most cases you just need to
+press ENTER.  The "set" command ensures that DJGPP preserves the letter
+case of file names when reading directories.  If you already issued this
+set command when unpacking the archive, and you are in the same DOS
+session as when you unpacked the archive, you don't have to issue the
+set command again.  This command is necessary *before* you start to 
+(re)configure or (re)build perl in order to ensure both that perl builds 
+correctly and that building XS-type modules can succeed.  See the DJGPP 
+info entry for "_preserve_fncase" for more information:
+
+        info libc alphabetical _preserve_fncase
+
+If the script says that your package is incomplete, and asks whether
+to continue, just answer with Y (this can only happen if you don't use
+long filenames or forget to issue "set FNCASE=y" first).
+
+When Configure asks about the extensions, I suggest IO and Fcntl,
+and if you want database handling then SDBM_File or GDBM_File
+(you need to install gdbm for this one). If you want to use the
+POSIX extension (this is the default), make sure that the stack
+size of your F<cc1.exe> is at least 512kbyte (you can check this
+with: C<stubedit cc1.exe>).
+
+You can use the Configure script in non-interactive mode too.
+When I built my F<perl.exe>, I used something like this:
+
+        configure.bat -des
+
+You can find more info about Configure's command line switches in
+the F<INSTALL> file.
+
+When the script ends, and you want to change some values in the
+generated F<config.sh> file, then run
+
+        sh Configure -S
+
+after you made your modifications.
+
+IMPORTANT: if you use this C<-S> switch, be sure to delete the CONFIG
+environment variable before running the script:
+
+        set CONFIG=
+
+=item *
+
+Now you can compile Perl. Type:
+
+        make
+
+=back
+
+=head2 Testing Perl on DOS
+
+Type:
+
+        make test
+
+If you're lucky you should see "All tests successful". But there can be
+a few failed subtests (less than 5 hopefully) depending on some external
+conditions (e.g. some subtests fail under linux/dosemu or plain dos
+with short filenames only).
+
+=head2 Installation of Perl on DOS
+
+Type:
+
+        make install
+
+This will copy the newly compiled perl and libraries into your DJGPP
+directory structure. Perl.exe and the utilities go into C<($DJDIR)/bin>,
+and the library goes under C<($DJDIR)/lib/perl5>. The pod documentation
+goes under C<($DJDIR)/lib/perl5/pod>.
+
+=head1 BUILDING AND INSTALLING MODULES ON DOS
+
+=head2 Building Prerequisites for Perl on DOS
+
+For building and installing non-XS modules, all you need is a working
+perl under DJGPP.  Non-XS modules do not require re-linking the perl
+binary, and so are simpler to build and install.
+
+XS-type modules do require re-linking the perl binary, because part of
+an XS module is written in "C", and has to be linked together with the
+perl binary to be executed.  This is required because perl under DJGPP
+is built with the "static link" option, due to the lack of "dynamic
+linking" in the DJGPP environment.
+
+Because XS modules require re-linking of the perl binary, you need both
+the perl binary distribution and the perl source distribution to build
+an XS extension module.  In addition, you will have to have built your
+perl binary from the source distribution so that all of the components
+of the perl binary are available for the required link step.
+
+=head2 Unpacking CPAN Modules on DOS
+
+First, download the module package from CPAN (e.g., the "Comma Separated
+Value" text package, Text-CSV-0.01.tar.gz).  Then expand the contents of
+the package into some location on your disk.  Most CPAN modules are
+built with an internal directory structure, so it is usually safe to
+expand it in the root of your DJGPP installation.  Some people prefer to
+locate source trees under /usr/src (i.e., C<($DJDIR)/usr/src>), but you may
+put it wherever seems most logical to you, *EXCEPT* under the same
+directory as your perl source code.  There are special rules that apply
+to modules which live in the perl source tree that do not apply to most
+of the modules in CPAN.
+
+Unlike other DJGPP packages, which are normal "zip" files, most CPAN
+module packages are "gzipped tarballs".  Recent versions of WinZip will
+safely unpack and expand them, *UNLESS* they have zero-length files.  It
+is a known WinZip bug (as of v7.0) that it will not extract zero-length
+files.
+
+From the command line, you can use the djtar utility provided with DJGPP
+to unpack and expand these files.  For example:
+
+        C:\djgpp>djtarx -v Text-CSV-0.01.tar.gz
+
+This will create the new directory C<($DJDIR)/Text-CSV-0.01>, filling
+it with the source for this module.
+
+=head2 Building Non-XS Modules on DOS
+
+To build a non-XS module, you can use the standard module-building
+instructions distributed with perl modules.
+
+    perl Makefile.PL
+    make
+    make test
+    make install
+
+This is sufficient because non-XS modules install only ".pm" files and
+(sometimes) pod and/or man documentation.  No re-linking of the perl
+binary is needed to build, install or use non-XS modules.
+
+=head2 Building XS Modules on DOS
+
+To build an XS module, you must use the standard module-building
+instructions distributed with perl modules *PLUS* three extra
+instructions specific to the DJGPP "static link" build environment.
+
+    set FNCASE=y
+    perl Makefile.PL
+    make
+    make perl
+    make test
+    make -f Makefile.aperl inst_perl MAP_TARGET=perl.exe
+    make install
+
+The first extra instruction sets DJGPP's FNCASE environment variable so
+that the new perl binary which you must build for an XS-type module will
+build correctly.  The second extra instruction re-builds the perl binary
+in your module directory before you run "make test", so that you are
+testing with the new module code you built with "make".  The third extra
+instruction installs the perl binary from your module directory into the
+standard DJGPP binary directory, C<($DJDIR)/bin>, replacing your
+previous perl binary.
+
+Note that the MAP_TARGET value *must* have the ".exe" extension or you
+will not create a "perl.exe" to replace the one in C<($DJDIR)/bin>.
+
+When you are done, the XS-module install process will have added information
+to yout "perllocal" information telling that the perl binary has been replaced,
+and what module was installed.  you can view this information at any time
+by using the command:
+
+        perl -S perldoc perllocal
+
+=head1 AUTHOR
+
+Laszlo Molnar, F<laszlo.molnar@eth.ericsson.se> [Installing/building perl]
+
+Peter J. Farley III F<pjfarley@banet.net> [Building/installing modules]
+
+=head1 SEE ALSO
+
+perl(1).
+
+=cut
+
index 2254216..7e6589c 100644 (file)
-# Encoding file: cns11643-1, double-byte\r
-D\r
-2134 0 65\r
-21\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00003000FF0C30013002FF0E30FBFF1BFF1AFF1FFF01FE3020262025FE50FE51\r
-FE5200B7FE54FE55FE56FE57FE312014FE3220130000000000000000FF08FF09\r
-FE35FE36FF5BFF5DFE37FE3830143015FE39FE3A30103011FE3BFE3C300A300B\r
-FE3DFE3E30083009FE3FFE40300C300DFE41FE42300E300FFE43FE44FE59FE5A\r
-FE5BFE5CFE5DFE5E20182019201C201D301D301E20322035FF03FF06FF0A203B\r
-00A7300325CB25CF25B325B225CE2606260525C725C625A125A025BD25BC0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-22\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000032A32105203E0000FF3F0000FE49FE4AFE4DFE4EFE4BFE4CFE5FFE60FE61\r
-FF0BFF0D00D700F700B1221AFF1CFF1EFF1D226622672260221E22522261FE62\r
-FE63FE64FE66FE65223C2229222A22A52220221F22BF33D233D1222B222E2235\r
-22342640264226412609219121932192219021962197219921982016FF5CFF0F\r
-FF3C2215FE68FF04FFE53012FFE0FFE1FF05FF2021032109FE69FE6AFE6B33D5\r
-339C339D339E33CE33A1338E338F33C400B05159515B515E515D516151630000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-23\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000055E774E97CCE25812582258325842585258625872588258F258E258D258C\r
-258B258A2589253C2534252C2524251C2594250025022595250C251025142518\r
-256D256E2570256F2550255E256A256125E225E325E525E42571257225730000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-24\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000FF10FF11FF12FF13FF14FF15FF16FF17FF18FF1921602161216221632164\r
-2165216621672168216930213022302330243025302630273028302900005344\r
-0000FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F\r
-FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF41FF42FF43FF44FF45\r
-FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4FFF50FF51FF52FF53FF54FF55\r
-FF56FF57FF58FF59FF5A039103920393039403950396039703980399039A0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-25\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000039B039C039D039E039F03A003A103A303A403A503A603A703A803A903B1\r
-03B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF03C003C1\r
-03C303C403C503C603C703C803C931053106310731083109310A310B310C310D\r
-310E310F3110311131123113311431153116311731183119311A311B311C311D\r
-311E311F312031213122312331243125312631273128312902D902C902CA02C7\r
-02CB000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-26\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000246024612462246324642465246624672468246924742475247624772478\r
-2479247A247B247C247D21702171217221732174217521762177217821790000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-42\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00002400240124022403240424052406240724082409240A240B240C240D240E\r
-240F2410241124122413241424152416241724182419241A241B241C241D241E\r
-241F242100000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-44\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00004E004E594E014E034E434E5D4E864E8C4EBA513F5165516B51E052005201\r
-529B53155341535C53C84E094E0B4E084E0A4E2B4E3851E14E454E484E5F4E5E\r
-4E8E4EA15140520352FA534353C953E3571F58EB5915592759735B505B515B53\r
-5BF85C0F5C225C385C715DDD5DE55DF15DF25DF35DFE5E725EFE5F0B5F13624D\r
-4E114E104E0D4E2D4E304E394E4B5C394E884E914E954E924E944EA24EC14EC0\r
-4EC34EC64EC74ECD4ECA4ECB4EC4514351415167516D516E516C519751F60000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-45\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000052065207520852FB52FE52FF53165339534853475345535E538453CB53CA\r
-53CD58EC5929592B592A592D5B545C115C245C3A5C6F5DF45E7B5EFF5F145F15\r
-5FC362086236624B624E652F6587659765A465B965E566F0670867286B206B62\r
-6B796BCB6BD46BDB6C0F6C34706B722A7236723B72477259725B72AC738B4E19\r
-4E164E154E144E184E3B4E4D4E4F4E4E4EE54ED84ED44ED54ED64ED74EE34EE4\r
-4ED94EDE514551445189518A51AC51F951FA51F8520A52A0529F530553060000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-46\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005317531D4EDF534A534953615360536F536E53BB53EF53E453F353EC53EE\r
-53E953E853FC53F853F553EB53E653EA53F253F153F053E553ED53FB56DB56DA\r
-5916592E5931597459765B555B835C3C5DE85DE75DE65E025E035E735E7C5F01\r
-5F185F175FC5620A625362546252625165A565E6672E672C672A672B672D6B63\r
-6BCD6C116C106C386C416C406C3E72AF7384738974DC74E67518751F75287529\r
-7530753175327533758B767D76AE76BF76EE77DB77E277F3793A79BE7A740000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-47\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007ACB4E1E4E1F4E524E534E694E994EA44EA64EA54EFF4F094F194F0A4F15\r
-4F0D4F104F114F0F4EF24EF64EFB4EF04EF34EFD4F014F0B5149514751465148\r
-51685171518D51B0521752115212520E521652A3530853215320537053715409\r
-540F540C540A54105401540B54045411540D54085403540E5406541256E056DE\r
-56DD573357305728572D572C572F57295919591A59375938598459785983597D\r
-5979598259815B575B585B875B885B855B895BFA5C165C795DDE5E065E760000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-48\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005E745F0F5F1B5FD95FD6620E620C620D62106263625B6258653665E965E8\r
-65EC65ED66F266F36709673D6734673167356B216B646B7B6C166C5D6C576C59\r
-6C5F6C606C506C556C616C5B6C4D6C4E7070725F725D767E7AF97C737CF87F36\r
-7F8A7FBD80018003800C80128033807F8089808B808C81E381EA81F381FC820C\r
-821B821F826E8272827E866B8840884C8863897F96214E324EA84F4D4F4F4F47\r
-4F574F5E4F344F5B4F554F304F504F514F3D4F3A4F384F434F544F3C4F460000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-49\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00004F634F5C4F604F2F4F4E4F364F594F5D4F484F5A514C514B514D517551B6\r
-51B7522552245229522A522852AB52A952AA52AC532353735375541D542D541E\r
-543E5426544E542754465443543354485442541B5429544A5439543B5438542E\r
-543554365420543C54405431542B541F542C56EA56F056E456EB574A57515740\r
-574D5747574E573E5750574F573B58EF593E599D599259A8599E59A359995996\r
-598D59A45993598A59A55B5D5B5C5B5A5B5B5B8C5B8B5B8F5C2C5C405C410000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4a\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005C3F5C3E5C905C915C945C8C5DEB5E0C5E8F5E875E8A5EF75F045F1F5F64\r
-5F625F775F795FD85FCC5FD75FCD5FF15FEB5FF85FEA62126211628462976296\r
-628062766289626D628A627C627E627962736292626F6298626E629562936291\r
-62866539653B653865F166F4675F674E674F67506751675C6756675E67496746\r
-6760675367576B656BCF6C426C5E6C996C816C886C896C856C9B6C6A6C7A6C90\r
-6C706C8C6C686C966C926C7D6C836C726C7E6C746C866C766C8D6C946C980000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4b\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006C827076707C707D707872627261726072C472C27396752C752B75377538\r
-768276EF77E379C179C079BF7A767CFB7F5580968093809D8098809B809A80B2\r
-826F8292828B828D898B89D28A008C378C468C558C9D8D648D708DB38EAB8ECA\r
-8F9B8FB08FC28FC68FC58FC45DE1909190A290AA90A690A3914991C691CC9632\r
-962E9631962A962C4E264E564E734E8B4E9B4E9E4EAB4EAC4F6F4F9D4F8D4F73\r
-4F7F4F6C4F9B4F8B4F864F834F704F754F884F694F7B4F964F7E4F8F4F910000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4c\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00004F7A515451525155516951775176517851BD51FD523B52385237523A5230\r
-522E5236524152BE52BB5352535453535351536653775378537953D653D453D7\r
-547354755496547854955480547B5477548454925486547C549054715476548C\r
-549A54625468548B547D548E56FA57835777576A5769576157665764577C591C\r
-5949594759485944595459BE59BB59D459B959AE59D159C659D059CD59CB59D3\r
-59CA59AF59B359D259C55B5F5B645B635B975B9A5B985B9C5B995B9B5C1A0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4d\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005C485C455C465CB75CA15CB85CA95CAB5CB15CB35E185E1A5E165E155E1B\r
-5E115E785E9A5E975E9C5E955E965EF65F265F275F295F805F815F7F5F7C5FDD\r
-5FE05FFD5FF55FFF600F6014602F60356016602A6015602160276029602B601B\r
-62166215623F623E6240627F62C962CC62C462BF62C262B962D262DB62AB62D3\r
-62D462CB62C862A862BD62BC62D062D962C762CD62B562DA62B162D862D662D7\r
-62C662AC62CE653E65A765BC65FA66146613660C66066602660E6600660F0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4e\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006615660A6607670D670B676D678B67956771679C677367776787679D6797\r
-676F6770677F6789677E67906775679A6793677C676A67726B236B666B676B7F\r
-6C136C1B6CE36CE86CF36CB16CCC6CE56CB36CBD6CBE6CBC6CE26CAB6CD56CD3\r
-6CB86CC46CB96CC16CAE6CD76CC56CF16CBF6CBB6CE16CDB6CCA6CAC6CEF6CDC\r
-6CD66CE07095708E7092708A7099722C722D723872487267726972C072CE72D9\r
-72D772D073A973A8739F73AB73A5753D759D7599759A768476C276F276F40000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4f\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000077E577FD793E7940794179C979C87A7A7A797AFA7CFE7F547F8C7F8B8005\r
-80BA80A580A280B180A180AB80A980B480AA80AF81E581FE820D82B3829D8299\r
-82AD82BD829F82B982B182AC82A582AF82B882A382B082BE82B7864E8671521D\r
-88688ECB8FCE8FD48FD190B590B890B190B691C791D195779580961C9640963F\r
-963B9644964296B996E89752975E4E9F4EAD4EAE4FE14FB54FAF4FBF4FE04FD1\r
-4FCF4FDD4FC34FB64FD84FDF4FCA4FD74FAE4FD04FC44FC24FDA4FCE4FDE0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-50\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00004FB751575192519151A0524E5243524A524D524C524B524752C752C952C3\r
-52C1530D5357537B539A53DB54AC54C054A854CE54C954B854A654B354C754C2\r
-54BD54AA54C154C454C854AF54AB54B154BB54A954A754BF56FF5782578B57A0\r
-57A357A257CE57AE579359555951594F594E595059DC59D859FF59E359E85A03\r
-59E559EA59DA59E65A0159FB5B695BA35BA65BA45BA25BA55C015C4E5C4F5C4D\r
-5C4B5CD95CD25DF75E1D5E255E1F5E7D5EA05EA65EFA5F085F2D5F655F880000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-51\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005F855F8A5F8B5F875F8C5F896012601D60206025600E6028604D60706068\r
-606260466043606C606B606A6064624162DC6316630962FC62ED630162EE62FD\r
-630762F162F762EF62EC62FE62F463116302653F654565AB65BD65E26625662D\r
-66206627662F661F66286631662466F767FF67D367F167D467D067EC67B667AF\r
-67F567E967EF67C467D167B467DA67E567B867CF67DE67F367B067D967E267DD\r
-67D26B6A6B836B866BB56BD26BD76C1F6CC96D0B6D326D2A6D416D256D0C0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-52\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006D316D1E6D176D3B6D3D6D3E6D366D1B6CF56D396D276D386D296D2E6D35\r
-6D0E6D2B70AB70BA70B370AC70AF70AD70B870AE70A472307272726F727472E9\r
-72E072E173B773CA73BB73B273CD73C073B3751A752D754F754C754E754B75AB\r
-75A475A575A275A3767876867687768876C876C676C376C5770176F976F87709\r
-770B76FE76FC770777DC78027814780C780D794679497948794779B979BA79D1\r
-79D279CB7A7F7A817AFF7AFD7C7D7D027D057D007D097D077D047D067F380000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-53\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007F8E7FBF8010800D8011803680D680E580DA80C380C480CC80E180DB80CE\r
-80DE80E480DD81F4822282E78303830582E382DB82E6830482E58302830982D2\r
-82D782F1830182DC82D482D182DE82D382DF82EF830686508679867B867A884D\r
-886B898189D48A088A028A038C9E8CA08D748D738DB48ECD8ECC8FF08FE68FE2\r
-8FEA8FE58FED8FEB8FE48FE890CA90CE90C190C3914B914A91CD95829650964B\r
-964C964D9762976997CB97ED97F3980198A898DB98DF999699994E584EB30000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-54\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000500C500D50234FEF502650254FF8502950165006503C501F501A50125011\r
-4FFA5000501450284FF15021500B501950184FF34FEE502D502A4FFE502B5009\r
-517C51A451A551A251CD51CC51C651CB5256525C5254525B525D532A537F539F\r
-539D53DF54E855105501553754FC54E554F2550654FA551454E954ED54E15509\r
-54EE54EA54E65527550754FD550F5703570457C257D457CB57C35809590F5957\r
-5958595A5A115A185A1C5A1F5A1B5A1359EC5A205A235A295A255A0C5A090000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-55\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005B6B5C585BB05BB35BB65BB45BAE5BB55BB95BB85C045C515C555C505CED\r
-5CFD5CFB5CEA5CE85CF05CF65D015CF45DEE5E2D5E2B5EAB5EAD5EA75F315F92\r
-5F915F9060596063606560506055606D6069606F6084609F609A608D6094608C\r
-60856096624762F3630862FF634E633E632F635563426346634F6349633A6350\r
-633D632A632B6328634D634C65486549659965C165C566426649664F66436652\r
-664C6645664166F8671467156717682168386848684668536839684268540000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-56\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000682968B36817684C6851683D67F468506840683C6843682A684568136818\r
-68416B8A6B896BB76C236C276C286C266C246CF06D6A6D956D886D876D666D78\r
-6D776D596D936D6C6D896D6E6D5A6D746D696D8C6D8A6D796D856D656D9470CA\r
-70D870E470D970C870CF7239727972FC72F972FD72F872F7738673ED740973EE\r
-73E073EA73DE7554755D755C755A755975BE75C575C775B275B375BD75BC75B9\r
-75C275B8768B76B076CA76CD76CE7729771F7720772877E97830782778380000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-57\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000781D783478377825782D7820781F7832795579507960795F7956795E795D\r
-7957795A79E479E379E779DF79E679E979D87A847A887AD97B067B117C897D21\r
-7D177D0B7D0A7D207D227D147D107D157D1A7D1C7D0D7D197D1B7F3A7F5F7F94\r
-7FC57FC1800680048018801580198017803D803F80F1810280F0810580ED80F4\r
-810680F880F3810880FD810A80FC80EF81ED81EC82008210822A822B8228822C\r
-82BB832B83528354834A83388350834983358334834F83328339833683170000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-58\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000083408331832883438654868A86AA869386A486A9868C86A3869C88708877\r
-88818882887D88798A188A108A0E8A0C8A158A0A8A178A138A168A0F8A118C48\r
-8C7A8C798CA18CA28D778EAC8ED28ED48ECF8FB1900190068FF790008FFA8FF4\r
-90038FFD90058FF8909590E190DD90E29152914D914C91D891DD91D791DC91D9\r
-9583966296639661965B965D96649658965E96BB98E299AC9AA89AD89B259B32\r
-9B3C4E7E507A507D505C50475043504C505A504950655076504E505550750000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-59\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000050745077504F500F506F506D515C519551F0526A526F52D252D952D852D5\r
-5310530F5319533F5340533E53C366FC5546556A55665544555E55615543554A\r
-55315556554F5555552F55645538552E555C552C55635533554155575708570B\r
-570957DF5805580A580657E057E457FA5802583557F757F9592059625A365A41\r
-5A495A665A6A5A405A3C5A625A5A5A465A4A5B705BC75BC55BC45BC25BBF5BC6\r
-5C095C085C075C605C5C5C5D5D075D065D0E5D1B5D165D225D115D295D140000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5a\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005D195D245D275D175DE25E385E365E335E375EB75EB85EB65EB55EBE5F35\r
-5F375F575F6C5F695F6B5F975F995F9E5F985FA15FA05F9C607F60A3608960A0\r
-60A860CB60B460E660BD60C560BB60B560DC60BC60D860D560C660DF60B860DA\r
-60C7621A621B624863A063A76372639663A263A563776367639863AA637163A9\r
-63896383639B636B63A863846388639963A163AC6392638F6380637B63696368\r
-637A655D6556655165596557555F654F655865556554659C659B65AC65CF0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5b\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000065CB65CC65CE665D665A666466686666665E66F952D7671B688168AF68A2\r
-689368B5687F687668B168A7689768B0688368C468AD688668856894689D68A8\r
-689F68A168826B326BBA6BEB6BEC6C2B6D8E6DBC6DF36DD96DB26DE16DCC6DE4\r
-6DFB6DFA6E056DC76DCB6DAF6DD16DAE6DDE6DF96DB86DF76DF56DC56DD26E1A\r
-6DB56DDA6DEB6DD86DEA6DF16DEE6DE86DC66DC46DAA6DEC6DBF6DE670F97109\r
-710A70FD70EF723D727D7281731C731B73167313731973877405740A74030000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5c\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000740673FE740D74E074F674F7751C75227565756675627570758F75D475D5\r
-75B575CA75CD768E76D476D276DB7737773E773C77367738773A786B7843784E\r
-79657968796D79FB7A927A957B207B287B1B7B2C7B267B197B1E7B2E7C927C97\r
-7C957D467D437D717D2E7D397D3C7D407D307D337D447D2F7D427D327D317F3D\r
-7F9E7F9A7FCC7FCE7FD2801C804A8046812F81168123812B8129813081248202\r
-8235823782368239838E839E8398837883A2839683BD83AB8392838A83930000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5d\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000838983A08377837B837C838683A786555F6A86C786C086B686C486B586C6\r
-86CB86B186AF86C98853889E888888AB88928896888D888B8993898F8A2A8A1D\r
-8A238A258A318A2D8A1F8A1B8A228C498C5A8CA98CAC8CAB8CA88CAA8CA78D67\r
-8D668DBE8DBA8EDB8EDF9019900D901A90179023901F901D90109015901E9020\r
-900F90229016901B901490E890ED90FD915791CE91F591E691E391E791ED91E9\r
-9589966A9675967396789670967496769677966C96C096EA96E97AE07ADF0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5e\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000980298039B5A9CE59E759E7F9EA59EBB50A2508D50855099509150805096\r
-5098509A670051F1527252745275526952DE52DD52DB535A53A5557B558055A7\r
-557C558A559D55985582559C55AA55945587558B558355B355AE559F553E55B2\r
-559A55BB55AC55B1557E558955AB5599570D582F582A58345824583058315821\r
-581D582058F958FA59605A775A9A5A7F5A925A9B5AA75B735B715BD25BCC5BD3\r
-5BD05C0A5C0B5C315D4C5D505D345D475DFD5E455E3D5E405E435E7E5ECA0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5f\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005EC15EC25EC45F3C5F6D5FA95FAA5FA860D160E160B260B660E0611C6123\r
-60FA611560F060FB60F4616860F1610E60F6610961006112621F624963A3638C\r
-63CF63C063E963C963C663CD63D263E363D063E163D663ED63EE637663F463EA\r
-63DB645263DA63F9655E6566656265636591659065AF666E667066746676666F\r
-6691667A667E667766FE66FF671F671D68FA68D568E068D868D7690568DF68F5\r
-68EE68E768F968D268F268E368CB68CD690D6912690E68C968DA696E68FB0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-60\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006B3E6B3A6B3D6B986B966BBC6BEF6C2E6C2F6C2C6E2F6E386E546E216E32\r
-6E676E4A6E206E256E236E1B6E5B6E586E246E566E6E6E2D6E266E6F6E346E4D\r
-6E3A6E2C6E436E1D6E3E6ECB6E896E196E4E6E636E446E726E696E5F7119711A\r
-7126713071217136716E711C724C728472807336732573347329743A742A7433\r
-74227425743574367434742F741B7426742875257526756B756A75E275DB75E3\r
-75D975D875DE75E0767B767C7696769376B476DC774F77ED785D786C786F0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-61\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007A0D7A087A0B7A057A007A987A977A967AE57AE37B497B567B467B507B52\r
-7B547B4D7B4B7B4F7B517C9F7CA57D5E7D507D687D557D2B7D6E7D727D617D66\r
-7D627D707D7355847FD47FD5800B8052808581558154814B8151814E81398146\r
-813E814C815381748212821C83E9840383F8840D83E083C5840B83C183EF83F1\r
-83F48457840A83F0840C83CC83FD83F283CA8438840E840483DC840783D483DF\r
-865B86DF86D986ED86D486DB86E486D086DE885788C188C288B1898389960000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-62\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008A3B8A608A558A5E8A3C8A418A548A5B8A508A468A348A3A8A368A568C61\r
-8C828CAF8CBC8CB38CBD8CC18CBB8CC08CB48CB78CB68CBF8CB88D8A8D858D81\r
-8DCE8DDD8DCB8DDA8DD18DCC8DDB8DC68EFB8EF88EFC8F9C902E903590319038\r
-90329036910290F5910990FE9163916591CF9214921592239209921E920D9210\r
-920792119594958F958B959195939592958E968A968E968B967D96859686968D\r
-9672968496C196C596C496C696C796EF96F297CC98059806980898E798EA0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-63\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000098EF98E998F298ED99AE99AD9EC39ECD9ED14E8250AD50B550B250B350C5\r
-50BE50AC50B750BB50AF50C7527F5277527D52DF52E652E452E252E3532F55DF\r
-55E855D355E655CE55DC55C755D155E355E455EF55DA55E155C555C655E555C9\r
-57125713585E585158585857585A5854586B584C586D584A58625852584B5967\r
-5AC15AC95ACC5ABE5ABD5ABC5AB35AC25AB25D695D6F5E4C5E795EC95EC85F12\r
-5F595FAC5FAE611A610F6148611F60F3611B60F961016108614E614C61440000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-64\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000614D613E61346127610D61066137622162226413643E641E642A642D643D\r
-642C640F641C6414640D6436641664176406656C659F65B06697668966876688\r
-669666846698668D67036994696D695A697769606954697569306982694A6968\r
-696B695E695369796986695D6963695B6B476B726BC06BBF6BD36BFD6EA26EAF\r
-6ED36EB66EC26E906E9D6EC76EC56EA56E986EBC6EBA6EAB6ED16E966E9C6EC4\r
-6ED46EAA6EA76EB4714E71597169716471497167715C716C7166714C71650000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-65\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000715E714671687156723A725273377345733F733E746F745A7455745F745E\r
-7441743F7459745B745C75767578760075F0760175F275F175FA75FF75F475F3\r
-76DE76DF775B776B7766775E77637779776A776C775C77657768776277EE788E\r
-78B078977898788C7889787C78917893787F797A797F7981842C79BD7A1C7A1A\r
-7A207A147A1F7A1E7A9F7AA07B777BC07B607B6E7B677CB17CB37CB57D937D79\r
-7D917D817D8F7D5B7F6E7F697F6A7F727FA97FA87FA480568058808680840000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-66\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008171817081788165816E8173816B8179817A81668205824784828477843D\r
-843184758466846B8449846C845B843C8435846184638469846D8446865E865C\r
-865F86F9871387088707870086FE86FB870287038706870A885988DF88D488D9\r
-88DC88D888DD88E188CA88D588D2899C89E38A6B8A728A738A668A698A708A87\r
-8A7C8A638AA08A718A858A6D8A628A6E8A6C8A798A7B8A3E8A688C628C8A8C89\r
-8CCA8CC78CC88CC48CB28CC38CC28CC58DE18DDF8DE88DEF8DF38DFA8DEA0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-67\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008DE48DE68EB28F038F098EFE8F0A8F9F8FB2904B904A905390429054903C\r
-905590509047904F904E904D9051903E904191129117916C916A916991C99237\r
-92579238923D9240923E925B924B9264925192349249924D92459239923F925A\r
-959896989694969596CD96CB96C996CA96F796FB96F996F69756977497769810\r
-98119813980A9812980C98FC98F498FD98FE99B399B199B49AE19CE99E829F0E\r
-9F139F2050E750EE50E550D650ED50DA50D550CF50D150F150CE50E951620000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-68\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000051F352835282533153AD55FE5600561B561755FD561456065609560D560E\r
-55F75616561F5608561055F6571857165875587E58835893588A58795885587D\r
-58FD592559225924596A59695AE15AE65AE95AD75AD65AD85AE35B755BDE5BE7\r
-5BE15BE55BE65BE85BE25BE45BDF5C0D5C625D845D875E5B5E635E555E575E54\r
-5ED35ED65F0A5F465F705FB96147613F614B617761626163615F615A61586175\r
-622A64876458645464A46478645F647A645164676434646D647B657265A10000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-69\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000065D765D666A266A8669D699C69A8699569C169AE69D369CB699B69B769BB\r
-69AB69B469D069CD69AD69CC69A669C369A36B496B4C6C336F336F146EFE6F13\r
-6EF46F296F3E6F206F2C6F0F6F026F226EFF6EEF6F066F316F386F326F236F15\r
-6F2B6F2F6F886F2A6EEC6F016EF26ECC6EF771947199717D718A71847192723E\r
-729272967344735074647463746A7470746D750475917627760D760B76097613\r
-76E176E37784777D777F776178C1789F78A778B378A978A3798E798F798D0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6a\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007A2E7A317AAA7AA97AED7AEF7BA17B957B8B7B757B977B9D7B947B8F7BB8\r
-7B877B847CB97CBD7CBE7DBB7DB07D9C7DBD7DBE7DA07DCA7DB47DB27DB17DBA\r
-7DA27DBF7DB57DB87DAD7DD27DC77DAC7F707FE07FE17FDF805E805A80878150\r
-8180818F8188818A817F818281E781FA82078214821E824B84C984BF84C684C4\r
-8499849E84B2849C84CB84B884C084D3849084BC84D184CA873F871C873B8722\r
-87258734871887558737872988F3890288F488F988F888FD88E8891A88EF0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6b\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008AA68A8C8A9E8AA38A8D8AA18A938AA48AAA8AA58AA88A988A918A9A8AA7\r
-8C6A8C8D8C8C8CD38CD18CD28D6B8D998D958DFC8F148F128F158F138FA39060\r
-9058905C90639059905E9062905D905B91199118911E91759178917791749278\r
-92AC9280928592989296927B9293929C92A8927C929195A195A895A995A395A5\r
-95A49699969C969B96CC96D29700977C978597F69817981898AF98B199039905\r
-990C990999C19AAF9AB09AE69B419B429CF49CF69CF39EBC9F3B9F4A51040000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6c\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000510050FB50F550F9510251085109510551DC528752885289528D528A52F0\r
-53B2562E563B56395632563F563456295653564E565756745636562F56305880\r
-589F589E58B3589C58AE58A958A6596D5B095AFB5B0B5AF55B0C5B085BEE5BEC\r
-5BE95BEB5C645C655D9D5D945E625E5F5E615EE25EDA5EDF5EDD5EE35EE05F48\r
-5F715FB75FB561766167616E615D61556182617C6170616B617E61A7619061AB\r
-618E61AC619A61A4619461AE622E6469646F6479649E64B26488649064B00000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6d\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000064A56493649564A9649264AE64AD64AB649A64AC649964A264B365756577\r
-657866AE66AB66B466B16A236A1F69E86A016A1E6A1969FD6A216A136A0A69F3\r
-6A026A0569ED6A116B506B4E6BA46BC56BC66F3F6F7C6F846F516F666F546F86\r
-6F6D6F5B6F786F6E6F8E6F7A6F706F646F976F586ED56F6F6F606F5F719F71AC\r
-71B171A87256729B734E73577469748B7483747E7480757F76207629761F7624\r
-762676217622769A76BA76E4778E7787778C7791778B78CB78C578BA78CA0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6e\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000078BE78D578BC78D07A3F7A3C7A407A3D7A377A3B7AAF7AAE7BAD7BB17BC4\r
-7BB47BC67BC77BC17BA07BCC7CCA7DE07DF47DEF7DFB7DD87DEC7DDD7DE87DE3\r
-7DDA7DDE7DE97D9E7DD97DF27DF97F757F777FAF7FE98026819B819C819D81A0\r
-819A81988517853D851A84EE852C852D8513851185238521851484EC852584FF\r
-8506878287748776876087668778876887598757874C8753885B885D89108907\r
-891289138915890A8ABC8AD28AC78AC48A958ACB8AF88AB28AC98AC28ABF0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6f\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008AB08AD68ACD8AB68AB98ADB8C4C8C4E8C6C8CE08CDE8CE68CE48CEC8CED\r
-8CE28CE38CDC8CEA8CE18D6D8D9F8DA38E2B8E108E1D8E228E0F8E298E1F8E21\r
-8E1E8EBA8F1D8F1B8F1F8F298F268F2A8F1C8F1E8F259069906E9068906D9077\r
-9130912D9127913191879189918B918392C592BB92B792EA92E492C192B392BC\r
-92D292C792F092B295AD95B197049706970797099760978D978B978F9821982B\r
-981C98B3990A99139912991899DD99D099DF99DB99D199D599D299D99AB70000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-70\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009AEE9AEF9B279B459B449B779B6F9D069D099D039EA99EBE9ECE58A89F52\r
-51125118511451105115518051AA51DD5291529352F35659566B567956695664\r
-5678566A566856655671566F566C5662567658C158BE58C758C5596E5B1D5B34\r
-5B785BF05C0E5F4A61B2619161A9618A61CD61B661BE61CA61C8623064C564C1\r
-64CB64BB64BC64DA64C464C764C264CD64BF64D264D464BE657466C666C966B9\r
-66C466C766B86A3D6A386A3A6A596A6B6A586A396A446A626A616A4B6A470000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-71\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006A356A5F6A486B596B776C056FC26FB16FA16FC36FA46FC16FA76FB36FC0\r
-6FB96FB66FA66FA06FB471BE71C971D071D271C871D571B971CE71D971DC71C3\r
-71C47368749C74A37498749F749E74E2750C750D76347638763A76E776E577A0\r
-779E779F77A578E878DA78EC78E779A67A4D7A4E7A467A4C7A4B7ABA7BD97C11\r
-7BC97BE47BDB7BE17BE97BE67CD57CD67E0A7E117E087E1B7E237E1E7E1D7E09\r
-7E107F797FB27FF07FF17FEE802881B381A981A881FB820882588259854A0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-72\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000855985488568856985438549856D856A855E8783879F879E87A2878D8861\r
-892A89328925892B892189AA89A68AE68AFA8AEB8AF18B008ADC8AE78AEE8AFE\r
-8B018B028AF78AED8AF38AF68AFC8C6B8C6D8C938CF48E448E318E348E428E39\r
-8E358F3B8F2F8F388F338FA88FA69075907490789072907C907A913491929320\r
-933692F89333932F932292FC932B9304931A9310932693219315932E931995BB\r
-96A796A896AA96D5970E97119716970D9713970F975B975C9766979898300000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-73\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009838983B9837982D9839982499109928991E991B9921991A99ED99E299F1\r
-9AB89ABC9AFB9AED9B289B919D159D239D269D289D129D1B9ED89ED49F8D9F9C\r
-512A511F5121513252F5568E5680569056855687568F58D558D358D158CE5B30\r
-5B2A5B245B7A5C375C685DBC5DBA5DBD5DB85E6B5F4C5FBD61C961C261C761E6\r
-61CB6232623464CE64CA64D864E064F064E664EC64F164E264ED6582658366D9\r
-66D66A806A946A846AA26A9C6ADB6AA36A7E6A976A906AA06B5C6BAE6BDA0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-74\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006C086FD86FF16FDF6FE06FDB6FE46FEB6FEF6F806FEC6FE16FE96FD56FEE\r
-6FF071E771DF71EE71E671E571ED71EC71F471E0723572467370737274A974B0\r
-74A674A876467642764C76EA77B377AA77B077AC77A777AD77EF78F778FA78F4\r
-78EF790179A779AA7A577ABF7C077C0D7BFE7BF77C0C7BE07CE07CDC7CDE7CE2\r
-7CDF7CD97CDD7E2E7E3E7E467E377E327E437E2B7E3D7E317E457E417E347E39\r
-7E487E357E3F7E2F7F447FF37FFC807180728070806F807381C681C381BA0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-75\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000081C281C081BF81BD81C981BE81E88209827185AA8584857E859C85918594\r
-85AF859B858785A8858A85A6866787C087D187B387D287C687AB87BB87BA87C8\r
-87CB893B893689448938893D89AC8B0E8B178B198B1B8B0A8B208B1D8B048B10\r
-8C418C3F8C738CFA8CFD8CFC8CF88CFB8DA88E498E4B8E488E4A8F448F3E8F42\r
-8F458F3F907F907D9084908190829080913991A3919E919C934D938293289375\r
-934A9365934B9318937E936C935B9370935A935495CA95CB95CC95C895C60000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-76\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000096B196B896D6971C971E97A097D3984698B699359A0199FF9BAE9BAB9BAA\r
-9BAD9D3B9D3F9E8B9ECF9EDE9EDC9EDD9EDB9F3E9F4B53E2569556AE58D958D8\r
-5B385F5E61E3623364F464F264FE650664FA64FB64F765B766DC67266AB36AAC\r
-6AC36ABB6AB86AC26AAE6AAF6B5F6B786BAF7009700B6FFE70066FFA7011700F\r
-71FB71FC71FE71F87377737574A774BF751576567658765277BD77BF77BB77BC\r
-790E79AE7A617A627A607AC47AC57C2B7C277C2A7C1E7C237C217CE77E540000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-77\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007E557E5E7E5A7E617E527E597F487FF97FFB8077807681CD81CF820A85CF\r
-85A985CD85D085C985B085BA85B987EF87EC87F287E0898689B289F48B288B39\r
-8B2C8B2B8C508D058E598E638E668E648E5F8E558EC08F498F4D908790839088\r
-91AB91AC91D09394938A939693A293B393AE93AC93B09398939A939795D495D6\r
-95D095D596E296DC96D996DB96DE972497A397A697AD97F9984D984F984C984E\r
-985398BA993E993F993D992E99A59A0E9AC19B039B069B4F9B4E9B4D9BCA0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-78\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009BC99BFD9BC89BC09D519D5D9D609EE09F159F2C513356A556A858DE58DF\r
-58E25BF59F905EEC61F261F761F661F56500650F66E066DD6AE56ADD6ADA6AD3\r
-701B701F7028701A701D701570187206720D725872A27378737A74BD74CA74E3\r
-75877586765F766177C7791979B17A6B7A697C3E7C3F7C387C3D7C377C407E6B\r
-7E6D7E797E697E6A7E737F857FB67FB97FB881D885E985DD85EA85D585E485E5\r
-85F787FB8805880D87F987FE8960895F8956895E8B418B5C8B588B498B5A0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-79\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008B4E8B4F8B468B598D088D0A8E7C8E728E878E768E6C8E7A8E748F548F4E\r
-8FAD908A908B91B191AE93E193D193DF93C393C893DC93DD93D693E293CD93D8\r
-93E493D793E895DC96B496E3972A9727976197DC97FB985E9858985B98BC9945\r
-99499A169A199B0D9BE89BE79BD69BDB9D899D619D729D6A9D6C9E929E979E93\r
-9EB452F856B756B656B456BC58E45B405B435B7D5BF65DC961F861FA65186514\r
-651966E667276AEC703E703070327210737B74CF766276657926792A792C0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-7a\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000792B7AC77AF67C4C7C437C4D7CEF7CF08FAE7E7D7E7C7E827F4C800081DA\r
-826685FB85F9861185FA8606860B8607860A88148815896489BA89F88B708B6C\r
-8B668B6F8B5F8B6B8D0F8D0D8E898E818E858E8291B491CB9418940393FD95E1\r
-973098C49952995199A89A2B9A309A379A359C139C0D9E799EB59EE89F2F9F5F\r
-9F639F615137513856C156C056C259145C6C5DCD61FC61FE651D651C659566E9\r
-6AFB6B046AFA6BB2704C721B72A774D674D4766977D37C507E8F7E8C7FBC0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-7b\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008617862D861A882388228821881F896A896C89BD8B748B778B7D8D138E8A\r
-8E8D8E8B8F5F8FAF91BA942E94339435943A94389432942B95E2973897399732\r
-97FF9867986599579A459A439A409A3E9ACF9B549B519C2D9C259DAF9DB49DC2\r
-9DB89E9D9EEF9F199F5C9F669F67513C513B56C856CA56C95B7F5DD45DD25F4E\r
-61FF65246B0A6B6170517058738074E4758A766E766C79B37C607C5F807E807D\r
-81DF8972896F89FC8B808D168D178E918E938F619148944494519452973D0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-7c\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000973E97C397C1986B99559A559A4D9AD29B1A9C499C319C3E9C3B9DD39DD7\r
-9F349F6C9F6A9F9456CC5DD662006523652B652A66EC6B1074DA7ACA7C647C63\r
-7C657E937E967E9481E28638863F88318B8A9090908F9463946094649768986F\r
-995C9A5A9A5B9A579AD39AD49AD19C549C579C569DE59E9F9EF456D158E9652C\r
-705E7671767277D77F507F888836883988628B938B928B9682778D1B91C0946A\r
-97429748974497C698709A5F9B229B589C5F9DF99DFA9E7C9E7D9F079F770000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-7d\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009F725EF36B1670637C6C7C6E883B89C08EA191C1947294709871995E9AD6\r
-9B239ECC706477DA8B9A947797C99A629A657E9C8B9C8EAA91C5947D947E947C\r
-9C779C789EF78C54947F9E1A72289A6A9B319E1B9E1E7C720000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
+# Encoding file: cns11643-1, double-byte
+D
+2134 0 65
+21
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00003000FF0C30013002FF0E30FBFF1BFF1AFF1FFF01FE3020262025FE50FE51
+FE5200B7FE54FE55FE56FE57FE312014FE3220130000000000000000FF08FF09
+FE35FE36FF5BFF5DFE37FE3830143015FE39FE3A30103011FE3BFE3C300A300B
+FE3DFE3E30083009FE3FFE40300C300DFE41FE42300E300FFE43FE44FE59FE5A
+FE5BFE5CFE5DFE5E20182019201C201D301D301E20322035FF03FF06FF0A203B
+00A7300325CB25CF25B325B225CE2606260525C725C625A125A025BD25BC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+22
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000032A32105203E0000FF3F0000FE49FE4AFE4DFE4EFE4BFE4CFE5FFE60FE61
+FF0BFF0D00D700F700B1221AFF1CFF1EFF1D226622672260221E22522261FE62
+FE63FE64FE66FE65223C2229222A22A52220221F22BF33D233D1222B222E2235
+22342640264226412609219121932192219021962197219921982016FF5CFF0F
+FF3C2215FE68FF04FFE53012FFE0FFE1FF05FF2021032109FE69FE6AFE6B33D5
+339C339D339E33CE33A1338E338F33C400B05159515B515E515D516151630000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+23
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000055E774E97CCE25812582258325842585258625872588258F258E258D258C
+258B258A2589253C2534252C2524251C2594250025022595250C251025142518
+256D256E2570256F2550255E256A256125E225E325E525E42571257225730000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+24
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FF10FF11FF12FF13FF14FF15FF16FF17FF18FF1921602161216221632164
+2165216621672168216930213022302330243025302630273028302900005344
+0000FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F
+FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF41FF42FF43FF44FF45
+FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4FFF50FF51FF52FF53FF54FF55
+FF56FF57FF58FF59FF5A039103920393039403950396039703980399039A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+25
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000039B039C039D039E039F03A003A103A303A403A503A603A703A803A903B1
+03B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF03C003C1
+03C303C403C503C603C703C803C931053106310731083109310A310B310C310D
+310E310F3110311131123113311431153116311731183119311A311B311C311D
+311E311F312031213122312331243125312631273128312902D902C902CA02C7
+02CB000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+26
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000246024612462246324642465246624672468246924742475247624772478
+2479247A247B247C247D21702171217221732174217521762177217821790000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+42
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00002400240124022403240424052406240724082409240A240B240C240D240E
+240F2410241124122413241424152416241724182419241A241B241C241D241E
+241F242100000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+44
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E004E594E014E034E434E5D4E864E8C4EBA513F5165516B51E052005201
+529B53155341535C53C84E094E0B4E084E0A4E2B4E3851E14E454E484E5F4E5E
+4E8E4EA15140520352FA534353C953E3571F58EB5915592759735B505B515B53
+5BF85C0F5C225C385C715DDD5DE55DF15DF25DF35DFE5E725EFE5F0B5F13624D
+4E114E104E0D4E2D4E304E394E4B5C394E884E914E954E924E944EA24EC14EC0
+4EC34EC64EC74ECD4ECA4ECB4EC4514351415167516D516E516C519751F60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+45
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000052065207520852FB52FE52FF53165339534853475345535E538453CB53CA
+53CD58EC5929592B592A592D5B545C115C245C3A5C6F5DF45E7B5EFF5F145F15
+5FC362086236624B624E652F6587659765A465B965E566F0670867286B206B62
+6B796BCB6BD46BDB6C0F6C34706B722A7236723B72477259725B72AC738B4E19
+4E164E154E144E184E3B4E4D4E4F4E4E4EE54ED84ED44ED54ED64ED74EE34EE4
+4ED94EDE514551445189518A51AC51F951FA51F8520A52A0529F530553060000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+46
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005317531D4EDF534A534953615360536F536E53BB53EF53E453F353EC53EE
+53E953E853FC53F853F553EB53E653EA53F253F153F053E553ED53FB56DB56DA
+5916592E5931597459765B555B835C3C5DE85DE75DE65E025E035E735E7C5F01
+5F185F175FC5620A625362546252625165A565E6672E672C672A672B672D6B63
+6BCD6C116C106C386C416C406C3E72AF7384738974DC74E67518751F75287529
+7530753175327533758B767D76AE76BF76EE77DB77E277F3793A79BE7A740000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+47
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007ACB4E1E4E1F4E524E534E694E994EA44EA64EA54EFF4F094F194F0A4F15
+4F0D4F104F114F0F4EF24EF64EFB4EF04EF34EFD4F014F0B5149514751465148
+51685171518D51B0521752115212520E521652A3530853215320537053715409
+540F540C540A54105401540B54045411540D54085403540E5406541256E056DE
+56DD573357305728572D572C572F57295919591A59375938598459785983597D
+5979598259815B575B585B875B885B855B895BFA5C165C795DDE5E065E760000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+48
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005E745F0F5F1B5FD95FD6620E620C620D62106263625B6258653665E965E8
+65EC65ED66F266F36709673D6734673167356B216B646B7B6C166C5D6C576C59
+6C5F6C606C506C556C616C5B6C4D6C4E7070725F725D767E7AF97C737CF87F36
+7F8A7FBD80018003800C80128033807F8089808B808C81E381EA81F381FC820C
+821B821F826E8272827E866B8840884C8863897F96214E324EA84F4D4F4F4F47
+4F574F5E4F344F5B4F554F304F504F514F3D4F3A4F384F434F544F3C4F460000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+49
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F634F5C4F604F2F4F4E4F364F594F5D4F484F5A514C514B514D517551B6
+51B7522552245229522A522852AB52A952AA52AC532353735375541D542D541E
+543E5426544E542754465443543354485442541B5429544A5439543B5438542E
+543554365420543C54405431542B541F542C56EA56F056E456EB574A57515740
+574D5747574E573E5750574F573B58EF593E599D599259A8599E59A359995996
+598D59A45993598A59A55B5D5B5C5B5A5B5B5B8C5B8B5B8F5C2C5C405C410000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005C3F5C3E5C905C915C945C8C5DEB5E0C5E8F5E875E8A5EF75F045F1F5F64
+5F625F775F795FD85FCC5FD75FCD5FF15FEB5FF85FEA62126211628462976296
+628062766289626D628A627C627E627962736292626F6298626E629562936291
+62866539653B653865F166F4675F674E674F67506751675C6756675E67496746
+6760675367576B656BCF6C426C5E6C996C816C886C896C856C9B6C6A6C7A6C90
+6C706C8C6C686C966C926C7D6C836C726C7E6C746C866C766C8D6C946C980000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006C827076707C707D707872627261726072C472C27396752C752B75377538
+768276EF77E379C179C079BF7A767CFB7F5580968093809D8098809B809A80B2
+826F8292828B828D898B89D28A008C378C468C558C9D8D648D708DB38EAB8ECA
+8F9B8FB08FC28FC68FC58FC45DE1909190A290AA90A690A3914991C691CC9632
+962E9631962A962C4E264E564E734E8B4E9B4E9E4EAB4EAC4F6F4F9D4F8D4F73
+4F7F4F6C4F9B4F8B4F864F834F704F754F884F694F7B4F964F7E4F8F4F910000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F7A515451525155516951775176517851BD51FD523B52385237523A5230
+522E5236524152BE52BB5352535453535351536653775378537953D653D453D7
+547354755496547854955480547B5477548454925486547C549054715476548C
+549A54625468548B547D548E56FA57835777576A5769576157665764577C591C
+5949594759485944595459BE59BB59D459B959AE59D159C659D059CD59CB59D3
+59CA59AF59B359D259C55B5F5B645B635B975B9A5B985B9C5B995B9B5C1A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005C485C455C465CB75CA15CB85CA95CAB5CB15CB35E185E1A5E165E155E1B
+5E115E785E9A5E975E9C5E955E965EF65F265F275F295F805F815F7F5F7C5FDD
+5FE05FFD5FF55FFF600F6014602F60356016602A6015602160276029602B601B
+62166215623F623E6240627F62C962CC62C462BF62C262B962D262DB62AB62D3
+62D462CB62C862A862BD62BC62D062D962C762CD62B562DA62B162D862D662D7
+62C662AC62CE653E65A765BC65FA66146613660C66066602660E6600660F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006615660A6607670D670B676D678B67956771679C677367776787679D6797
+676F6770677F6789677E67906775679A6793677C676A67726B236B666B676B7F
+6C136C1B6CE36CE86CF36CB16CCC6CE56CB36CBD6CBE6CBC6CE26CAB6CD56CD3
+6CB86CC46CB96CC16CAE6CD76CC56CF16CBF6CBB6CE16CDB6CCA6CAC6CEF6CDC
+6CD66CE07095708E7092708A7099722C722D723872487267726972C072CE72D9
+72D772D073A973A8739F73AB73A5753D759D7599759A768476C276F276F40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000077E577FD793E7940794179C979C87A7A7A797AFA7CFE7F547F8C7F8B8005
+80BA80A580A280B180A180AB80A980B480AA80AF81E581FE820D82B3829D8299
+82AD82BD829F82B982B182AC82A582AF82B882A382B082BE82B7864E8671521D
+88688ECB8FCE8FD48FD190B590B890B190B691C791D195779580961C9640963F
+963B9644964296B996E89752975E4E9F4EAD4EAE4FE14FB54FAF4FBF4FE04FD1
+4FCF4FDD4FC34FB64FD84FDF4FCA4FD74FAE4FD04FC44FC24FDA4FCE4FDE0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+50
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004FB751575192519151A0524E5243524A524D524C524B524752C752C952C3
+52C1530D5357537B539A53DB54AC54C054A854CE54C954B854A654B354C754C2
+54BD54AA54C154C454C854AF54AB54B154BB54A954A754BF56FF5782578B57A0
+57A357A257CE57AE579359555951594F594E595059DC59D859FF59E359E85A03
+59E559EA59DA59E65A0159FB5B695BA35BA65BA45BA25BA55C015C4E5C4F5C4D
+5C4B5CD95CD25DF75E1D5E255E1F5E7D5EA05EA65EFA5F085F2D5F655F880000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+51
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005F855F8A5F8B5F875F8C5F896012601D60206025600E6028604D60706068
+606260466043606C606B606A6064624162DC6316630962FC62ED630162EE62FD
+630762F162F762EF62EC62FE62F463116302653F654565AB65BD65E26625662D
+66206627662F661F66286631662466F767FF67D367F167D467D067EC67B667AF
+67F567E967EF67C467D167B467DA67E567B867CF67DE67F367B067D967E267DD
+67D26B6A6B836B866BB56BD26BD76C1F6CC96D0B6D326D2A6D416D256D0C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+52
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D316D1E6D176D3B6D3D6D3E6D366D1B6CF56D396D276D386D296D2E6D35
+6D0E6D2B70AB70BA70B370AC70AF70AD70B870AE70A472307272726F727472E9
+72E072E173B773CA73BB73B273CD73C073B3751A752D754F754C754E754B75AB
+75A475A575A275A3767876867687768876C876C676C376C5770176F976F87709
+770B76FE76FC770777DC78027814780C780D794679497948794779B979BA79D1
+79D279CB7A7F7A817AFF7AFD7C7D7D027D057D007D097D077D047D067F380000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+53
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007F8E7FBF8010800D8011803680D680E580DA80C380C480CC80E180DB80CE
+80DE80E480DD81F4822282E78303830582E382DB82E6830482E58302830982D2
+82D782F1830182DC82D482D182DE82D382DF82EF830686508679867B867A884D
+886B898189D48A088A028A038C9E8CA08D748D738DB48ECD8ECC8FF08FE68FE2
+8FEA8FE58FED8FEB8FE48FE890CA90CE90C190C3914B914A91CD95829650964B
+964C964D9762976997CB97ED97F3980198A898DB98DF999699994E584EB30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000500C500D50234FEF502650254FF8502950165006503C501F501A50125011
+4FFA5000501450284FF15021500B501950184FF34FEE502D502A4FFE502B5009
+517C51A451A551A251CD51CC51C651CB5256525C5254525B525D532A537F539F
+539D53DF54E855105501553754FC54E554F2550654FA551454E954ED54E15509
+54EE54EA54E65527550754FD550F5703570457C257D457CB57C35809590F5957
+5958595A5A115A185A1C5A1F5A1B5A1359EC5A205A235A295A255A0C5A090000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+55
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005B6B5C585BB05BB35BB65BB45BAE5BB55BB95BB85C045C515C555C505CED
+5CFD5CFB5CEA5CE85CF05CF65D015CF45DEE5E2D5E2B5EAB5EAD5EA75F315F92
+5F915F9060596063606560506055606D6069606F6084609F609A608D6094608C
+60856096624762F3630862FF634E633E632F635563426346634F6349633A6350
+633D632A632B6328634D634C65486549659965C165C566426649664F66436652
+664C6645664166F8671467156717682168386848684668536839684268540000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+56
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000682968B36817684C6851683D67F468506840683C6843682A684568136818
+68416B8A6B896BB76C236C276C286C266C246CF06D6A6D956D886D876D666D78
+6D776D596D936D6C6D896D6E6D5A6D746D696D8C6D8A6D796D856D656D9470CA
+70D870E470D970C870CF7239727972FC72F972FD72F872F7738673ED740973EE
+73E073EA73DE7554755D755C755A755975BE75C575C775B275B375BD75BC75B9
+75C275B8768B76B076CA76CD76CE7729771F7720772877E97830782778380000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+57
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000781D783478377825782D7820781F7832795579507960795F7956795E795D
+7957795A79E479E379E779DF79E679E979D87A847A887AD97B067B117C897D21
+7D177D0B7D0A7D207D227D147D107D157D1A7D1C7D0D7D197D1B7F3A7F5F7F94
+7FC57FC1800680048018801580198017803D803F80F1810280F0810580ED80F4
+810680F880F3810880FD810A80FC80EF81ED81EC82008210822A822B8228822C
+82BB832B83528354834A83388350834983358334834F83328339833683170000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+58
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000083408331832883438654868A86AA869386A486A9868C86A3869C88708877
+88818882887D88798A188A108A0E8A0C8A158A0A8A178A138A168A0F8A118C48
+8C7A8C798CA18CA28D778EAC8ED28ED48ECF8FB1900190068FF790008FFA8FF4
+90038FFD90058FF8909590E190DD90E29152914D914C91D891DD91D791DC91D9
+9583966296639661965B965D96649658965E96BB98E299AC9AA89AD89B259B32
+9B3C4E7E507A507D505C50475043504C505A504950655076504E505550750000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+59
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000050745077504F500F506F506D515C519551F0526A526F52D252D952D852D5
+5310530F5319533F5340533E53C366FC5546556A55665544555E55615543554A
+55315556554F5555552F55645538552E555C552C55635533554155575708570B
+570957DF5805580A580657E057E457FA5802583557F757F9592059625A365A41
+5A495A665A6A5A405A3C5A625A5A5A465A4A5B705BC75BC55BC45BC25BBF5BC6
+5C095C085C075C605C5C5C5D5D075D065D0E5D1B5D165D225D115D295D140000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005D195D245D275D175DE25E385E365E335E375EB75EB85EB65EB55EBE5F35
+5F375F575F6C5F695F6B5F975F995F9E5F985FA15FA05F9C607F60A3608960A0
+60A860CB60B460E660BD60C560BB60B560DC60BC60D860D560C660DF60B860DA
+60C7621A621B624863A063A76372639663A263A563776367639863AA637163A9
+63896383639B636B63A863846388639963A163AC6392638F6380637B63696368
+637A655D6556655165596557555F654F655865556554659C659B65AC65CF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000065CB65CC65CE665D665A666466686666665E66F952D7671B688168AF68A2
+689368B5687F687668B168A7689768B0688368C468AD688668856894689D68A8
+689F68A168826B326BBA6BEB6BEC6C2B6D8E6DBC6DF36DD96DB26DE16DCC6DE4
+6DFB6DFA6E056DC76DCB6DAF6DD16DAE6DDE6DF96DB86DF76DF56DC56DD26E1A
+6DB56DDA6DEB6DD86DEA6DF16DEE6DE86DC66DC46DAA6DEC6DBF6DE670F97109
+710A70FD70EF723D727D7281731C731B73167313731973877405740A74030000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000740673FE740D74E074F674F7751C75227565756675627570758F75D475D5
+75B575CA75CD768E76D476D276DB7737773E773C77367738773A786B7843784E
+79657968796D79FB7A927A957B207B287B1B7B2C7B267B197B1E7B2E7C927C97
+7C957D467D437D717D2E7D397D3C7D407D307D337D447D2F7D427D327D317F3D
+7F9E7F9A7FCC7FCE7FD2801C804A8046812F81168123812B8129813081248202
+8235823782368239838E839E8398837883A2839683BD83AB8392838A83930000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000838983A08377837B837C838683A786555F6A86C786C086B686C486B586C6
+86CB86B186AF86C98853889E888888AB88928896888D888B8993898F8A2A8A1D
+8A238A258A318A2D8A1F8A1B8A228C498C5A8CA98CAC8CAB8CA88CAA8CA78D67
+8D668DBE8DBA8EDB8EDF9019900D901A90179023901F901D90109015901E9020
+900F90229016901B901490E890ED90FD915791CE91F591E691E391E791ED91E9
+9589966A9675967396789670967496769677966C96C096EA96E97AE07ADF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000980298039B5A9CE59E759E7F9EA59EBB50A2508D50855099509150805096
+5098509A670051F1527252745275526952DE52DD52DB535A53A5557B558055A7
+557C558A559D55985582559C55AA55945587558B558355B355AE559F553E55B2
+559A55BB55AC55B1557E558955AB5599570D582F582A58345824583058315821
+581D582058F958FA59605A775A9A5A7F5A925A9B5AA75B735B715BD25BCC5BD3
+5BD05C0A5C0B5C315D4C5D505D345D475DFD5E455E3D5E405E435E7E5ECA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005EC15EC25EC45F3C5F6D5FA95FAA5FA860D160E160B260B660E0611C6123
+60FA611560F060FB60F4616860F1610E60F6610961006112621F624963A3638C
+63CF63C063E963C963C663CD63D263E363D063E163D663ED63EE637663F463EA
+63DB645263DA63F9655E6566656265636591659065AF666E667066746676666F
+6691667A667E667766FE66FF671F671D68FA68D568E068D868D7690568DF68F5
+68EE68E768F968D268F268E368CB68CD690D6912690E68C968DA696E68FB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+60
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006B3E6B3A6B3D6B986B966BBC6BEF6C2E6C2F6C2C6E2F6E386E546E216E32
+6E676E4A6E206E256E236E1B6E5B6E586E246E566E6E6E2D6E266E6F6E346E4D
+6E3A6E2C6E436E1D6E3E6ECB6E896E196E4E6E636E446E726E696E5F7119711A
+7126713071217136716E711C724C728472807336732573347329743A742A7433
+74227425743574367434742F741B7426742875257526756B756A75E275DB75E3
+75D975D875DE75E0767B767C7696769376B476DC774F77ED785D786C786F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+61
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A0D7A087A0B7A057A007A987A977A967AE57AE37B497B567B467B507B52
+7B547B4D7B4B7B4F7B517C9F7CA57D5E7D507D687D557D2B7D6E7D727D617D66
+7D627D707D7355847FD47FD5800B8052808581558154814B8151814E81398146
+813E814C815381748212821C83E9840383F8840D83E083C5840B83C183EF83F1
+83F48457840A83F0840C83CC83FD83F283CA8438840E840483DC840783D483DF
+865B86DF86D986ED86D486DB86E486D086DE885788C188C288B1898389960000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+62
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008A3B8A608A558A5E8A3C8A418A548A5B8A508A468A348A3A8A368A568C61
+8C828CAF8CBC8CB38CBD8CC18CBB8CC08CB48CB78CB68CBF8CB88D8A8D858D81
+8DCE8DDD8DCB8DDA8DD18DCC8DDB8DC68EFB8EF88EFC8F9C902E903590319038
+90329036910290F5910990FE9163916591CF9214921592239209921E920D9210
+920792119594958F958B959195939592958E968A968E968B967D96859686968D
+9672968496C196C596C496C696C796EF96F297CC98059806980898E798EA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+63
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000098EF98E998F298ED99AE99AD9EC39ECD9ED14E8250AD50B550B250B350C5
+50BE50AC50B750BB50AF50C7527F5277527D52DF52E652E452E252E3532F55DF
+55E855D355E655CE55DC55C755D155E355E455EF55DA55E155C555C655E555C9
+57125713585E585158585857585A5854586B584C586D584A58625852584B5967
+5AC15AC95ACC5ABE5ABD5ABC5AB35AC25AB25D695D6F5E4C5E795EC95EC85F12
+5F595FAC5FAE611A610F6148611F60F3611B60F961016108614E614C61440000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+64
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000614D613E61346127610D61066137622162226413643E641E642A642D643D
+642C640F641C6414640D6436641664176406656C659F65B06697668966876688
+669666846698668D67036994696D695A697769606954697569306982694A6968
+696B695E695369796986695D6963695B6B476B726BC06BBF6BD36BFD6EA26EAF
+6ED36EB66EC26E906E9D6EC76EC56EA56E986EBC6EBA6EAB6ED16E966E9C6EC4
+6ED46EAA6EA76EB4714E71597169716471497167715C716C7166714C71650000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+65
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000715E714671687156723A725273377345733F733E746F745A7455745F745E
+7441743F7459745B745C75767578760075F0760175F275F175FA75FF75F475F3
+76DE76DF775B776B7766775E77637779776A776C775C77657768776277EE788E
+78B078977898788C7889787C78917893787F797A797F7981842C79BD7A1C7A1A
+7A207A147A1F7A1E7A9F7AA07B777BC07B607B6E7B677CB17CB37CB57D937D79
+7D917D817D8F7D5B7F6E7F697F6A7F727FA97FA87FA480568058808680840000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+66
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008171817081788165816E8173816B8179817A81668205824784828477843D
+843184758466846B8449846C845B843C8435846184638469846D8446865E865C
+865F86F9871387088707870086FE86FB870287038706870A885988DF88D488D9
+88DC88D888DD88E188CA88D588D2899C89E38A6B8A728A738A668A698A708A87
+8A7C8A638AA08A718A858A6D8A628A6E8A6C8A798A7B8A3E8A688C628C8A8C89
+8CCA8CC78CC88CC48CB28CC38CC28CC58DE18DDF8DE88DEF8DF38DFA8DEA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+67
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008DE48DE68EB28F038F098EFE8F0A8F9F8FB2904B904A905390429054903C
+905590509047904F904E904D9051903E904191129117916C916A916991C99237
+92579238923D9240923E925B924B9264925192349249924D92459239923F925A
+959896989694969596CD96CB96C996CA96F796FB96F996F69756977497769810
+98119813980A9812980C98FC98F498FD98FE99B399B199B49AE19CE99E829F0E
+9F139F2050E750EE50E550D650ED50DA50D550CF50D150F150CE50E951620000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+68
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000051F352835282533153AD55FE5600561B561755FD561456065609560D560E
+55F75616561F5608561055F6571857165875587E58835893588A58795885587D
+58FD592559225924596A59695AE15AE65AE95AD75AD65AD85AE35B755BDE5BE7
+5BE15BE55BE65BE85BE25BE45BDF5C0D5C625D845D875E5B5E635E555E575E54
+5ED35ED65F0A5F465F705FB96147613F614B617761626163615F615A61586175
+622A64876458645464A46478645F647A645164676434646D647B657265A10000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+69
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000065D765D666A266A8669D699C69A8699569C169AE69D369CB699B69B769BB
+69AB69B469D069CD69AD69CC69A669C369A36B496B4C6C336F336F146EFE6F13
+6EF46F296F3E6F206F2C6F0F6F026F226EFF6EEF6F066F316F386F326F236F15
+6F2B6F2F6F886F2A6EEC6F016EF26ECC6EF771947199717D718A71847192723E
+729272967344735074647463746A7470746D750475917627760D760B76097613
+76E176E37784777D777F776178C1789F78A778B378A978A3798E798F798D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A2E7A317AAA7AA97AED7AEF7BA17B957B8B7B757B977B9D7B947B8F7BB8
+7B877B847CB97CBD7CBE7DBB7DB07D9C7DBD7DBE7DA07DCA7DB47DB27DB17DBA
+7DA27DBF7DB57DB87DAD7DD27DC77DAC7F707FE07FE17FDF805E805A80878150
+8180818F8188818A817F818281E781FA82078214821E824B84C984BF84C684C4
+8499849E84B2849C84CB84B884C084D3849084BC84D184CA873F871C873B8722
+87258734871887558737872988F3890288F488F988F888FD88E8891A88EF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008AA68A8C8A9E8AA38A8D8AA18A938AA48AAA8AA58AA88A988A918A9A8AA7
+8C6A8C8D8C8C8CD38CD18CD28D6B8D998D958DFC8F148F128F158F138FA39060
+9058905C90639059905E9062905D905B91199118911E91759178917791749278
+92AC9280928592989296927B9293929C92A8927C929195A195A895A995A395A5
+95A49699969C969B96CC96D29700977C978597F69817981898AF98B199039905
+990C990999C19AAF9AB09AE69B419B429CF49CF69CF39EBC9F3B9F4A51040000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000510050FB50F550F9510251085109510551DC528752885289528D528A52F0
+53B2562E563B56395632563F563456295653564E565756745636562F56305880
+589F589E58B3589C58AE58A958A6596D5B095AFB5B0B5AF55B0C5B085BEE5BEC
+5BE95BEB5C645C655D9D5D945E625E5F5E615EE25EDA5EDF5EDD5EE35EE05F48
+5F715FB75FB561766167616E615D61556182617C6170616B617E61A7619061AB
+618E61AC619A61A4619461AE622E6469646F6479649E64B26488649064B00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000064A56493649564A9649264AE64AD64AB649A64AC649964A264B365756577
+657866AE66AB66B466B16A236A1F69E86A016A1E6A1969FD6A216A136A0A69F3
+6A026A0569ED6A116B506B4E6BA46BC56BC66F3F6F7C6F846F516F666F546F86
+6F6D6F5B6F786F6E6F8E6F7A6F706F646F976F586ED56F6F6F606F5F719F71AC
+71B171A87256729B734E73577469748B7483747E7480757F76207629761F7624
+762676217622769A76BA76E4778E7787778C7791778B78CB78C578BA78CA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000078BE78D578BC78D07A3F7A3C7A407A3D7A377A3B7AAF7AAE7BAD7BB17BC4
+7BB47BC67BC77BC17BA07BCC7CCA7DE07DF47DEF7DFB7DD87DEC7DDD7DE87DE3
+7DDA7DDE7DE97D9E7DD97DF27DF97F757F777FAF7FE98026819B819C819D81A0
+819A81988517853D851A84EE852C852D8513851185238521851484EC852584FF
+8506878287748776876087668778876887598757874C8753885B885D89108907
+891289138915890A8ABC8AD28AC78AC48A958ACB8AF88AB28AC98AC28ABF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008AB08AD68ACD8AB68AB98ADB8C4C8C4E8C6C8CE08CDE8CE68CE48CEC8CED
+8CE28CE38CDC8CEA8CE18D6D8D9F8DA38E2B8E108E1D8E228E0F8E298E1F8E21
+8E1E8EBA8F1D8F1B8F1F8F298F268F2A8F1C8F1E8F259069906E9068906D9077
+9130912D9127913191879189918B918392C592BB92B792EA92E492C192B392BC
+92D292C792F092B295AD95B197049706970797099760978D978B978F9821982B
+981C98B3990A99139912991899DD99D099DF99DB99D199D599D299D99AB70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+70
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009AEE9AEF9B279B459B449B779B6F9D069D099D039EA99EBE9ECE58A89F52
+51125118511451105115518051AA51DD5291529352F35659566B567956695664
+5678566A566856655671566F566C5662567658C158BE58C758C5596E5B1D5B34
+5B785BF05C0E5F4A61B2619161A9618A61CD61B661BE61CA61C8623064C564C1
+64CB64BB64BC64DA64C464C764C264CD64BF64D264D464BE657466C666C966B9
+66C466C766B86A3D6A386A3A6A596A6B6A586A396A446A626A616A4B6A470000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+71
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006A356A5F6A486B596B776C056FC26FB16FA16FC36FA46FC16FA76FB36FC0
+6FB96FB66FA66FA06FB471BE71C971D071D271C871D571B971CE71D971DC71C3
+71C47368749C74A37498749F749E74E2750C750D76347638763A76E776E577A0
+779E779F77A578E878DA78EC78E779A67A4D7A4E7A467A4C7A4B7ABA7BD97C11
+7BC97BE47BDB7BE17BE97BE67CD57CD67E0A7E117E087E1B7E237E1E7E1D7E09
+7E107F797FB27FF07FF17FEE802881B381A981A881FB820882588259854A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+72
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000855985488568856985438549856D856A855E8783879F879E87A2878D8861
+892A89328925892B892189AA89A68AE68AFA8AEB8AF18B008ADC8AE78AEE8AFE
+8B018B028AF78AED8AF38AF68AFC8C6B8C6D8C938CF48E448E318E348E428E39
+8E358F3B8F2F8F388F338FA88FA69075907490789072907C907A913491929320
+933692F89333932F932292FC932B9304931A9310932693219315932E931995BB
+96A796A896AA96D5970E97119716970D9713970F975B975C9766979898300000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+73
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009838983B9837982D9839982499109928991E991B9921991A99ED99E299F1
+9AB89ABC9AFB9AED9B289B919D159D239D269D289D129D1B9ED89ED49F8D9F9C
+512A511F5121513252F5568E5680569056855687568F58D558D358D158CE5B30
+5B2A5B245B7A5C375C685DBC5DBA5DBD5DB85E6B5F4C5FBD61C961C261C761E6
+61CB6232623464CE64CA64D864E064F064E664EC64F164E264ED6582658366D9
+66D66A806A946A846AA26A9C6ADB6AA36A7E6A976A906AA06B5C6BAE6BDA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+74
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006C086FD86FF16FDF6FE06FDB6FE46FEB6FEF6F806FEC6FE16FE96FD56FEE
+6FF071E771DF71EE71E671E571ED71EC71F471E0723572467370737274A974B0
+74A674A876467642764C76EA77B377AA77B077AC77A777AD77EF78F778FA78F4
+78EF790179A779AA7A577ABF7C077C0D7BFE7BF77C0C7BE07CE07CDC7CDE7CE2
+7CDF7CD97CDD7E2E7E3E7E467E377E327E437E2B7E3D7E317E457E417E347E39
+7E487E357E3F7E2F7F447FF37FFC807180728070806F807381C681C381BA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+75
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000081C281C081BF81BD81C981BE81E88209827185AA8584857E859C85918594
+85AF859B858785A8858A85A6866787C087D187B387D287C687AB87BB87BA87C8
+87CB893B893689448938893D89AC8B0E8B178B198B1B8B0A8B208B1D8B048B10
+8C418C3F8C738CFA8CFD8CFC8CF88CFB8DA88E498E4B8E488E4A8F448F3E8F42
+8F458F3F907F907D9084908190829080913991A3919E919C934D938293289375
+934A9365934B9318937E936C935B9370935A935495CA95CB95CC95C895C60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+76
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000096B196B896D6971C971E97A097D3984698B699359A0199FF9BAE9BAB9BAA
+9BAD9D3B9D3F9E8B9ECF9EDE9EDC9EDD9EDB9F3E9F4B53E2569556AE58D958D8
+5B385F5E61E3623364F464F264FE650664FA64FB64F765B766DC67266AB36AAC
+6AC36ABB6AB86AC26AAE6AAF6B5F6B786BAF7009700B6FFE70066FFA7011700F
+71FB71FC71FE71F87377737574A774BF751576567658765277BD77BF77BB77BC
+790E79AE7A617A627A607AC47AC57C2B7C277C2A7C1E7C237C217CE77E540000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+77
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007E557E5E7E5A7E617E527E597F487FF97FFB8077807681CD81CF820A85CF
+85A985CD85D085C985B085BA85B987EF87EC87F287E0898689B289F48B288B39
+8B2C8B2B8C508D058E598E638E668E648E5F8E558EC08F498F4D908790839088
+91AB91AC91D09394938A939693A293B393AE93AC93B09398939A939795D495D6
+95D095D596E296DC96D996DB96DE972497A397A697AD97F9984D984F984C984E
+985398BA993E993F993D992E99A59A0E9AC19B039B069B4F9B4E9B4D9BCA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+78
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009BC99BFD9BC89BC09D519D5D9D609EE09F159F2C513356A556A858DE58DF
+58E25BF59F905EEC61F261F761F661F56500650F66E066DD6AE56ADD6ADA6AD3
+701B701F7028701A701D701570187206720D725872A27378737A74BD74CA74E3
+75877586765F766177C7791979B17A6B7A697C3E7C3F7C387C3D7C377C407E6B
+7E6D7E797E697E6A7E737F857FB67FB97FB881D885E985DD85EA85D585E485E5
+85F787FB8805880D87F987FE8960895F8956895E8B418B5C8B588B498B5A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+79
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008B4E8B4F8B468B598D088D0A8E7C8E728E878E768E6C8E7A8E748F548F4E
+8FAD908A908B91B191AE93E193D193DF93C393C893DC93DD93D693E293CD93D8
+93E493D793E895DC96B496E3972A9727976197DC97FB985E9858985B98BC9945
+99499A169A199B0D9BE89BE79BD69BDB9D899D619D729D6A9D6C9E929E979E93
+9EB452F856B756B656B456BC58E45B405B435B7D5BF65DC961F861FA65186514
+651966E667276AEC703E703070327210737B74CF766276657926792A792C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000792B7AC77AF67C4C7C437C4D7CEF7CF08FAE7E7D7E7C7E827F4C800081DA
+826685FB85F9861185FA8606860B8607860A88148815896489BA89F88B708B6C
+8B668B6F8B5F8B6B8D0F8D0D8E898E818E858E8291B491CB9418940393FD95E1
+973098C49952995199A89A2B9A309A379A359C139C0D9E799EB59EE89F2F9F5F
+9F639F615137513856C156C056C259145C6C5DCD61FC61FE651D651C659566E9
+6AFB6B046AFA6BB2704C721B72A774D674D4766977D37C507E8F7E8C7FBC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008617862D861A882388228821881F896A896C89BD8B748B778B7D8D138E8A
+8E8D8E8B8F5F8FAF91BA942E94339435943A94389432942B95E2973897399732
+97FF9867986599579A459A439A409A3E9ACF9B549B519C2D9C259DAF9DB49DC2
+9DB89E9D9EEF9F199F5C9F669F67513C513B56C856CA56C95B7F5DD45DD25F4E
+61FF65246B0A6B6170517058738074E4758A766E766C79B37C607C5F807E807D
+81DF8972896F89FC8B808D168D178E918E938F619148944494519452973D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000973E97C397C1986B99559A559A4D9AD29B1A9C499C319C3E9C3B9DD39DD7
+9F349F6C9F6A9F9456CC5DD662006523652B652A66EC6B1074DA7ACA7C647C63
+7C657E937E967E9481E28638863F88318B8A9090908F9463946094649768986F
+995C9A5A9A5B9A579AD39AD49AD19C549C579C569DE59E9F9EF456D158E9652C
+705E7671767277D77F507F888836883988628B938B928B9682778D1B91C0946A
+97429748974497C698709A5F9B229B589C5F9DF99DFA9E7C9E7D9F079F770000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009F725EF36B1670637C6C7C6E883B89C08EA191C1947294709871995E9AD6
+9B239ECC706477DA8B9A947797C99A629A657E9C8B9C8EAA91C5947D947E947C
+9C779C789EF78C54947F9E1A72289A6A9B319E1B9E1E7C720000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
index fa5ad10..186b748 100644 (file)
-# Encoding file: cns11643-2, double-byte\r
-D\r
-7244 0 82\r
-21\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00004E424E5C51F5531A53824E074E0C4E474E8D56D75C6E5F734E0F51874E0E\r
-4E2E4E934EC24EC94EC8519852FC536C53B957205903592C5C105DFF65E16BB3\r
-6BCC6C14723F4E314E3C4EE84EDC4EE94EE14EDD4EDA520C5209531C534C5722\r
-57235917592F5B815B845C125C3B5C745C735E045E805E825FC9620962506C15\r
-6C366C436C3F6C3B72AE72B0738A79B8808A961E4F0E4F184F2C4EF54F144EF1\r
-4F004EF74F084F1D4F024F054F224F134F044EF44F1251B15213521052A60000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-22\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005322531F534D538A540756E156DF572E572A5734593C5980597C5985597B\r
-597E5977597F5B565C155C255C7C5C7A5C7B5C7E5DDF5E755E845F025F1A5F74\r
-5FD55FD45FCF625C625E626462616266626262596260625A6265653765EF65EE\r
-673E67396738673B673A673F673C67336C186C466C526C5C6C4F6C4A6C546C4B\r
-6C4C7071725E72B472B5738E752A767F7A757F518278827C8280827D827F864D\r
-897E909990979098909B909496229624962096234F564F3B4F624F494F530000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-23\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00004F644F3E4F674F524F5F4F414F584F2D4F334F3F4F61518F51B9521C521E\r
-522152AD52AE530953635372538E538F54305437542A545454455419541C5425\r
-5418543D544F544154285424544756EE56E756E557415745574C5749574B5752\r
-5906594059A6599859A05997598E59A25990598F59A759A15B8E5B925C285C2A\r
-5C8D5C8F5C885C8B5C895C925C8A5C865C935C955DE05E0A5E0E5E8B5E895E8C\r
-5E885E8D5F055F1D5F785F765FD25FD15FD05FED5FE85FEE5FF35FE15FE40000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-24\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005FE35FFA5FEF5FF75FFB60005FF4623A6283628C628E628F629462876271\r
-627B627A6270628162886277627D6272627465F065F465F365F265F567456747\r
-67596755674C6748675D674D675A674B6BD06C196C1A6C786C676C6B6C846C8B\r
-6C8F6C716C6F6C696C9A6C6D6C876C956C9C6C666C736C656C7B6C8E7074707A\r
-726372BF72BD72C372C672C172BA72C573957397739373947392753A75397594\r
-75957681793D80348095809980908092809C8290828F8285828E829182930000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-25\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000828A828382848C788FC98FBF909F90A190A5909E90A790A096309628962F\r
-962D4E334F984F7C4F854F7D4F804F874F764F744F894F844F774F4C4F974F6A\r
-4F9A4F794F814F784F904F9C4F944F9E4F924F824F954F6B4F6E519E51BC51BE\r
-5235523252335246523152BC530A530B533C539253945487547F548154915482\r
-5488546B547A547E5465546C54745466548D546F546154605498546354675464\r
-56F756F9576F5772576D576B57715770577657805775577B5773577457620000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-26\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005768577D590C594559B559BA59CF59CE59B259CC59C159B659BC59C359D6\r
-59B159BD59C059C859B459C75B625B655B935B955C445C475CAE5CA45CA05CB5\r
-5CAF5CA85CAC5C9F5CA35CAD5CA25CAA5CA75C9D5CA55CB65CB05CA65E175E14\r
-5E195F285F225F235F245F545F825F7E5F7D5FDE5FE5602D602660196032600B\r
-6034600A60176033601A601E602C6022600D6010602E60136011600C6009601C\r
-6214623D62AD62B462D162BE62AA62B662CA62AE62B362AF62BB62A962B00000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-27\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000062B8653D65A865BB660965FC66046612660865FB6603660B660D660565FD\r
-6611661066F6670A6785676C678E67926776677B6798678667846774678D678C\r
-677A679F679167996783677D67816778677967946B256B806B7E6BDE6C1D6C93\r
-6CEC6CEB6CEE6CD96CB66CD46CAD6CE76CB76CD06CC26CBA6CC36CC66CED6CF2\r
-6CD26CDD6CB46C8A6C9D6C806CDE6CC06D306CCD6CC76CB06CF96CCF6CE96CD1\r
-709470987085709370867084709170967082709A7083726A72D672CB72D80000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-28\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000072C972DC72D272D472DA72CC72D173A473A173AD73A673A273A073AC739D\r
-74DD74E8753F7540753E758C759876AF76F376F176F076F577F877FC77F977FB\r
-77FA77F77942793F79C57A787A7B7AFB7C757CFD8035808F80AE80A380B880B5\r
-80AD822082A082C082AB829A8298829B82B582A782AE82BC829E82BA82B482A8\r
-82A182A982C282A482C382B682A28670866F866D866E8C568FD28FCB8FD38FCD\r
-8FD68FD58FD790B290B490AF90B390B09639963D963C963A96434FCD4FC50000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-29\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00004FD34FB24FC94FCB4FC14FD44FDC4FD94FBB4FB34FDB4FC74FD64FBA4FC0\r
-4FB94FEC5244524952C052C2533D537C539753965399539854BA54A154AD54A5\r
-54CF54C3830D54B754AE54D654B654C554C654A0547054BC54A254BE547254DE\r
-54B057B5579E579F57A4578C5797579D579B57945798578F579957A5579A5795\r
-58F4590D595359E159DE59EE5A0059F159DD59FA59FD59FC59F659E459F259F7\r
-59DB59E959F359F559E059FE59F459ED5BA85C4C5CD05CD85CCC5CD75CCB0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-2a\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005CDB5CDE5CDA5CC95CC75CCA5CD65CD35CD45CCF5CC85CC65CCE5CDF5CF8\r
-5DF95E215E225E235E205E245EB05EA45EA25E9B5EA35EA55F075F2E5F565F86\r
-6037603960546072605E6045605360476049605B604C60406042605F60246044\r
-60586066606E6242624362CF630D630B62F5630E630362EB62F9630F630C62F8\r
-62F663006313631462FA631562FB62F06541654365AA65BF6636662166326635\r
-661C662666226633662B663A661D66346639662E670F671067C167F267C80000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-2b\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000067BA67DC67BB67F867D867C067B767C567EB67E467DF67B567CD67B367F7\r
-67F667EE67E367C267B967CE67E767F067B267FC67C667ED67CC67AE67E667DB\r
-67FA67C967CA67C367EA67CB6B286B826B846BB66BD66BD86BE06C206C216D28\r
-6D346D2D6D1F6D3C6D3F6D126D0A6CDA6D336D046D196D3A6D1A6D116D006D1D\r
-6D426D016D186D376D036D0F6D406D076D206D2C6D086D226D096D1070B7709F\r
-70BE70B170B070A170B470B570A972417249724A726C72707273726E72CA0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-2c\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000072E472E872EB72DF72EA72E672E3738573CC73C273C873C573B973B673B5\r
-73B473EB73BF73C773BE73C373C673B873CB74EC74EE752E7547754875A775AA\r
-767976C47708770377047705770A76F776FB76FA77E777E87806781178127805\r
-7810780F780E780978037813794A794C794B7945794479D579CD79CF79D679CE\r
-7A807A7E7AD17B007B017C7A7C787C797C7F7C807C817D037D087D017F587F91\r
-7F8D7FBE8007800E800F8014803780D880C780E080D180C880C280D080C50000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-2d\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000080E380D980DC80CA80D580C980CF80D780E680CD81FF8221829482D982FE\r
-82F9830782E8830082D5833A82EB82D682F482EC82E182F282F5830C82FB82F6\r
-82F082EA82E482E082FA82F382ED86778674867C86738841884E8867886A8869\r
-89D38A048A078D728FE38FE18FEE8FE090F190BD90BF90D590C590BE90C790CB\r
-90C891D491D39654964F96519653964A964E501E50055007501350225030501B\r
-4FF54FF450335037502C4FF64FF75017501C502050275035502F5031500E0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-2e\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000515A5194519351CA51C451C551C851CE5261525A5252525E525F52555262\r
-52CD530E539E552654E25517551254E754F354E4551A54FF5504550854EB5511\r
-550554F1550A54FB54F754F854E0550E5503550B5701570257CC583257D557D2\r
-57BA57C657BD57BC57B857B657BF57C757D057B957C1590E594A5A195A165A2D\r
-5A2E5A155A0F5A175A0A5A1E5A335B6C5BA75BAD5BAC5C035C565C545CEC5CFF\r
-5CEE5CF15CF75D005CF95E295E285EA85EAE5EAA5EAC5F335F305F67605D0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-2f\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000605A6067604160A26088608060926081609D60836095609B60976087609C\r
-608E6219624662F263106356632C634463456336634363E46339634B634A633C\r
-632963416334635863546359632D63476333635A63516338635763406348654A\r
-654665C665C365C465C2664A665F6647665167126713681F681A684968326833\r
-683B684B684F68166831681C6835682B682D682F684E68446834681D68126814\r
-68266828682E684D683A682568206B2C6B2F6B2D6B316B346B6D80826B880000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-30\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006BE66BE46BE86BE36BE26BE76C256D7A6D636D646D766D0D6D616D926D58\r
-6D626D6D6D6F6D916D8D6DEF6D7F6D866D5E6D676D606D976D706D7C6D5F6D82\r
-6D986D2F6D686D8B6D7E6D806D846D166D836D7B6D7D6D756D9070DC70D370D1\r
-70DD70CB7F3970E270D770D270DE70E070D470CD70C570C670C770DA70CE70E1\r
-7242727872777276730072FA72F472FE72F672F372FB730173D373D973E573D6\r
-73BC73E773E373E973DC73D273DB73D473DD73DA73D773D873E874DE74DF0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-31\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000074F474F57521755B755F75B075C175BB75C475C075BF75B675BA768A76C9\r
-771D771B7710771377127723771177157719771A772277277823782C78227835\r
-782F7828782E782B782178297833782A78317954795B794F795C795379527951\r
-79EB79EC79E079EE79ED79EA79DC79DE79DD7A867A897A857A8B7A8C7A8A7A87\r
-7AD87B107B047B137B057B0F7B087B0A7B0E7B097B127C847C917C8A7C8C7C88\r
-7C8D7C857D1E7D1D7D117D0E7D187D167D137D1F7D127D0F7D0C7F5C7F610000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-32\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007F5E7F607F5D7F5B7F967F927FC37FC27FC08016803E803980FA80F280F9\r
-80F5810180FB81008201822F82258333832D83448319835183258356833F8341\r
-8326831C83228342834E831B832A8308833C834D8316832483208337832F8329\r
-83478345834C8353831E832C834B832783488653865286A286A88696868D8691\r
-869E868786978686868B869A868586A5869986A186A786958698868E869D8690\r
-869488438844886D88758876887288808871887F886F8883887E8874887C0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-33\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008A128C478C578C7B8CA48CA38D768D788DB58DB78DB68ED18ED38FFE8FF5\r
-90028FFF8FFB90048FFC8FF690D690E090D990DA90E390DF90E590D890DB90D7\r
-90DC90E49150914E914F91D591E291DA965C965F96BC98E39ADF9B2F4E7F5070\r
-506A5061505E50605053504B505D50725048504D5041505B504A506250155045\r
-505F5069506B5063506450465040506E50735057505151D0526B526D526C526E\r
-52D652D3532D539C55755576553C554D55505534552A55515562553655350000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-34\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000553055525545550C55325565554E55395548552D553B5540554B570A5707\r
-57FB581457E257F657DC57F4580057ED57FD580857F8580B57F357CF580757EE\r
-57E357F257E557EC57E1580E57FC581057E75801580C57F157E957F0580D5804\r
-595C5A605A585A555A675A5E5A385A355A6D5A505A5F5A655A6C5A535A645A57\r
-5A435A5D5A525A445A5B5A485A8E5A3E5A4D5A395A4C5A705A695A475A515A56\r
-5A425A5C5B725B6E5BC15BC05C595D1E5D0B5D1D5D1A5D205D0C5D285D0D0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-35\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005D265D255D0F5D305D125D235D1F5D2E5E3E5E345EB15EB45EB95EB25EB3\r
-5F365F385F9B5F965F9F608A6090608660BE60B060BA60D360D460CF60E460D9\r
-60DD60C860B160DB60B760CA60BF60C360CD60C063326365638A6382637D63BD\r
-639E63AD639D639763AB638E636F63876390636E63AF6375639C636D63AE637C\r
-63A4633B639F6378638563816391638D6370655365CD66656661665B6659665C\r
-66626718687968876890689C686D686E68AE68AB6956686F68A368AC68A90000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-36\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006875687468B2688F68776892687C686B687268AA68806871687E689B6896\r
-688B68A0688968A46878687B6891688C688A687D6B366B336B376B386B916B8F\r
-6B8D6B8E6B8C6C2A6DC06DAB6DB46DB36E746DAC6DE96DE26DB76DF66DD46E00\r
-6DC86DE06DDF6DD66DBE6DE56DDC6DDD6DDB6DF46DCA6DBD6DED6DF06DBA6DD5\r
-6DC26DCF6DC96DD06DF26DD36DFD6DD76DCD6DE36DBB70FA710D70F7711770F4\r
-710C70F0710470F3711070FC70FF71067113710070F870F6710B7102710E0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-37\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000727E727B727C727F731D7317730773117318730A730872FF730F731E7388\r
-73F673F873F57404740173FD7407740073FA73FC73FF740C740B73F474087564\r
-756375CE75D275CF75CB75CC75D175D0768F768976D37739772F772D77317732\r
-77347733773D7725773B7735784878527849784D784A784C7826784578507964\r
-79677969796A7963796B796179BB79FA79F879F679F77A8F7A947A907B357B3B\r
-7B347B257B307B227B247B337B187B2A7B1D7B317B2B7B2D7B2F7B327B380000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-38\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007B1A7B237C947C987C967CA37D357D3D7D387D367D3A7D457D2C7D297D41\r
-7D477D3E7D3F7D4A7D3B7D287F637F957F9C7F9D7F9B7FCA7FCB7FCD7FD07FD1\r
-7FC77FCF7FC9801F801E801B804780438048811881258119811B812D811F812C\r
-811E812181158127811D8122821182388233823A823482328274839083A383A8\r
-838D837A837383A48374838F8381839583998375839483A9837D8383838C839D\r
-839B83AA838B837E83A583AF8388839783B0837F83A6838783AE837686590000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-39\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000865686BF86B786C286C186C586BA86B086C886B986B386B886CC86B486BB\r
-86BC86C386BD86BE88528889889588A888A288AA889A889188A1889F889888A7\r
-8899889B889788A488AC888C8893888E898289D689D989D58A308A278A2C8A1E\r
-8C398C3B8C5C8C5D8C7D8CA58D7D8D7B8D798DBC8DC28DB98DBF8DC18ED88EDE\r
-8EDD8EDC8ED78EE08EE19024900B9011901C900C902190EF90EA90F090F490F2\r
-90F390D490EB90EC90E991569158915A9153915591EC91F491F191F391F80000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-3a\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000091E491F991EA91EB91F791E891EE957A95869588967C966D966B9671966F\r
-96BF976A980498E59997509B50955094509E508B50A35083508C508E509D5068\r
-509C509250825087515F51D45312531153A453A7559155A855A555AD55775645\r
-55A255935588558F55B5558155A3559255A4557D558C55A6557F559555A1558E\r
-570C582958375819581E58275823582857F558485825581C581B5833583F5836\r
-582E58395838582D582C583B59615AAF5A945A9F5A7A5AA25A9E5A785AA60000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-3b\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005A7C5AA55AAC5A955AAE5A375A845A8A5A975A835A8B5AA95A7B5A7D5A8C\r
-5A9C5A8F5A935A9D5BEA5BCD5BCB5BD45BD15BCA5BCE5C0C5C305D375D435D6B\r
-5D415D4B5D3F5D355D515D4E5D555D335D3A5D525D3D5D315D595D425D395D49\r
-5D385D3C5D325D365D405D455E445E415F585FA65FA55FAB60C960B960CC60E2\r
-60CE60C4611460F2610A6116610560F5611360F860FC60FE60C161036118611D\r
-611060FF6104610B624A639463B163B063CE63E563E863EF63C3649D63F30000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-3c\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000063CA63E063F663D563F263F5646163DF63BE63DD63DC63C463D863D363C2\r
-63C763CC63CB63C863F063D763D965326567656A6564655C65686565658C659D\r
-659E65AE65D065D2667C666C667B668066716679666A66726701690C68D36904\r
-68DC692A68EC68EA68F1690F68D668F768EB68E468F66913691068F368E16907\r
-68CC6908697068B4691168EF68C6691468F868D068FD68FC68E8690B690A6917\r
-68CE68C868DD68DE68E668F468D1690668D468E96915692568C76B396B3B0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-3d\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006B3F6B3C6B946B976B996B956BBD6BF06BF26BF36C306DFC6E466E476E1F\r
-6E496E886E3C6E3D6E456E626E2B6E3F6E416E5D6E736E1C6E336E4B6E406E51\r
-6E3B6E036E2E6E5E6E686E5C6E616E316E286E606E716E6B6E396E226E306E53\r
-6E656E276E786E646E776E556E796E526E666E356E366E5A7120711E712F70FB\r
-712E71317123712571227132711F7128713A711B724B725A7288728972867285\r
-728B7312730B733073227331733373277332732D732673237335730C742E0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-3e\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000742C7430742B7416741A7421742D743174247423741D74297420743274FB\r
-752F756F756C75E775DA75E175E675DD75DF75E475D77695769276DA77467747\r
-7744774D7745774A774E774B774C77DE77EC786078647865785C786D7871786A\r
-786E787078697868785E786279747973797279707A027A0A7A037A0C7A047A99\r
-7AE67AE47B4A7B477B447B487B4C7B4E7B407B587B457CA27C9E7CA87CA17D58\r
-7D6F7D637D537D567D677D6A7D4F7D6D7D5C7D6B7D527D547D697D517D5F0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-3f\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007D4E7F3E7F3F7F657F667FA27FA07FA17FD78051804F805080FE80D48143\r
-814A8152814F8147813D814D813A81E681EE81F781F881F98204823C823D823F\r
-8275833B83CF83F9842383C083E8841283E783E483FC83F6841083C683C883EB\r
-83E383BF840183DD83E583D883FF83E183CB83CE83D683F583C98409840F83DE\r
-8411840683C283F383D583FA83C783D183EA8413839A83C383EC83EE83C483FB\r
-83D783E2841B83DB83FE86D886E286E686D386E386DA86EA86DD86EB86DC0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-40\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000086EC86E986D786E886D188488856885588BA88D788B988B888C088BE88B6\r
-88BC88B788BD88B2890188C989958998899789DD89DA89DB8A4E8A4D8A398A59\r
-8A408A578A588A448A458A528A488A518A4A8A4C8A4F8C5F8C818C808CBA8CBE\r
-8CB08CB98CB58D848D808D898DD88DD38DCD8DC78DD68DDC8DCF8DD58DD98DC8\r
-8DD78DC58EEF8EF78EFA8EF98EE68EEE8EE58EF58EE78EE88EF68EEB8EF18EEC\r
-8EF48EE9902D9034902F9106912C910490FF90FC910890F990FB910191000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-41\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000091079105910391619164915F916291609201920A92259203921A9226920F\r
-920C9200921291FF91FD9206920492279202921C92249219921792059216957B\r
-958D958C95909687967E968896899683968096C296C896C396F196F0976C9770\r
-976E980798A998EB9CE69EF94E834E844EB650BD50BF50C650AE50C450CA50B4\r
-50C850C250B050C150BA50B150CB50C950B650B851D7527A5278527B527C55C3\r
-55DB55CC55D055CB55CA55DD55C055D455C455E955BF55D2558D55CF55D50000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-42\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000055E255D655C855F255CD55D955C25714585358685864584F584D5849586F\r
-5855584E585D58595865585B583D5863587158FC5AC75AC45ACB5ABA5AB85AB1\r
-5AB55AB05ABF5AC85ABB5AC65AB75AC05ACA5AB45AB65ACD5AB95A905BD65BD8\r
-5BD95C1F5C335D715D635D4A5D655D725D6C5D5E5D685D675D625DF05E4F5E4E\r
-5E4A5E4D5E4B5EC55ECC5EC65ECB5EC75F405FAF5FAD60F76149614A612B6145\r
-61366132612E6146612F614F612961406220916862236225622463C563F10000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-43\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000063EB6410641264096420642464336443641F641564186439643764226423\r
-640C64266430642864416435642F640A641A644064256427640B63E7641B642E\r
-6421640E656F659265D36686668C66956690668B668A66996694667867206966\r
-695F6938694E69626971693F6945696A6939694269576959697A694869496935\r
-696C6933693D696568F06978693469696940696F69446976695869416974694C\r
-693B694B6937695C694F695169326952692F697B693C6B466B456B436B420000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-44\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006B486B416B9B6BFB6BFC6BF96BF76BF86E9B6ED66EC86E8F6EC06E9F6E93\r
-6E946EA06EB16EB96EC66ED26EBD6EC16E9E6EC96EB76EB06ECD6EA66ECF6EB2\r
-6EBE6EC36EDC6ED86E996E926E8E6E8D6EA46EA16EBF6EB36ED06ECA6E976EAE\r
-6EA3714771547152716371607141715D716271727178716A7161714271587143\r
-714B7170715F715071537144714D715A724F728D728C72917290728E733C7342\r
-733B733A7340734A73497444744A744B7452745174577440744F7450744E0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-45\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000074427446744D745474E174FF74FE74FD751D75797577698375EF760F7603\r
-75F775FE75FC75F975F8761075FB75F675ED75F575FD769976B576DD7755775F\r
-776077527756775A7769776777547759776D77E07887789A7894788F78847895\r
-7885788678A178837879789978807896787B797C7982797D79797A117A187A19\r
-7A127A177A157A227A137A1B7A107AA37AA27A9E7AEB7B667B647B6D7B747B69\r
-7B727B657B737B717B707B617B787B767B637CB27CB47CAF7D887D867D800000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-46\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007D8D7D7F7D857D7A7D8E7D7B7D837D7C7D8C7D947D847D7D7D927F6D7F6B\r
-7F677F687F6C7FA67FA57FA77FDB7FDC8021816481608177815C8169815B8162\r
-81726721815E81768167816F81448161821D8249824482408242824584F1843F\r
-845684768479848F848D846584518440848684678430844D847D845A84598474\r
-8473845D8507845E8437843A8434847A8443847884328445842983D9844B842F\r
-8442842D845F84708439844E844C8452846F84C5848E843B8447843684330000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-47\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008468847E8444842B84608454846E8450870B870486F7870C86FA86D686F5\r
-874D86F8870E8709870186F6870D870588D688CB88CD88CE88DE88DB88DA88CC\r
-88D08985899B89DF89E589E489E189E089E289DC89E68A768A868A7F8A618A3F\r
-8A778A828A848A758A838A818A748A7A8C3C8C4B8C4A8C658C648C668C868C84\r
-8C858CCC8D688D698D918D8C8D8E8D8F8D8D8D938D948D908D928DF08DE08DEC\r
-8DF18DEE8DD08DE98DE38DE28DE78DF28DEB8DF48F068EFF8F018F008F050000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-48\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008F078F088F028F0B9052903F90449049903D9110910D910F911191169114\r
-910B910E916E916F924892529230923A926692339265925E9283922E924A9246\r
-926D926C924F92609267926F92369261927092319254926392509272924E9253\r
-924C92569232959F959C959E959B969296939691969796CE96FA96FD96F896F5\r
-9773977797789772980F980D980E98AC98F698F999AF99B299B099B59AAD9AAB\r
-9B5B9CEA9CED9CE79E809EFD50E650D450D750E850F350DB50EA50DD50E40000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-49\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000050D350EC50F050EF50E350E051D85280528152E952EB533053AC56275615\r
-560C561255FC560F561C56015613560255FA561D560455FF55F95889587C5890\r
-589858865881587F5874588B587A58875891588E587658825888587B5894588F\r
-58FE596B5ADC5AEE5AE55AD55AEA5ADA5AED5AEB5AF35AE25AE05ADB5AEC5ADE\r
-5ADD5AD95AE85ADF5B775BE05BE35C635D825D805D7D5D865D7A5D815D775D8A\r
-5D895D885D7E5D7C5D8D5D795D7F5E585E595E535ED85ED15ED75ECE5EDC0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4a\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005ED55ED95ED25ED45F445F435F6F5FB6612C61286141615E617161736152\r
-61536172616C618061746154617A615B6165613B616A6161615662296227622B\r
-642B644D645B645D6474647664726473647D6475646664A6644E6482645E645C\r
-644B645364606450647F643F646C646B645964656477657365A066A166A0669F\r
-67056704672269B169B669C969A069CE699669B069AC69BC69916999698E69A7\r
-698D69A969BE69AF69BF69C469BD69A469D469B969CA699A69CF69B369930000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4b\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000069AA69A1699E69D96997699069C269B569A569C66B4A6B4D6B4B6B9E6B9F\r
-6BA06BC36BC46BFE6ECE6EF56EF16F036F256EF86F376EFB6F2E6F096F4E6F19\r
-6F1A6F276F186F3B6F126EED6F0A6F366F736EF96EEE6F2D6F406F306F3C6F35\r
-6EEB6F076F0E6F436F056EFD6EF66F396F1C6EFC6F3A6F1F6F0D6F1E6F086F21\r
-718771907189718071857182718F717B71867181719772447253729772957293\r
-7343734D7351734C746274737471747574727467746E750075027503757D0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4c\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000759076167608760C76157611760A761476B87781777C77857782776E7780\r
-776F777E778378B278AA78B478AD78A8787E78AB789E78A578A078AC78A278A4\r
-7998798A798B799679957994799379977988799279907A2B7A4A7A307A2F7A28\r
-7A267AA87AAB7AAC7AEE7B887B9C7B8A7B917B907B967B8D7B8C7B9B7B8E7B85\r
-7B9852847B997BA47B827CBB7CBF7CBC7CBA7DA77DB77DC27DA37DAA7DC17DC0\r
-7DC57D9D7DCE7DC47DC67DCB7DCC7DAF7DB97D967DBC7D9F7DA67DAE7DA90000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4d\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007DA17DC97F737FE27FE37FE57FDE8024805D805C8189818681838187818D\r
-818C818B8215849784A484A1849F84BA84CE84C284AC84AE84AB84B984B484C1\r
-84CD84AA849A84B184D0849D84A784BB84A2849484C784CC849B84A984AF84A8\r
-84D6849884B684CF84A084D784D484D284DB84B084918661873387238728876B\r
-8740872E871E87218719871B8743872C8741873E874687208732872A872D873C\r
-8712873A8731873587428726872787388724871A8730871188F788E788F10000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4e\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000088F288FA88FE88EE88FC88F688FB88F088EC88EB899D89A1899F899E89E9\r
-89EB89E88AAB8A998A8B8A928A8F8A968C3D8C688C698CD58CCF8CD78D968E09\r
-8E028DFF8E0D8DFD8E0A8E038E078E068E058DFE8E008E048F108F118F0E8F0D\r
-9123911C91209122911F911D911A91249121911B917A91729179917392A592A4\r
-9276929B927A92A0929492AA928D92A6929A92AB92799297927F92A392EE928E\r
-9282929592A2927D928892A1928A9286928C929992A7927E928792A9929D0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-4f\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000928B922D969E96A196FF9758977D977A977E978397809782977B97849781\r
-977F97CE97CD981698AD98AE990299009907999D999C99C399B999BB99BA99C2\r
-99BD99C79AB19AE39AE79B3E9B3F9B609B619B5F9CF19CF29CF59EA750FF5103\r
-513050F85106510750F650FE510B510C50FD510A528B528C52F152EF56485642\r
-564C56355641564A564956465658565A56405633563D562C563E5638562A563A\r
-571A58AB589D58B158A058A358AF58AC58A558A158FF5AFF5AF45AFD5AF70000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-50\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005AF65B035AF85B025AF95B015B075B055B0F5C675D995D975D9F5D925DA2\r
-5D935D955DA05D9C5DA15D9A5D9E5E695E5D5E605E5C7DF35EDB5EDE5EE15F49\r
-5FB2618B6183617961B161B061A26189619B619361AF61AD619F619261AA61A1\r
-618D616661B3622D646E6470649664A064856497649C648F648B648A648C64A3\r
-649F646864B164986576657A6579657B65B265B366B566B066A966B266B766AA\r
-66AF6A006A066A1769E569F86A1569F169E46A2069FF69EC69E26A1B6A1D0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-51\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000069FE6A2769F269EE6A1469F769E76A406A0869E669FB6A0D69FC69EB6A09\r
-6A046A186A256A0F69F66A266A0769F46A166B516BA56BA36BA26BA66C016C00\r
-6BFF6C026F416F266F7E6F876FC66F926F8D6F896F8C6F626F4F6F856F5A6F96\r
-6F766F6C6F826F556F726F526F506F576F946F936F5D6F006F616F6B6F7D6F67\r
-6F906F536F8B6F696F7F6F956F636F776F6A6F7B71B271AF719B71B071A0719A\r
-71A971B5719D71A5719E71A471A171AA719C71A771B37298729A735873520000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-52\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000735E735F7360735D735B7361735A7359736274877489748A74867481747D\r
-74857488747C747975087507757E7625761E7619761D761C7623761A7628761B\r
-769C769D769E769B778D778F7789778878CD78BB78CF78CC78D178CE78D478C8\r
-78C378C478C9799A79A179A0799C79A2799B6B767A397AB27AB47AB37BB77BCB\r
-7BBE7BAC7BCE7BAF7BB97BCA7BB57CC57CC87CCC7CCB7DF77DDB7DEA7DE77DD7\r
-7DE17E037DFA7DE67DF67DF17DF07DEE7DDF7F767FAC7FB07FAD7FED7FEB0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-53\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007FEA7FEC7FE67FE88064806781A3819F819E819581A2819981978216824F\r
-825382528250824E82518524853B850F85008529850E8509850D851F850A8527\r
-851C84FB852B84FA8508850C84F4852A84F2851584F784EB84F384FC851284EA\r
-84E9851684FE8528851D852E850284FD851E84F68531852684E784E884F084EF\r
-84F9851885208530850B8519852F8662875687638764877787E1877387588754\r
-875B87528761875A8751875E876D876A8750874E875F875D876F876C877A0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-54\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000876E875C8765874F877B8775876287678769885A8905890C8914890B8917\r
-89188919890689168911890E890989A289A489A389ED89F089EC8ACF8AC68AB8\r
-8AD38AD18AD48AD58ABB8AD78ABE8AC08AC58AD88AC38ABA8ABD8AD98C3E8C4D\r
-8C8F8CE58CDF8CD98CE88CDA8CDD8CE78DA08D9C8DA18D9B8E208E238E258E24\r
-8E2E8E158E1B8E168E118E198E268E278E148E128E188E138E1C8E178E1A8F2C\r
-8F248F188F1A8F208F238F168F1790739070906F9067906B912F912B91290000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-55\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000912A91329126912E91859186918A918191829184918092D092C392C492C0\r
-92D992B692CF92F192DF92D892E992D792DD92CC92EF92C292E892CA92C892CE\r
-92E692CD92D592C992E092DE92E792D192D392B592E1932592C692B4957C95AC\r
-95AB95AE95B096A496A296D3970597089702975A978A978E978897D097CF981E\r
-981D9826982998289820981B982798B2990898FA9911991499169917991599DC\r
-99CD99CF99D399D499CE99C999D699D899CB99D799CC9AB39AEC9AEB9AF30000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-56\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009AF29AF19B469B439B679B749B719B669B769B759B709B689B649B6C9CFC\r
-9CFA9CFD9CFF9CF79D079D009CF99CFB9D089D059D049E839ED39F0F9F10511C\r
-51135117511A511151DE533453E156705660566E567356665663566D5672565E\r
-5677571C571B58C858BD58C958BF58BA58C258BC58C65B175B195B1B5B215B14\r
-5B135B105B165B285B1A5B205B1E5BEF5DAC5DB15DA95DA75DB55DB05DAE5DAA\r
-5DA85DB25DAD5DAF5DB45E675E685E665E6F5EE95EE75EE65EE85EE55F4B0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-57\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00005FBC5FBB619D61A8619661C561B461C661C161CC61BA61BF61B8618C64D7\r
-64D664D064CF64C964BD648964C364DB64F364D96533657F657C65A266C866BE\r
-66C066CA66CB66CF66BD66BB66BA66CC67236A346A666A496A676A326A686A3E\r
-6A5D6A6D6A766A5B6A516A286A5A6A3B6A3F6A416A6A6A646A506A4F6A546A6F\r
-6A696A606A3C6A5E6A566A556A4D6A4E6A466B556B546B566BA76BAA6BAB6BC8\r
-6BC76C046C036C066FAD6FCB6FA36FC76FBC6FCE6FC86F5E6FC46FBD6F9E0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-58\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006FCA6FA870046FA56FAE6FBA6FAC6FAA6FCF6FBF6FB86FA26FC96FAB6FCD\r
-6FAF6FB26FB071C571C271BF71B871D671C071C171CB71D471CA71C771CF71BD\r
-71D871BC71C671DA71DB729D729E736973667367736C7365736B736A747F749A\r
-74A074947492749574A1750B7580762F762D7631763D7633763C763576327630\r
-76BB76E6779A779D77A1779C779B77A277A377957799779778DD78E978E578EA\r
-78DE78E378DB78E178E278ED78DF78E079A47A447A487A477AB67AB87AB50000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-59\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007AB17AB77BDE7BE37BE77BDD7BD57BE57BDA7BE87BF97BD47BEA7BE27BDC\r
-7BEB7BD87BDF7CD27CD47CD77CD07CD17E127E217E177E0C7E1F7E207E137E0E\r
-7E1C7E157E1A7E227E0B7E0F7E167E0D7E147E257E247F437F7B7F7C7F7A7FB1\r
-7FEF802A8029806C81B181A681AE81B981B581AB81B081AC81B481B281B781A7\r
-81F282558256825785568545856B854D85538561855885408546856485418562\r
-8544855185478563853E855B8571854E856E8575855585678560858C85660000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5a\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000855D85548565856C86638665866487A4879B878F87978793879287888781\r
-879687988779878787A3878587908791879D87848794879C879A8789891E8926\r
-8930892D892E89278931892289298923892F892C891F89F18AE08AE28AF28AF4\r
-8AF58ADD8B148AE48ADF8AF08AC88ADE8AE18AE88AFF8AEF8AFB8C918C928C90\r
-8CF58CEE8CF18CF08CF38D6C8D6E8DA58DA78E338E3E8E388E408E458E368E3C\r
-8E3D8E418E308E3F8EBD8F368F2E8F358F328F398F378F3490769079907B0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5b\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000908690FA913391359136919391909191918D918F9327931E9308931F9306\r
-930F937A9338933C931B9323931293019346932D930E930D92CB931D92FA9313\r
-92F992F793349302932492FF932993399335932A9314930C930B92FE93099300\r
-92FB931695BC95CD95BE95B995BA95B695BF95B595BD96A996D4970B97129710\r
-97999797979497F097F89835982F98329924991F99279929999E99EE99EC99E5\r
-99E499F099E399EA99E999E79AB99ABF9AB49ABB9AF69AFA9AF99AF79B330000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5c\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009B809B859B879B7C9B7E9B7B9B829B939B929B909B7A9B959B7D9B889D25\r
-9D179D209D1E9D149D299D1D9D189D229D109D199D1F9E889E869E879EAE9EAD\r
-9ED59ED69EFA9F129F3D51265125512251245120512952F45693568C568D5686\r
-56845683567E5682567F568158D658D458CF58D25B2D5B255B325B235B2C5B27\r
-5B265B2F5B2E5B7B5BF15BF25DB75E6C5E6A5FBE61C361B561BC61E761E061E5\r
-61E461E861DE64EF64E964E364EB64E464E86581658065B665DA66D26A8D0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5d\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006A966A816AA56A896A9F6A9B6AA16A9E6A876A936A8E6A956A836AA86AA4\r
-6A916A7F6AA66A9A6A856A8C6A926B5B6BAD6C096FCC6FA96FF46FD46FE36FDC\r
-6FED6FE76FE66FDE6FF26FDD6FE26FE871E171F171E871F271E471F071E27373\r
-736E736F749774B274AB749074AA74AD74B174A574AF751075117512750F7584\r
-764376487649764776A476E977B577AB77B277B777B677B477B177A877F078F3\r
-78FD790278FB78FC78FF78F2790578F978FE790479AB79A87A5C7A5B7A560000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5e\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00007A587A547A5A7ABE7AC07AC17C057C0F7BF27C007BFF7BFB7C0E7BF47C0B\r
-7BF37C027C097C037C017BF87BFD7C067BF07BF17C107C0A7CE87E2D7E3C7E42\r
-7E3398487E387E2A7E497E407E477E297E4C7E307E3B7E367E447E3A7F457F7F\r
-7F7E7F7D7FF47FF2802C81BB81C481CC81CA81C581C781BC81E9825B825A825C\r
-85838580858F85A7859585A0858B85A3857B85A4859A859E8577857C858985A1\r
-857A85788557858E85968586858D8599859D858185A285828588858585790000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-5f\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000857685988590859F866887BE87AA87AD87C587B087AC87B987B587BC87AE\r
-87C987C387C287CC87B787AF87C487CA87B487B687BF87B887BD87DE87B28935\r
-8933893C893E894189528937894289AD89AF89AE89F289F38B1E8B188B168B11\r
-8B058B0B8B228B0F8B128B158B078B0D8B088B068B1C8B138B1A8C4F8C708C72\r
-8C718C6F8C958C948CF98D6F8E4E8E4D8E538E508E4C8E478F438F409085907E\r
-9138919A91A2919B9199919F91A1919D91A093A1938393AF9364935693470000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-60\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000937C9358935C93769349935093519360936D938F934C936A937993579355\r
-9352934F93719377937B9361935E93639367934E935995C795C095C995C395C5\r
-95B796AE96B096AC9720971F9718971D9719979A97A1979C979E979D97D597D4\r
-97F198419844984A9849984598439925992B992C992A99339932992F992D9931\r
-9930999899A399A19A0299FA99F499F799F999F899F699FB99FD99FE99FC9A03\r
-9ABE9AFE9AFD9B019AFC9B489B9A9BA89B9E9B9B9BA69BA19BA59BA49B860000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-61\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009BA29BA09BAF9D339D419D679D369D2E9D2F9D319D389D309D459D429D43\r
-9D3E9D379D409D3D7FF59D2D9E8A9E899E8D9EB09EC89EDA9EFB9EFF9F249F23\r
-9F229F549FA05131512D512E5698569C5697569A569D569959705B3C5C695C6A\r
-5DC05E6D5E6E61D861DF61ED61EE61F161EA61F061EB61D661E964FF650464FD\r
-64F86501650364FC659465DB66DA66DB66D86AC56AB96ABD6AE16AC66ABA6AB6\r
-6AB76AC76AB46AAD6B5E6BC96C0B7007700C700D700170057014700E6FFF0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-62\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000070006FFB70266FFC6FF7700A720171FF71F9720371FD737674B874C074B5\r
-74C174BE74B674BB74C275147513765C76647659765076537657765A76A676BD\r
-76EC77C277BA790C79137914790979107912791179AD79AC7A5F7C1C7C297C19\r
-7C207C1F7C2D7C1D7C267C287C227C257C307E5C7E507E567E637E587E627E5F\r
-7E517E607E577E537FB57FB37FF77FF8807581D181D281D0825F825E85B485C6\r
-85C085C385C285B385B585BD85C785C485BF85CB85CE85C885C585B185B60000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-63\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000085D2862485B885B785BE866987E787E687E287DB87EB87EA87E587DF87F3\r
-87E487D487DC87D387ED87D887E387D787D9880187F487E887DD8953894B894F\r
-894C89468950895189498B2A8B278B238B338B308B358B478B2F8B3C8B3E8B31\r
-8B258B378B268B368B2E8B248B3B8B3D8B3A8C428C758C998C988C978CFE8D04\r
-8D028D008E5C8E628E608E578E568E5E8E658E678E5B8E5A8E618E5D8E698E54\r
-8F468F478F488F4B9128913A913B913E91A891A591A791AF91AA93B5938C0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-64\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000939293B7939B939D938993A7938E93AA939E93A6939593889399939F9380\r
-938D93B1939193B293A493A893B493A395D295D395D196B396D796DA5DC296DF\r
-96D896DD97239722972597AC97AE97A897AB97A497AA97A297A597D797D997D6\r
-97D897FA98509851985298B89941993C993A9A0F9A0B9A099A0D9A049A119A0A\r
-9A059A079A069AC09ADC9B089B049B059B299B359B4A9B4C9B4B9BC79BC69BC3\r
-9BBF9BC19BB59BB89BD39BB69BC49BB99BBD9D5C9D539D4F9D4A9D5B9D4B0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-65\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009D599D569D4C9D579D529D549D5F9D589D5A9E8E9E8C9EDF9F019F009F16\r
-9F259F2B9F2A9F299F289F4C9F5551345135529652F753B456AB56AD56A656A7\r
-56AA56AC58DA58DD58DB59125B3D5B3E5B3F5DC35E705FBF61FB65076510650D\r
-6509650C650E658465DE65DD66DE6AE76AE06ACC6AD16AD96ACB6ADF6ADC6AD0\r
-6AEB6ACF6ACD6ADE6B606BB06C0C7019702770207016702B7021702270237029\r
-70177024701C720C720A72077202720572A572A672A472A372A174CB74C50000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-66\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000074B774C37516766077C977CA77C477F1791D791B7921791C7917791E79B0\r
-7A677A687C337C3C7C397C2C7C3B7CEC7CEA7E767E757E787E707E777E6F7E7A\r
-7E727E747E687F4B7F4A7F837F867FB77FFD7FFE807881D781D5820B82648261\r
-826385EB85F185ED85D985E185E885DA85D785EC85F285F885D885DF85E385DC\r
-85D185F085E685EF85DE85E2880087FA880387F687F78809880C880B880687FC\r
-880887FF880A88028962895A895B89578961895C8958895D8959898889B70000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-67\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000089B689F68B508B488B4A8B408B538B568B548B4B8B558B518B428B528B57\r
-8C438C778C768C9A8D068D078D098DAC8DAA8DAD8DAB8E6D8E788E738E6A8E6F\r
-8E7B8EC28F528F518F4F8F508F538FB49140913F91B091AD93DE93C793CF93C2\r
-93DA93D093F993EC93CC93D993A993E693CA93D493EE93E393D593C493CE93C0\r
-93D293A593E7957D95DA95DB96E19729972B972C9728972697B397B797B697DD\r
-97DE97DF985C9859985D985798BF98BD98BB98BE99489947994399A699A70000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-68\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009A1A9A159A259A1D9A249A1B9A229A209A279A239A1E9A1C9A149AC29B0B\r
-9B0A9B0E9B0C9B379BEA9BEB9BE09BDE9BE49BE69BE29BF09BD49BD79BEC9BDC\r
-9BD99BE59BD59BE19BDA9D779D819D8A9D849D889D719D809D789D869D8B9D8C\r
-9D7D9D6B9D749D759D709D699D859D739D7B9D829D6F9D799D7F9D879D689E94\r
-9E919EC09EFC9F2D9F409F419F4D9F569F579F58533756B256B556B358E35B45\r
-5DC65DC75EEE5EEF5FC05FC161F9651765166515651365DF66E866E366E40000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-69\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006AF36AF06AEA6AE86AF96AF16AEE6AEF703C7035702F7037703470317042\r
-7038703F703A7039702A7040703B703370417213721472A8737D737C74BA76AB\r
-76AA76BE76ED77CC77CE77CF77CD77F279257923792779287924792979B27A6E\r
-7A6C7A6D7AF77C497C487C4A7C477C457CEE7E7B7E7E7E817E807FBA7FFF8079\r
-81DB81D982688269862285FF860185FE861B860085F6860486098605860C85FD\r
-8819881088118817881388168963896689B989F78B608B6A8B5D8B688B630000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6a\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008B658B678B6D8DAE8E868E888E848F598F568F578F558F588F5A908D9143\r
-914191B791B591B291B3940B941393FB9420940F941493FE9415941094289419\r
-940D93F5940093F79407940E9416941293FA940993F8943C940A93FF93FC940C\r
-93F69411940695DE95E095DF972E972F97B997BB97FD97FE986098629863985F\r
-98C198C29950994E9959994C994B99539A329A349A319A2C9A2A9A369A299A2E\r
-9A389A2D9AC79ACA9AC69B109B129B119C0B9C089BF79C059C129BF89C400000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6b\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009C079C0E9C069C179C149C099D9F9D999DA49D9D9D929D989D909D9B9DA0\r
-9D949D9C9DAA9D979DA19D9A9DA29DA89D9E9DA39DBF9DA99D969DA69DA79E99\r
-9E9B9E9A9EE59EE49EE79EE69F309F2E9F5B9F609F5E9F5D9F599F91513A5139\r
-5298529756C356BD56BE5B485B475DCB5DCF5EF161FD651B6B026AFC6B036AF8\r
-6B0070437044704A7048704970457046721D721A7219737E7517766A77D0792D\r
-7931792F7C547C537CF27E8A7E877E887E8B7E867E8D7F4D7FBB803081DD0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6c\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00008618862A8626861F8623861C86198627862E862186208629861E86258829\r
-881D881B88208824881C882B884A896D8969896E896B89FA8B798B788B458B7A\r
-8B7B8D108D148DAF8E8E8E8C8F5E8F5B8F5D91469144914591B9943F943B9436\r
-9429943D94309439942A9437942C9440943195E595E495E39735973A97BF97E1\r
-986498C998C698C0995899569A399A3D9A469A449A429A419A3A9A3F9ACD9B15\r
-9B179B189B169B3A9B529C2B9C1D9C1C9C2C9C239C289C299C249C219DB70000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6d\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009DB69DBC9DC19DC79DCA9DCF9DBE9DC59DC39DBB9DB59DCE9DB99DBA9DAC\r
-9DC89DB19DAD9DCC9DB39DCD9DB29E7A9E9C9EEB9EEE9EED9F1B9F189F1A9F31\r
-9F4E9F659F649F924EB956C656C556CB59715B4B5B4C5DD55DD15EF265216520\r
-652665226B0B6B086B096C0D7055705670577052721E721F72A9737F74D874D5\r
-74D974D7766D76AD793579B47A707A717C577C5C7C597C5B7C5A7CF47CF17E91\r
-7F4F7F8781DE826B863486358633862C86328636882C88288826882A88250000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6e\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000897189BF89BE89FB8B7E8B848B828B868B858B7F8D158E958E948E9A8E92\r
-8E908E968E978F608F629147944C9450944A944B944F94479445944894499446\r
-973F97E3986A986998CB9954995B9A4E9A539A549A4C9A4F9A489A4A9A499A52\r
-9A509AD09B199B2B9B3B9B569B559C469C489C3F9C449C399C339C419C3C9C37\r
-9C349C329C3D9C369DDB9DD29DDE9DDA9DCB9DD09DDC9DD19DDF9DE99DD99DD8\r
-9DD69DF59DD59DDD9EB69EF09F359F339F329F429F6B9F959FA2513D52990000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-6f\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-000058E858E759725B4D5DD8882F5F4F62016203620465296525659666EB6B11\r
-6B126B0F6BCA705B705A7222738273817383767077D47C677C667E95826C863A\r
-86408639863C8631863B863E88308832882E883389768974897389FE8B8C8B8E\r
-8B8B8B888C458D198E988F648F6391BC94629455945D9457945E97C497C59800\r
-9A569A599B1E9B1F9B209C529C589C509C4A9C4D9C4B9C559C599C4C9C4E9DFB\r
-9DF79DEF9DE39DEB9DF89DE49DF69DE19DEE9DE69DF29DF09DE29DEC9DF40000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-70\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00009DF39DE89DED9EC29ED09EF29EF39F069F1C9F389F379F369F439F4F9F71\r
-9F709F6E9F6F56D356CD5B4E5C6D652D66ED66EE6B13705F7061705D70607223\r
-74DB74E577D5793879B779B67C6A7E977F89826D8643883888378835884B8B94\r
-8B958E9E8E9F8EA08E9D91BE91BD91C2946B9468946996E597469743974797C7\r
-97E59A5E9AD59B599C639C679C669C629C5E9C609E029DFE9E079E039E069E05\r
-9E009E019E099DFF9DFD9E049EA09F1E9F469F749F759F7656D4652E65B80000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-71\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-00006B186B196B176B1A7062722672AA77D877D979397C697C6B7CF67E9A7E98\r
-7E9B7E9981E081E18646864786488979897A897C897B89FF8B988B998EA58EA4\r
-8EA3946E946D946F9471947397499872995F9C689C6E9C6D9E0B9E0D9E109E0F\r
-9E129E119EA19EF59F099F479F789F7B9F7A9F79571E70667C6F883C8DB28EA6\r
-91C394749478947694759A609B2E9C749C739C719C759E149E139EF69F0A9FA4\r
-706870657CF7866A883E883D883F8B9E8C9C8EA98EC9974B9873987498CC0000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-72\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000996199AB9A649A669A679B249E159E179F4862076B1E7227864C8EA89482\r
-948094819A699A689E19864B8B9F94839C799EB776759A6B9C7A9E1D7069706A\r
-72299EA49F7E9F499F9800000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000000000000000000\r
+# Encoding file: cns11643-2, double-byte
+D
+7244 0 82
+21
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E424E5C51F5531A53824E074E0C4E474E8D56D75C6E5F734E0F51874E0E
+4E2E4E934EC24EC94EC8519852FC536C53B957205903592C5C105DFF65E16BB3
+6BCC6C14723F4E314E3C4EE84EDC4EE94EE14EDD4EDA520C5209531C534C5722
+57235917592F5B815B845C125C3B5C745C735E045E805E825FC9620962506C15
+6C366C436C3F6C3B72AE72B0738A79B8808A961E4F0E4F184F2C4EF54F144EF1
+4F004EF74F084F1D4F024F054F224F134F044EF44F1251B15213521052A60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+22
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005322531F534D538A540756E156DF572E572A5734593C5980597C5985597B
+597E5977597F5B565C155C255C7C5C7A5C7B5C7E5DDF5E755E845F025F1A5F74
+5FD55FD45FCF625C625E626462616266626262596260625A6265653765EF65EE
+673E67396738673B673A673F673C67336C186C466C526C5C6C4F6C4A6C546C4B
+6C4C7071725E72B472B5738E752A767F7A757F518278827C8280827D827F864D
+897E909990979098909B909496229624962096234F564F3B4F624F494F530000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+23
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F644F3E4F674F524F5F4F414F584F2D4F334F3F4F61518F51B9521C521E
+522152AD52AE530953635372538E538F54305437542A545454455419541C5425
+5418543D544F544154285424544756EE56E756E557415745574C5749574B5752
+5906594059A6599859A05997598E59A25990598F59A759A15B8E5B925C285C2A
+5C8D5C8F5C885C8B5C895C925C8A5C865C935C955DE05E0A5E0E5E8B5E895E8C
+5E885E8D5F055F1D5F785F765FD25FD15FD05FED5FE85FEE5FF35FE15FE40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+24
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005FE35FFA5FEF5FF75FFB60005FF4623A6283628C628E628F629462876271
+627B627A6270628162886277627D6272627465F065F465F365F265F567456747
+67596755674C6748675D674D675A674B6BD06C196C1A6C786C676C6B6C846C8B
+6C8F6C716C6F6C696C9A6C6D6C876C956C9C6C666C736C656C7B6C8E7074707A
+726372BF72BD72C372C672C172BA72C573957397739373947392753A75397594
+75957681793D80348095809980908092809C8290828F8285828E829182930000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+25
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000828A828382848C788FC98FBF909F90A190A5909E90A790A096309628962F
+962D4E334F984F7C4F854F7D4F804F874F764F744F894F844F774F4C4F974F6A
+4F9A4F794F814F784F904F9C4F944F9E4F924F824F954F6B4F6E519E51BC51BE
+5235523252335246523152BC530A530B533C539253945487547F548154915482
+5488546B547A547E5465546C54745466548D546F546154605498546354675464
+56F756F9576F5772576D576B57715770577657805775577B5773577457620000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+26
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005768577D590C594559B559BA59CF59CE59B259CC59C159B659BC59C359D6
+59B159BD59C059C859B459C75B625B655B935B955C445C475CAE5CA45CA05CB5
+5CAF5CA85CAC5C9F5CA35CAD5CA25CAA5CA75C9D5CA55CB65CB05CA65E175E14
+5E195F285F225F235F245F545F825F7E5F7D5FDE5FE5602D602660196032600B
+6034600A60176033601A601E602C6022600D6010602E60136011600C6009601C
+6214623D62AD62B462D162BE62AA62B662CA62AE62B362AF62BB62A962B00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+27
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000062B8653D65A865BB660965FC66046612660865FB6603660B660D660565FD
+6611661066F6670A6785676C678E67926776677B6798678667846774678D678C
+677A679F679167996783677D67816778677967946B256B806B7E6BDE6C1D6C93
+6CEC6CEB6CEE6CD96CB66CD46CAD6CE76CB76CD06CC26CBA6CC36CC66CED6CF2
+6CD26CDD6CB46C8A6C9D6C806CDE6CC06D306CCD6CC76CB06CF96CCF6CE96CD1
+709470987085709370867084709170967082709A7083726A72D672CB72D80000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+28
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000072C972DC72D272D472DA72CC72D173A473A173AD73A673A273A073AC739D
+74DD74E8753F7540753E758C759876AF76F376F176F076F577F877FC77F977FB
+77FA77F77942793F79C57A787A7B7AFB7C757CFD8035808F80AE80A380B880B5
+80AD822082A082C082AB829A8298829B82B582A782AE82BC829E82BA82B482A8
+82A182A982C282A482C382B682A28670866F866D866E8C568FD28FCB8FD38FCD
+8FD68FD58FD790B290B490AF90B390B09639963D963C963A96434FCD4FC50000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+29
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004FD34FB24FC94FCB4FC14FD44FDC4FD94FBB4FB34FDB4FC74FD64FBA4FC0
+4FB94FEC5244524952C052C2533D537C539753965399539854BA54A154AD54A5
+54CF54C3830D54B754AE54D654B654C554C654A0547054BC54A254BE547254DE
+54B057B5579E579F57A4578C5797579D579B57945798578F579957A5579A5795
+58F4590D595359E159DE59EE5A0059F159DD59FA59FD59FC59F659E459F259F7
+59DB59E959F359F559E059FE59F459ED5BA85C4C5CD05CD85CCC5CD75CCB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005CDB5CDE5CDA5CC95CC75CCA5CD65CD35CD45CCF5CC85CC65CCE5CDF5CF8
+5DF95E215E225E235E205E245EB05EA45EA25E9B5EA35EA55F075F2E5F565F86
+6037603960546072605E6045605360476049605B604C60406042605F60246044
+60586066606E6242624362CF630D630B62F5630E630362EB62F9630F630C62F8
+62F663006313631462FA631562FB62F06541654365AA65BF6636662166326635
+661C662666226633662B663A661D66346639662E670F671067C167F267C80000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000067BA67DC67BB67F867D867C067B767C567EB67E467DF67B567CD67B367F7
+67F667EE67E367C267B967CE67E767F067B267FC67C667ED67CC67AE67E667DB
+67FA67C967CA67C367EA67CB6B286B826B846BB66BD66BD86BE06C206C216D28
+6D346D2D6D1F6D3C6D3F6D126D0A6CDA6D336D046D196D3A6D1A6D116D006D1D
+6D426D016D186D376D036D0F6D406D076D206D2C6D086D226D096D1070B7709F
+70BE70B170B070A170B470B570A972417249724A726C72707273726E72CA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000072E472E872EB72DF72EA72E672E3738573CC73C273C873C573B973B673B5
+73B473EB73BF73C773BE73C373C673B873CB74EC74EE752E7547754875A775AA
+767976C47708770377047705770A76F776FB76FA77E777E87806781178127805
+7810780F780E780978037813794A794C794B7945794479D579CD79CF79D679CE
+7A807A7E7AD17B007B017C7A7C787C797C7F7C807C817D037D087D017F587F91
+7F8D7FBE8007800E800F8014803780D880C780E080D180C880C280D080C50000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000080E380D980DC80CA80D580C980CF80D780E680CD81FF8221829482D982FE
+82F9830782E8830082D5833A82EB82D682F482EC82E182F282F5830C82FB82F6
+82F082EA82E482E082FA82F382ED86778674867C86738841884E8867886A8869
+89D38A048A078D728FE38FE18FEE8FE090F190BD90BF90D590C590BE90C790CB
+90C891D491D39654964F96519653964A964E501E50055007501350225030501B
+4FF54FF450335037502C4FF64FF75017501C502050275035502F5031500E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000515A5194519351CA51C451C551C851CE5261525A5252525E525F52555262
+52CD530E539E552654E25517551254E754F354E4551A54FF5504550854EB5511
+550554F1550A54FB54F754F854E0550E5503550B5701570257CC583257D557D2
+57BA57C657BD57BC57B857B657BF57C757D057B957C1590E594A5A195A165A2D
+5A2E5A155A0F5A175A0A5A1E5A335B6C5BA75BAD5BAC5C035C565C545CEC5CFF
+5CEE5CF15CF75D005CF95E295E285EA85EAE5EAA5EAC5F335F305F67605D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000605A6067604160A26088608060926081609D60836095609B60976087609C
+608E6219624662F263106356632C634463456336634363E46339634B634A633C
+632963416334635863546359632D63476333635A63516338635763406348654A
+654665C665C365C465C2664A665F6647665167126713681F681A684968326833
+683B684B684F68166831681C6835682B682D682F684E68446834681D68126814
+68266828682E684D683A682568206B2C6B2F6B2D6B316B346B6D80826B880000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+30
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006BE66BE46BE86BE36BE26BE76C256D7A6D636D646D766D0D6D616D926D58
+6D626D6D6D6F6D916D8D6DEF6D7F6D866D5E6D676D606D976D706D7C6D5F6D82
+6D986D2F6D686D8B6D7E6D806D846D166D836D7B6D7D6D756D9070DC70D370D1
+70DD70CB7F3970E270D770D270DE70E070D470CD70C570C670C770DA70CE70E1
+7242727872777276730072FA72F472FE72F672F372FB730173D373D973E573D6
+73BC73E773E373E973DC73D273DB73D473DD73DA73D773D873E874DE74DF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+31
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000074F474F57521755B755F75B075C175BB75C475C075BF75B675BA768A76C9
+771D771B7710771377127723771177157719771A772277277823782C78227835
+782F7828782E782B782178297833782A78317954795B794F795C795379527951
+79EB79EC79E079EE79ED79EA79DC79DE79DD7A867A897A857A8B7A8C7A8A7A87
+7AD87B107B047B137B057B0F7B087B0A7B0E7B097B127C847C917C8A7C8C7C88
+7C8D7C857D1E7D1D7D117D0E7D187D167D137D1F7D127D0F7D0C7F5C7F610000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+32
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007F5E7F607F5D7F5B7F967F927FC37FC27FC08016803E803980FA80F280F9
+80F5810180FB81008201822F82258333832D83448319835183258356833F8341
+8326831C83228342834E831B832A8308833C834D8316832483208337832F8329
+83478345834C8353831E832C834B832783488653865286A286A88696868D8691
+869E868786978686868B869A868586A5869986A186A786958698868E869D8690
+869488438844886D88758876887288808871887F886F8883887E8874887C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+33
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008A128C478C578C7B8CA48CA38D768D788DB58DB78DB68ED18ED38FFE8FF5
+90028FFF8FFB90048FFC8FF690D690E090D990DA90E390DF90E590D890DB90D7
+90DC90E49150914E914F91D591E291DA965C965F96BC98E39ADF9B2F4E7F5070
+506A5061505E50605053504B505D50725048504D5041505B504A506250155045
+505F5069506B5063506450465040506E50735057505151D0526B526D526C526E
+52D652D3532D539C55755576553C554D55505534552A55515562553655350000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+34
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000553055525545550C55325565554E55395548552D553B5540554B570A5707
+57FB581457E257F657DC57F4580057ED57FD580857F8580B57F357CF580757EE
+57E357F257E557EC57E1580E57FC581057E75801580C57F157E957F0580D5804
+595C5A605A585A555A675A5E5A385A355A6D5A505A5F5A655A6C5A535A645A57
+5A435A5D5A525A445A5B5A485A8E5A3E5A4D5A395A4C5A705A695A475A515A56
+5A425A5C5B725B6E5BC15BC05C595D1E5D0B5D1D5D1A5D205D0C5D285D0D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+35
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005D265D255D0F5D305D125D235D1F5D2E5E3E5E345EB15EB45EB95EB25EB3
+5F365F385F9B5F965F9F608A6090608660BE60B060BA60D360D460CF60E460D9
+60DD60C860B160DB60B760CA60BF60C360CD60C063326365638A6382637D63BD
+639E63AD639D639763AB638E636F63876390636E63AF6375639C636D63AE637C
+63A4633B639F6378638563816391638D6370655365CD66656661665B6659665C
+66626718687968876890689C686D686E68AE68AB6956686F68A368AC68A90000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+36
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006875687468B2688F68776892687C686B687268AA68806871687E689B6896
+688B68A0688968A46878687B6891688C688A687D6B366B336B376B386B916B8F
+6B8D6B8E6B8C6C2A6DC06DAB6DB46DB36E746DAC6DE96DE26DB76DF66DD46E00
+6DC86DE06DDF6DD66DBE6DE56DDC6DDD6DDB6DF46DCA6DBD6DED6DF06DBA6DD5
+6DC26DCF6DC96DD06DF26DD36DFD6DD76DCD6DE36DBB70FA710D70F7711770F4
+710C70F0710470F3711070FC70FF71067113710070F870F6710B7102710E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+37
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000727E727B727C727F731D7317730773117318730A730872FF730F731E7388
+73F673F873F57404740173FD7407740073FA73FC73FF740C740B73F474087564
+756375CE75D275CF75CB75CC75D175D0768F768976D37739772F772D77317732
+77347733773D7725773B7735784878527849784D784A784C7826784578507964
+79677969796A7963796B796179BB79FA79F879F679F77A8F7A947A907B357B3B
+7B347B257B307B227B247B337B187B2A7B1D7B317B2B7B2D7B2F7B327B380000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+38
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007B1A7B237C947C987C967CA37D357D3D7D387D367D3A7D457D2C7D297D41
+7D477D3E7D3F7D4A7D3B7D287F637F957F9C7F9D7F9B7FCA7FCB7FCD7FD07FD1
+7FC77FCF7FC9801F801E801B804780438048811881258119811B812D811F812C
+811E812181158127811D8122821182388233823A823482328274839083A383A8
+838D837A837383A48374838F8381839583998375839483A9837D8383838C839D
+839B83AA838B837E83A583AF8388839783B0837F83A6838783AE837686590000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+39
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000865686BF86B786C286C186C586BA86B086C886B986B386B886CC86B486BB
+86BC86C386BD86BE88528889889588A888A288AA889A889188A1889F889888A7
+8899889B889788A488AC888C8893888E898289D689D989D58A308A278A2C8A1E
+8C398C3B8C5C8C5D8C7D8CA58D7D8D7B8D798DBC8DC28DB98DBF8DC18ED88EDE
+8EDD8EDC8ED78EE08EE19024900B9011901C900C902190EF90EA90F090F490F2
+90F390D490EB90EC90E991569158915A9153915591EC91F491F191F391F80000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000091E491F991EA91EB91F791E891EE957A95869588967C966D966B9671966F
+96BF976A980498E59997509B50955094509E508B50A35083508C508E509D5068
+509C509250825087515F51D45312531153A453A7559155A855A555AD55775645
+55A255935588558F55B5558155A3559255A4557D558C55A6557F559555A1558E
+570C582958375819581E58275823582857F558485825581C581B5833583F5836
+582E58395838582D582C583B59615AAF5A945A9F5A7A5AA25A9E5A785AA60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005A7C5AA55AAC5A955AAE5A375A845A8A5A975A835A8B5AA95A7B5A7D5A8C
+5A9C5A8F5A935A9D5BEA5BCD5BCB5BD45BD15BCA5BCE5C0C5C305D375D435D6B
+5D415D4B5D3F5D355D515D4E5D555D335D3A5D525D3D5D315D595D425D395D49
+5D385D3C5D325D365D405D455E445E415F585FA65FA55FAB60C960B960CC60E2
+60CE60C4611460F2610A6116610560F5611360F860FC60FE60C161036118611D
+611060FF6104610B624A639463B163B063CE63E563E863EF63C3649D63F30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000063CA63E063F663D563F263F5646163DF63BE63DD63DC63C463D863D363C2
+63C763CC63CB63C863F063D763D965326567656A6564655C65686565658C659D
+659E65AE65D065D2667C666C667B668066716679666A66726701690C68D36904
+68DC692A68EC68EA68F1690F68D668F768EB68E468F66913691068F368E16907
+68CC6908697068B4691168EF68C6691468F868D068FD68FC68E8690B690A6917
+68CE68C868DD68DE68E668F468D1690668D468E96915692568C76B396B3B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006B3F6B3C6B946B976B996B956BBD6BF06BF26BF36C306DFC6E466E476E1F
+6E496E886E3C6E3D6E456E626E2B6E3F6E416E5D6E736E1C6E336E4B6E406E51
+6E3B6E036E2E6E5E6E686E5C6E616E316E286E606E716E6B6E396E226E306E53
+6E656E276E786E646E776E556E796E526E666E356E366E5A7120711E712F70FB
+712E71317123712571227132711F7128713A711B724B725A7288728972867285
+728B7312730B733073227331733373277332732D732673237335730C742E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000742C7430742B7416741A7421742D743174247423741D74297420743274FB
+752F756F756C75E775DA75E175E675DD75DF75E475D77695769276DA77467747
+7744774D7745774A774E774B774C77DE77EC786078647865785C786D7871786A
+786E787078697868785E786279747973797279707A027A0A7A037A0C7A047A99
+7AE67AE47B4A7B477B447B487B4C7B4E7B407B587B457CA27C9E7CA87CA17D58
+7D6F7D637D537D567D677D6A7D4F7D6D7D5C7D6B7D527D547D697D517D5F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007D4E7F3E7F3F7F657F667FA27FA07FA17FD78051804F805080FE80D48143
+814A8152814F8147813D814D813A81E681EE81F781F881F98204823C823D823F
+8275833B83CF83F9842383C083E8841283E783E483FC83F6841083C683C883EB
+83E383BF840183DD83E583D883FF83E183CB83CE83D683F583C98409840F83DE
+8411840683C283F383D583FA83C783D183EA8413839A83C383EC83EE83C483FB
+83D783E2841B83DB83FE86D886E286E686D386E386DA86EA86DD86EB86DC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+40
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000086EC86E986D786E886D188488856885588BA88D788B988B888C088BE88B6
+88BC88B788BD88B2890188C989958998899789DD89DA89DB8A4E8A4D8A398A59
+8A408A578A588A448A458A528A488A518A4A8A4C8A4F8C5F8C818C808CBA8CBE
+8CB08CB98CB58D848D808D898DD88DD38DCD8DC78DD68DDC8DCF8DD58DD98DC8
+8DD78DC58EEF8EF78EFA8EF98EE68EEE8EE58EF58EE78EE88EF68EEB8EF18EEC
+8EF48EE9902D9034902F9106912C910490FF90FC910890F990FB910191000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+41
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000091079105910391619164915F916291609201920A92259203921A9226920F
+920C9200921291FF91FD9206920492279202921C92249219921792059216957B
+958D958C95909687967E968896899683968096C296C896C396F196F0976C9770
+976E980798A998EB9CE69EF94E834E844EB650BD50BF50C650AE50C450CA50B4
+50C850C250B050C150BA50B150CB50C950B650B851D7527A5278527B527C55C3
+55DB55CC55D055CB55CA55DD55C055D455C455E955BF55D2558D55CF55D50000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+42
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000055E255D655C855F255CD55D955C25714585358685864584F584D5849586F
+5855584E585D58595865585B583D5863587158FC5AC75AC45ACB5ABA5AB85AB1
+5AB55AB05ABF5AC85ABB5AC65AB75AC05ACA5AB45AB65ACD5AB95A905BD65BD8
+5BD95C1F5C335D715D635D4A5D655D725D6C5D5E5D685D675D625DF05E4F5E4E
+5E4A5E4D5E4B5EC55ECC5EC65ECB5EC75F405FAF5FAD60F76149614A612B6145
+61366132612E6146612F614F612961406220916862236225622463C563F10000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+43
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000063EB6410641264096420642464336443641F641564186439643764226423
+640C64266430642864416435642F640A641A644064256427640B63E7641B642E
+6421640E656F659265D36686668C66956690668B668A66996694667867206966
+695F6938694E69626971693F6945696A6939694269576959697A694869496935
+696C6933693D696568F06978693469696940696F69446976695869416974694C
+693B694B6937695C694F695169326952692F697B693C6B466B456B436B420000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+44
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006B486B416B9B6BFB6BFC6BF96BF76BF86E9B6ED66EC86E8F6EC06E9F6E93
+6E946EA06EB16EB96EC66ED26EBD6EC16E9E6EC96EB76EB06ECD6EA66ECF6EB2
+6EBE6EC36EDC6ED86E996E926E8E6E8D6EA46EA16EBF6EB36ED06ECA6E976EAE
+6EA3714771547152716371607141715D716271727178716A7161714271587143
+714B7170715F715071537144714D715A724F728D728C72917290728E733C7342
+733B733A7340734A73497444744A744B7452745174577440744F7450744E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+45
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000074427446744D745474E174FF74FE74FD751D75797577698375EF760F7603
+75F775FE75FC75F975F8761075FB75F675ED75F575FD769976B576DD7755775F
+776077527756775A7769776777547759776D77E07887789A7894788F78847895
+7885788678A178837879789978807896787B797C7982797D79797A117A187A19
+7A127A177A157A227A137A1B7A107AA37AA27A9E7AEB7B667B647B6D7B747B69
+7B727B657B737B717B707B617B787B767B637CB27CB47CAF7D887D867D800000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+46
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007D8D7D7F7D857D7A7D8E7D7B7D837D7C7D8C7D947D847D7D7D927F6D7F6B
+7F677F687F6C7FA67FA57FA77FDB7FDC8021816481608177815C8169815B8162
+81726721815E81768167816F81448161821D8249824482408242824584F1843F
+845684768479848F848D846584518440848684678430844D847D845A84598474
+8473845D8507845E8437843A8434847A8443847884328445842983D9844B842F
+8442842D845F84708439844E844C8452846F84C5848E843B8447843684330000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+47
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008468847E8444842B84608454846E8450870B870486F7870C86FA86D686F5
+874D86F8870E8709870186F6870D870588D688CB88CD88CE88DE88DB88DA88CC
+88D08985899B89DF89E589E489E189E089E289DC89E68A768A868A7F8A618A3F
+8A778A828A848A758A838A818A748A7A8C3C8C4B8C4A8C658C648C668C868C84
+8C858CCC8D688D698D918D8C8D8E8D8F8D8D8D938D948D908D928DF08DE08DEC
+8DF18DEE8DD08DE98DE38DE28DE78DF28DEB8DF48F068EFF8F018F008F050000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+48
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008F078F088F028F0B9052903F90449049903D9110910D910F911191169114
+910B910E916E916F924892529230923A926692339265925E9283922E924A9246
+926D926C924F92609267926F92369261927092319254926392509272924E9253
+924C92569232959F959C959E959B969296939691969796CE96FA96FD96F896F5
+9773977797789772980F980D980E98AC98F698F999AF99B299B099B59AAD9AAB
+9B5B9CEA9CED9CE79E809EFD50E650D450D750E850F350DB50EA50DD50E40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+49
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000050D350EC50F050EF50E350E051D85280528152E952EB533053AC56275615
+560C561255FC560F561C56015613560255FA561D560455FF55F95889587C5890
+589858865881587F5874588B587A58875891588E587658825888587B5894588F
+58FE596B5ADC5AEE5AE55AD55AEA5ADA5AED5AEB5AF35AE25AE05ADB5AEC5ADE
+5ADD5AD95AE85ADF5B775BE05BE35C635D825D805D7D5D865D7A5D815D775D8A
+5D895D885D7E5D7C5D8D5D795D7F5E585E595E535ED85ED15ED75ECE5EDC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005ED55ED95ED25ED45F445F435F6F5FB6612C61286141615E617161736152
+61536172616C618061746154617A615B6165613B616A6161615662296227622B
+642B644D645B645D6474647664726473647D6475646664A6644E6482645E645C
+644B645364606450647F643F646C646B645964656477657365A066A166A0669F
+67056704672269B169B669C969A069CE699669B069AC69BC69916999698E69A7
+698D69A969BE69AF69BF69C469BD69A469D469B969CA699A69CF69B369930000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000069AA69A1699E69D96997699069C269B569A569C66B4A6B4D6B4B6B9E6B9F
+6BA06BC36BC46BFE6ECE6EF56EF16F036F256EF86F376EFB6F2E6F096F4E6F19
+6F1A6F276F186F3B6F126EED6F0A6F366F736EF96EEE6F2D6F406F306F3C6F35
+6EEB6F076F0E6F436F056EFD6EF66F396F1C6EFC6F3A6F1F6F0D6F1E6F086F21
+718771907189718071857182718F717B71867181719772447253729772957293
+7343734D7351734C746274737471747574727467746E750075027503757D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000759076167608760C76157611760A761476B87781777C77857782776E7780
+776F777E778378B278AA78B478AD78A8787E78AB789E78A578A078AC78A278A4
+7998798A798B799679957994799379977988799279907A2B7A4A7A307A2F7A28
+7A267AA87AAB7AAC7AEE7B887B9C7B8A7B917B907B967B8D7B8C7B9B7B8E7B85
+7B9852847B997BA47B827CBB7CBF7CBC7CBA7DA77DB77DC27DA37DAA7DC17DC0
+7DC57D9D7DCE7DC47DC67DCB7DCC7DAF7DB97D967DBC7D9F7DA67DAE7DA90000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007DA17DC97F737FE27FE37FE57FDE8024805D805C8189818681838187818D
+818C818B8215849784A484A1849F84BA84CE84C284AC84AE84AB84B984B484C1
+84CD84AA849A84B184D0849D84A784BB84A2849484C784CC849B84A984AF84A8
+84D6849884B684CF84A084D784D484D284DB84B084918661873387238728876B
+8740872E871E87218719871B8743872C8741873E874687208732872A872D873C
+8712873A8731873587428726872787388724871A8730871188F788E788F10000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000088F288FA88FE88EE88FC88F688FB88F088EC88EB899D89A1899F899E89E9
+89EB89E88AAB8A998A8B8A928A8F8A968C3D8C688C698CD58CCF8CD78D968E09
+8E028DFF8E0D8DFD8E0A8E038E078E068E058DFE8E008E048F108F118F0E8F0D
+9123911C91209122911F911D911A91249121911B917A91729179917392A592A4
+9276929B927A92A0929492AA928D92A6929A92AB92799297927F92A392EE928E
+9282929592A2927D928892A1928A9286928C929992A7927E928792A9929D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000928B922D969E96A196FF9758977D977A977E978397809782977B97849781
+977F97CE97CD981698AD98AE990299009907999D999C99C399B999BB99BA99C2
+99BD99C79AB19AE39AE79B3E9B3F9B609B619B5F9CF19CF29CF59EA750FF5103
+513050F85106510750F650FE510B510C50FD510A528B528C52F152EF56485642
+564C56355641564A564956465658565A56405633563D562C563E5638562A563A
+571A58AB589D58B158A058A358AF58AC58A558A158FF5AFF5AF45AFD5AF70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+50
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005AF65B035AF85B025AF95B015B075B055B0F5C675D995D975D9F5D925DA2
+5D935D955DA05D9C5DA15D9A5D9E5E695E5D5E605E5C7DF35EDB5EDE5EE15F49
+5FB2618B6183617961B161B061A26189619B619361AF61AD619F619261AA61A1
+618D616661B3622D646E6470649664A064856497649C648F648B648A648C64A3
+649F646864B164986576657A6579657B65B265B366B566B066A966B266B766AA
+66AF6A006A066A1769E569F86A1569F169E46A2069FF69EC69E26A1B6A1D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+51
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000069FE6A2769F269EE6A1469F769E76A406A0869E669FB6A0D69FC69EB6A09
+6A046A186A256A0F69F66A266A0769F46A166B516BA56BA36BA26BA66C016C00
+6BFF6C026F416F266F7E6F876FC66F926F8D6F896F8C6F626F4F6F856F5A6F96
+6F766F6C6F826F556F726F526F506F576F946F936F5D6F006F616F6B6F7D6F67
+6F906F536F8B6F696F7F6F956F636F776F6A6F7B71B271AF719B71B071A0719A
+71A971B5719D71A5719E71A471A171AA719C71A771B37298729A735873520000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+52
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000735E735F7360735D735B7361735A7359736274877489748A74867481747D
+74857488747C747975087507757E7625761E7619761D761C7623761A7628761B
+769C769D769E769B778D778F7789778878CD78BB78CF78CC78D178CE78D478C8
+78C378C478C9799A79A179A0799C79A2799B6B767A397AB27AB47AB37BB77BCB
+7BBE7BAC7BCE7BAF7BB97BCA7BB57CC57CC87CCC7CCB7DF77DDB7DEA7DE77DD7
+7DE17E037DFA7DE67DF67DF17DF07DEE7DDF7F767FAC7FB07FAD7FED7FEB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+53
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007FEA7FEC7FE67FE88064806781A3819F819E819581A2819981978216824F
+825382528250824E82518524853B850F85008529850E8509850D851F850A8527
+851C84FB852B84FA8508850C84F4852A84F2851584F784EB84F384FC851284EA
+84E9851684FE8528851D852E850284FD851E84F68531852684E784E884F084EF
+84F9851885208530850B8519852F8662875687638764877787E1877387588754
+875B87528761875A8751875E876D876A8750874E875F875D876F876C877A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000876E875C8765874F877B8775876287678769885A8905890C8914890B8917
+89188919890689168911890E890989A289A489A389ED89F089EC8ACF8AC68AB8
+8AD38AD18AD48AD58ABB8AD78ABE8AC08AC58AD88AC38ABA8ABD8AD98C3E8C4D
+8C8F8CE58CDF8CD98CE88CDA8CDD8CE78DA08D9C8DA18D9B8E208E238E258E24
+8E2E8E158E1B8E168E118E198E268E278E148E128E188E138E1C8E178E1A8F2C
+8F248F188F1A8F208F238F168F1790739070906F9067906B912F912B91290000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+55
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000912A91329126912E91859186918A918191829184918092D092C392C492C0
+92D992B692CF92F192DF92D892E992D792DD92CC92EF92C292E892CA92C892CE
+92E692CD92D592C992E092DE92E792D192D392B592E1932592C692B4957C95AC
+95AB95AE95B096A496A296D3970597089702975A978A978E978897D097CF981E
+981D9826982998289820981B982798B2990898FA9911991499169917991599DC
+99CD99CF99D399D499CE99C999D699D899CB99D799CC9AB39AEC9AEB9AF30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+56
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009AF29AF19B469B439B679B749B719B669B769B759B709B689B649B6C9CFC
+9CFA9CFD9CFF9CF79D079D009CF99CFB9D089D059D049E839ED39F0F9F10511C
+51135117511A511151DE533453E156705660566E567356665663566D5672565E
+5677571C571B58C858BD58C958BF58BA58C258BC58C65B175B195B1B5B215B14
+5B135B105B165B285B1A5B205B1E5BEF5DAC5DB15DA95DA75DB55DB05DAE5DAA
+5DA85DB25DAD5DAF5DB45E675E685E665E6F5EE95EE75EE65EE85EE55F4B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+57
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005FBC5FBB619D61A8619661C561B461C661C161CC61BA61BF61B8618C64D7
+64D664D064CF64C964BD648964C364DB64F364D96533657F657C65A266C866BE
+66C066CA66CB66CF66BD66BB66BA66CC67236A346A666A496A676A326A686A3E
+6A5D6A6D6A766A5B6A516A286A5A6A3B6A3F6A416A6A6A646A506A4F6A546A6F
+6A696A606A3C6A5E6A566A556A4D6A4E6A466B556B546B566BA76BAA6BAB6BC8
+6BC76C046C036C066FAD6FCB6FA36FC76FBC6FCE6FC86F5E6FC46FBD6F9E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+58
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006FCA6FA870046FA56FAE6FBA6FAC6FAA6FCF6FBF6FB86FA26FC96FAB6FCD
+6FAF6FB26FB071C571C271BF71B871D671C071C171CB71D471CA71C771CF71BD
+71D871BC71C671DA71DB729D729E736973667367736C7365736B736A747F749A
+74A074947492749574A1750B7580762F762D7631763D7633763C763576327630
+76BB76E6779A779D77A1779C779B77A277A377957799779778DD78E978E578EA
+78DE78E378DB78E178E278ED78DF78E079A47A447A487A477AB67AB87AB50000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+59
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007AB17AB77BDE7BE37BE77BDD7BD57BE57BDA7BE87BF97BD47BEA7BE27BDC
+7BEB7BD87BDF7CD27CD47CD77CD07CD17E127E217E177E0C7E1F7E207E137E0E
+7E1C7E157E1A7E227E0B7E0F7E167E0D7E147E257E247F437F7B7F7C7F7A7FB1
+7FEF802A8029806C81B181A681AE81B981B581AB81B081AC81B481B281B781A7
+81F282558256825785568545856B854D85538561855885408546856485418562
+8544855185478563853E855B8571854E856E8575855585678560858C85660000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000855D85548565856C86638665866487A4879B878F87978793879287888781
+879687988779878787A3878587908791879D87848794879C879A8789891E8926
+8930892D892E89278931892289298923892F892C891F89F18AE08AE28AF28AF4
+8AF58ADD8B148AE48ADF8AF08AC88ADE8AE18AE88AFF8AEF8AFB8C918C928C90
+8CF58CEE8CF18CF08CF38D6C8D6E8DA58DA78E338E3E8E388E408E458E368E3C
+8E3D8E418E308E3F8EBD8F368F2E8F358F328F398F378F3490769079907B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000908690FA913391359136919391909191918D918F9327931E9308931F9306
+930F937A9338933C931B9323931293019346932D930E930D92CB931D92FA9313
+92F992F793349302932492FF932993399335932A9314930C930B92FE93099300
+92FB931695BC95CD95BE95B995BA95B695BF95B595BD96A996D4970B97129710
+97999797979497F097F89835982F98329924991F99279929999E99EE99EC99E5
+99E499F099E399EA99E999E79AB99ABF9AB49ABB9AF69AFA9AF99AF79B330000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009B809B859B879B7C9B7E9B7B9B829B939B929B909B7A9B959B7D9B889D25
+9D179D209D1E9D149D299D1D9D189D229D109D199D1F9E889E869E879EAE9EAD
+9ED59ED69EFA9F129F3D51265125512251245120512952F45693568C568D5686
+56845683567E5682567F568158D658D458CF58D25B2D5B255B325B235B2C5B27
+5B265B2F5B2E5B7B5BF15BF25DB75E6C5E6A5FBE61C361B561BC61E761E061E5
+61E461E861DE64EF64E964E364EB64E464E86581658065B665DA66D26A8D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006A966A816AA56A896A9F6A9B6AA16A9E6A876A936A8E6A956A836AA86AA4
+6A916A7F6AA66A9A6A856A8C6A926B5B6BAD6C096FCC6FA96FF46FD46FE36FDC
+6FED6FE76FE66FDE6FF26FDD6FE26FE871E171F171E871F271E471F071E27373
+736E736F749774B274AB749074AA74AD74B174A574AF751075117512750F7584
+764376487649764776A476E977B577AB77B277B777B677B477B177A877F078F3
+78FD790278FB78FC78FF78F2790578F978FE790479AB79A87A5C7A5B7A560000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A587A547A5A7ABE7AC07AC17C057C0F7BF27C007BFF7BFB7C0E7BF47C0B
+7BF37C027C097C037C017BF87BFD7C067BF07BF17C107C0A7CE87E2D7E3C7E42
+7E3398487E387E2A7E497E407E477E297E4C7E307E3B7E367E447E3A7F457F7F
+7F7E7F7D7FF47FF2802C81BB81C481CC81CA81C581C781BC81E9825B825A825C
+85838580858F85A7859585A0858B85A3857B85A4859A859E8577857C858985A1
+857A85788557858E85968586858D8599859D858185A285828588858585790000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000857685988590859F866887BE87AA87AD87C587B087AC87B987B587BC87AE
+87C987C387C287CC87B787AF87C487CA87B487B687BF87B887BD87DE87B28935
+8933893C893E894189528937894289AD89AF89AE89F289F38B1E8B188B168B11
+8B058B0B8B228B0F8B128B158B078B0D8B088B068B1C8B138B1A8C4F8C708C72
+8C718C6F8C958C948CF98D6F8E4E8E4D8E538E508E4C8E478F438F409085907E
+9138919A91A2919B9199919F91A1919D91A093A1938393AF9364935693470000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+60
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000937C9358935C93769349935093519360936D938F934C936A937993579355
+9352934F93719377937B9361935E93639367934E935995C795C095C995C395C5
+95B796AE96B096AC9720971F9718971D9719979A97A1979C979E979D97D597D4
+97F198419844984A9849984598439925992B992C992A99339932992F992D9931
+9930999899A399A19A0299FA99F499F799F999F899F699FB99FD99FE99FC9A03
+9ABE9AFE9AFD9B019AFC9B489B9A9BA89B9E9B9B9BA69BA19BA59BA49B860000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+61
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009BA29BA09BAF9D339D419D679D369D2E9D2F9D319D389D309D459D429D43
+9D3E9D379D409D3D7FF59D2D9E8A9E899E8D9EB09EC89EDA9EFB9EFF9F249F23
+9F229F549FA05131512D512E5698569C5697569A569D569959705B3C5C695C6A
+5DC05E6D5E6E61D861DF61ED61EE61F161EA61F061EB61D661E964FF650464FD
+64F86501650364FC659465DB66DA66DB66D86AC56AB96ABD6AE16AC66ABA6AB6
+6AB76AC76AB46AAD6B5E6BC96C0B7007700C700D700170057014700E6FFF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+62
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000070006FFB70266FFC6FF7700A720171FF71F9720371FD737674B874C074B5
+74C174BE74B674BB74C275147513765C76647659765076537657765A76A676BD
+76EC77C277BA790C79137914790979107912791179AD79AC7A5F7C1C7C297C19
+7C207C1F7C2D7C1D7C267C287C227C257C307E5C7E507E567E637E587E627E5F
+7E517E607E577E537FB57FB37FF77FF8807581D181D281D0825F825E85B485C6
+85C085C385C285B385B585BD85C785C485BF85CB85CE85C885C585B185B60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+63
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000085D2862485B885B785BE866987E787E687E287DB87EB87EA87E587DF87F3
+87E487D487DC87D387ED87D887E387D787D9880187F487E887DD8953894B894F
+894C89468950895189498B2A8B278B238B338B308B358B478B2F8B3C8B3E8B31
+8B258B378B268B368B2E8B248B3B8B3D8B3A8C428C758C998C988C978CFE8D04
+8D028D008E5C8E628E608E578E568E5E8E658E678E5B8E5A8E618E5D8E698E54
+8F468F478F488F4B9128913A913B913E91A891A591A791AF91AA93B5938C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+64
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000939293B7939B939D938993A7938E93AA939E93A6939593889399939F9380
+938D93B1939193B293A493A893B493A395D295D395D196B396D796DA5DC296DF
+96D896DD97239722972597AC97AE97A897AB97A497AA97A297A597D797D997D6
+97D897FA98509851985298B89941993C993A9A0F9A0B9A099A0D9A049A119A0A
+9A059A079A069AC09ADC9B089B049B059B299B359B4A9B4C9B4B9BC79BC69BC3
+9BBF9BC19BB59BB89BD39BB69BC49BB99BBD9D5C9D539D4F9D4A9D5B9D4B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+65
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009D599D569D4C9D579D529D549D5F9D589D5A9E8E9E8C9EDF9F019F009F16
+9F259F2B9F2A9F299F289F4C9F5551345135529652F753B456AB56AD56A656A7
+56AA56AC58DA58DD58DB59125B3D5B3E5B3F5DC35E705FBF61FB65076510650D
+6509650C650E658465DE65DD66DE6AE76AE06ACC6AD16AD96ACB6ADF6ADC6AD0
+6AEB6ACF6ACD6ADE6B606BB06C0C7019702770207016702B7021702270237029
+70177024701C720C720A72077202720572A572A672A472A372A174CB74C50000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+66
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000074B774C37516766077C977CA77C477F1791D791B7921791C7917791E79B0
+7A677A687C337C3C7C397C2C7C3B7CEC7CEA7E767E757E787E707E777E6F7E7A
+7E727E747E687F4B7F4A7F837F867FB77FFD7FFE807881D781D5820B82648261
+826385EB85F185ED85D985E185E885DA85D785EC85F285F885D885DF85E385DC
+85D185F085E685EF85DE85E2880087FA880387F687F78809880C880B880687FC
+880887FF880A88028962895A895B89578961895C8958895D8959898889B70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+67
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000089B689F68B508B488B4A8B408B538B568B548B4B8B558B518B428B528B57
+8C438C778C768C9A8D068D078D098DAC8DAA8DAD8DAB8E6D8E788E738E6A8E6F
+8E7B8EC28F528F518F4F8F508F538FB49140913F91B091AD93DE93C793CF93C2
+93DA93D093F993EC93CC93D993A993E693CA93D493EE93E393D593C493CE93C0
+93D293A593E7957D95DA95DB96E19729972B972C9728972697B397B797B697DD
+97DE97DF985C9859985D985798BF98BD98BB98BE99489947994399A699A70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+68
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009A1A9A159A259A1D9A249A1B9A229A209A279A239A1E9A1C9A149AC29B0B
+9B0A9B0E9B0C9B379BEA9BEB9BE09BDE9BE49BE69BE29BF09BD49BD79BEC9BDC
+9BD99BE59BD59BE19BDA9D779D819D8A9D849D889D719D809D789D869D8B9D8C
+9D7D9D6B9D749D759D709D699D859D739D7B9D829D6F9D799D7F9D879D689E94
+9E919EC09EFC9F2D9F409F419F4D9F569F579F58533756B256B556B358E35B45
+5DC65DC75EEE5EEF5FC05FC161F9651765166515651365DF66E866E366E40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+69
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006AF36AF06AEA6AE86AF96AF16AEE6AEF703C7035702F7037703470317042
+7038703F703A7039702A7040703B703370417213721472A8737D737C74BA76AB
+76AA76BE76ED77CC77CE77CF77CD77F279257923792779287924792979B27A6E
+7A6C7A6D7AF77C497C487C4A7C477C457CEE7E7B7E7E7E817E807FBA7FFF8079
+81DB81D982688269862285FF860185FE861B860085F6860486098605860C85FD
+8819881088118817881388168963896689B989F78B608B6A8B5D8B688B630000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008B658B678B6D8DAE8E868E888E848F598F568F578F558F588F5A908D9143
+914191B791B591B291B3940B941393FB9420940F941493FE9415941094289419
+940D93F5940093F79407940E9416941293FA940993F8943C940A93FF93FC940C
+93F69411940695DE95E095DF972E972F97B997BB97FD97FE986098629863985F
+98C198C29950994E9959994C994B99539A329A349A319A2C9A2A9A369A299A2E
+9A389A2D9AC79ACA9AC69B109B129B119C0B9C089BF79C059C129BF89C400000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6b
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009C079C0E9C069C179C149C099D9F9D999DA49D9D9D929D989D909D9B9DA0
+9D949D9C9DAA9D979DA19D9A9DA29DA89D9E9DA39DBF9DA99D969DA69DA79E99
+9E9B9E9A9EE59EE49EE79EE69F309F2E9F5B9F609F5E9F5D9F599F91513A5139
+5298529756C356BD56BE5B485B475DCB5DCF5EF161FD651B6B026AFC6B036AF8
+6B0070437044704A7048704970457046721D721A7219737E7517766A77D0792D
+7931792F7C547C537CF27E8A7E877E887E8B7E867E8D7F4D7FBB803081DD0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6c
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008618862A8626861F8623861C86198627862E862186208629861E86258829
+881D881B88208824881C882B884A896D8969896E896B89FA8B798B788B458B7A
+8B7B8D108D148DAF8E8E8E8C8F5E8F5B8F5D91469144914591B9943F943B9436
+9429943D94309439942A9437942C9440943195E595E495E39735973A97BF97E1
+986498C998C698C0995899569A399A3D9A469A449A429A419A3A9A3F9ACD9B15
+9B179B189B169B3A9B529C2B9C1D9C1C9C2C9C239C289C299C249C219DB70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009DB69DBC9DC19DC79DCA9DCF9DBE9DC59DC39DBB9DB59DCE9DB99DBA9DAC
+9DC89DB19DAD9DCC9DB39DCD9DB29E7A9E9C9EEB9EEE9EED9F1B9F189F1A9F31
+9F4E9F659F649F924EB956C656C556CB59715B4B5B4C5DD55DD15EF265216520
+652665226B0B6B086B096C0D7055705670577052721E721F72A9737F74D874D5
+74D974D7766D76AD793579B47A707A717C577C5C7C597C5B7C5A7CF47CF17E91
+7F4F7F8781DE826B863486358633862C86328636882C88288826882A88250000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6e
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000897189BF89BE89FB8B7E8B848B828B868B858B7F8D158E958E948E9A8E92
+8E908E968E978F608F629147944C9450944A944B944F94479445944894499446
+973F97E3986A986998CB9954995B9A4E9A539A549A4C9A4F9A489A4A9A499A52
+9A509AD09B199B2B9B3B9B569B559C469C489C3F9C449C399C339C419C3C9C37
+9C349C329C3D9C369DDB9DD29DDE9DDA9DCB9DD09DDC9DD19DDF9DE99DD99DD8
+9DD69DF59DD59DDD9EB69EF09F359F339F329F429F6B9F959FA2513D52990000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000058E858E759725B4D5DD8882F5F4F62016203620465296525659666EB6B11
+6B126B0F6BCA705B705A7222738273817383767077D47C677C667E95826C863A
+86408639863C8631863B863E88308832882E883389768974897389FE8B8C8B8E
+8B8B8B888C458D198E988F648F6391BC94629455945D9457945E97C497C59800
+9A569A599B1E9B1F9B209C529C589C509C4A9C4D9C4B9C559C599C4C9C4E9DFB
+9DF79DEF9DE39DEB9DF89DE49DF69DE19DEE9DE69DF29DF09DE29DEC9DF40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+70
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009DF39DE89DED9EC29ED09EF29EF39F069F1C9F389F379F369F439F4F9F71
+9F709F6E9F6F56D356CD5B4E5C6D652D66ED66EE6B13705F7061705D70607223
+74DB74E577D5793879B779B67C6A7E977F89826D8643883888378835884B8B94
+8B958E9E8E9F8EA08E9D91BE91BD91C2946B9468946996E597469743974797C7
+97E59A5E9AD59B599C639C679C669C629C5E9C609E029DFE9E079E039E069E05
+9E009E019E099DFF9DFD9E049EA09F1E9F469F749F759F7656D4652E65B80000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+71
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006B186B196B176B1A7062722672AA77D877D979397C697C6B7CF67E9A7E98
+7E9B7E9981E081E18646864786488979897A897C897B89FF8B988B998EA58EA4
+8EA3946E946D946F9471947397499872995F9C689C6E9C6D9E0B9E0D9E109E0F
+9E129E119EA19EF59F099F479F789F7B9F7A9F79571E70667C6F883C8DB28EA6
+91C394749478947694759A609B2E9C749C739C719C759E149E139EF69F0A9FA4
+706870657CF7866A883E883D883F8B9E8C9C8EA98EC9974B9873987498CC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+72
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000996199AB9A649A669A679B249E159E179F4862076B1E7227864C8EA89482
+948094819A699A689E19864B8B9F94839C799EB776759A6B9C7A9E1D7069706A
+72299EA49F7E9F499F9800000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
index 0e26609..05e08b5 100644 (file)
@@ -24,7 +24,7 @@ sub MY::postamble {
   if ($^O =~ /MSWin32/ && Win32::IsWin95()) {
        if ($Config{'make'} =~ /dmake/i) {
            # dmake-specific
-           return <<'EOT';\r
+           return <<'EOT';
 $(MYEXTLIB): sdbm/Makefile
 @[
        cd sdbm
@@ -34,7 +34,7 @@ $(MYEXTLIB): sdbm/Makefile
 EOT
        } elsif ($Config{'make'} =~ /nmake/i) {
            #
-           return <<'EOT';\r
+           return <<'EOT';
 $(MYEXTLIB): sdbm/Makefile
        cd sdbm
        $(MAKE) all
index ea67a2e..f482695 100644 (file)
-/*\r
- * Copyright 1997, O'Reilly & Associate, Inc.\r
- *\r
- * This package may be copied under the same terms as Perl itself.\r
- */\r
-\r
-#include "EXTERN.h"\r
-#include "perl.h"\r
-#include "XSUB.h"\r
-\r
-#include <stdio.h>\r
-#include <jni.h>\r
-\r
-#ifndef PERL_VERSION\r
-#  include <patchlevel.h>\r
-#  define PERL_REVISION                5\r
-#  define PERL_VERSION         PATCHLEVEL\r
-#  define PERL_SUBVERSION      SUBVERSION\r
-#endif\r
-\r
-#if PERL_REVISION == 5 && (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION <= 75))\r
-#  define PL_na                na\r
-#  define PL_sv_no     sv_no\r
-#  define PL_sv_undef  sv_undef\r
-#  define PL_dowarn    dowarn\r
-#endif\r
-\r
-#ifndef newSVpvn\r
-#  define newSVpvn(a,b)        newSVpv(a,b)\r
-#endif\r
-\r
-#ifndef pTHX\r
-#  define pTHX         void\r
-#  define pTHX_\r
-#  define aTHX\r
-#  define aTHX_\r
-#  define dTHX         extern int JNI___notused\r
-#endif\r
-\r
-#ifndef WIN32\r
-#  include <dlfcn.h>\r
-#endif\r
-\r
-#ifdef EMBEDDEDPERL\r
-extern JNIEnv* jplcurenv;\r
-extern int jpldebug;\r
-#else\r
-JNIEnv* jplcurenv;\r
-int jpldebug = 1;\r
-#endif\r
-\r
-#define SysRet jint\r
-\r
-#ifdef WIN32\r
-static void JNICALL call_my_exit(jint status)\r
-{\r
-    my_exit(status);\r
-}\r
-#else\r
-static void call_my_exit(jint status)\r
-{\r
-    my_exit(status);\r
-}\r
-#endif\r
-\r
-jvalue*\r
-makeargs(char *sig, SV** svp, int items)\r
-{\r
-    jvalue* jv = (jvalue*)safemalloc(sizeof(jvalue) * items);\r
-    int ix = 0;\r
-    char *s = sig;\r
-    JNIEnv* env = jplcurenv;\r
-    char *start;\r
-    STRLEN n_a;\r
-\r
-    if (jpldebug)\r
-       fprintf(stderr, "sig = %s, items = %d\n", sig, items);\r
-    if (*s++ != '(')\r
-       goto cleanup;\r
-\r
-    while (items--) {\r
-       SV *sv = *svp++;\r
-       start = s;\r
-       switch (*s++) {\r
-       case 'Z':\r
-           jv[ix++].z = (jboolean)(SvIV(sv) != 0);\r
-           break;\r
-       case 'B':\r
-           jv[ix++].b = (jbyte)SvIV(sv);\r
-           break;\r
-       case 'C':\r
-           jv[ix++].c = (jchar)SvIV(sv);\r
-           break;\r
-       case 'S':\r
-           jv[ix++].s = (jshort)SvIV(sv);\r
-           break;\r
-       case 'I':\r
-           jv[ix++].i = (jint)SvIV(sv);\r
-           break;\r
-       case 'J':\r
-           jv[ix++].j = (jlong)SvNV(sv);\r
-           break;\r
-       case 'F':\r
-           jv[ix++].f = (jfloat)SvNV(sv);\r
-           break;\r
-       case 'D':\r
-           jv[ix++].d = (jdouble)SvNV(sv);\r
-           break;\r
-       case '[':\r
-           switch (*s++) {\r
-           case 'Z':\r
-               if (SvROK(sv)) {\r
-                   SV* rv = (SV*)SvRV(sv);\r
-                   if (SvOBJECT(rv))\r
-                       jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                   else if (SvTYPE(rv) == SVt_PVAV) {\r
-                       jsize len = av_len((AV*)rv) + 1;\r
-                       jboolean* buf = (jboolean*)malloc(len * sizeof(jboolean));\r
-                       int i;\r
-                       SV** esv;\r
-\r
-                       jbooleanArray ja = (*env)->NewBooleanArray(env, len);\r
-                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)\r
-                           buf[i] = (jboolean)SvIV(*esv);\r
-                       (*env)->SetBooleanArrayRegion(env, ja, 0, len, buf);\r
-                       free((void*)buf);\r
-                       jv[ix++].l = (jobject)ja;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-               }\r
-               else if (SvPOK(sv)) {\r
-                   jsize len = sv_len(sv) / sizeof(jboolean);\r
-\r
-                   jbooleanArray ja = (*env)->NewBooleanArray(env, len);\r
-                   (*env)->SetBooleanArrayRegion(env, ja, 0, len, (jboolean*)SvPV(sv,n_a));\r
-                   jv[ix++].l = (jobject)ja;\r
-               }\r
-               else\r
-                   jv[ix++].l = (jobject)(void*)0;\r
-               break;\r
-           case 'B':\r
-               if (SvROK(sv)) {\r
-                   SV* rv = (SV*)SvRV(sv);\r
-                   if (SvOBJECT(rv))\r
-                       jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                   else if (SvTYPE(rv) == SVt_PVAV) {\r
-                       jsize len = av_len((AV*)rv) + 1;\r
-                       jbyte* buf = (jbyte*)malloc(len * sizeof(jbyte));\r
-                       int i;\r
-                       SV** esv;\r
-\r
-                       jbyteArray ja = (*env)->NewByteArray(env, len);\r
-                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)\r
-                           buf[i] = (jbyte)SvIV(*esv);\r
-                       (*env)->SetByteArrayRegion(env, ja, 0, len, buf);\r
-                       free((void*)buf);\r
-                       jv[ix++].l = (jobject)ja;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-               }\r
-               else if (SvPOK(sv)) {\r
-                   jsize len = sv_len(sv) / sizeof(jbyte);\r
-\r
-                   jbyteArray ja = (*env)->NewByteArray(env, len);\r
-                   (*env)->SetByteArrayRegion(env, ja, 0, len, (jbyte*)SvPV(sv,n_a));\r
-                   jv[ix++].l = (jobject)ja;\r
-               }\r
-               else\r
-                   jv[ix++].l = (jobject)(void*)0;\r
-               break;\r
-           case 'C':\r
-               if (SvROK(sv)) {\r
-                   SV* rv = (SV*)SvRV(sv);\r
-                   if (SvOBJECT(rv))\r
-                       jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                   else if (SvTYPE(rv) == SVt_PVAV) {\r
-                       jsize len = av_len((AV*)rv) + 1;\r
-                       jchar* buf = (jchar*)malloc(len * sizeof(jchar));\r
-                       int i;\r
-                       SV** esv;\r
-\r
-                       jcharArray ja = (*env)->NewCharArray(env, len);\r
-                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)\r
-                           buf[i] = (jchar)SvIV(*esv);\r
-                       (*env)->SetCharArrayRegion(env, ja, 0, len, buf);\r
-                       free((void*)buf);\r
-                       jv[ix++].l = (jobject)ja;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-               }\r
-               else if (SvPOK(sv)) {\r
-                   jsize len = sv_len(sv) / sizeof(jchar);\r
-\r
-                   jcharArray ja = (*env)->NewCharArray(env, len);\r
-                   (*env)->SetCharArrayRegion(env, ja, 0, len, (jchar*)SvPV(sv,n_a));\r
-                   jv[ix++].l = (jobject)ja;\r
-               }\r
-               else\r
-                   jv[ix++].l = (jobject)(void*)0;\r
-               break;\r
-           case 'S':\r
-               if (SvROK(sv)) {\r
-                   SV* rv = (SV*)SvRV(sv);\r
-                   if (SvOBJECT(rv))\r
-                       jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                   else if (SvTYPE(rv) == SVt_PVAV) {\r
-                       jsize len = av_len((AV*)rv) + 1;\r
-                       jshort* buf = (jshort*)malloc(len * sizeof(jshort));\r
-                       int i;\r
-                       SV** esv;\r
-\r
-                       jshortArray ja = (*env)->NewShortArray(env, len);\r
-                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)\r
-                           buf[i] = (jshort)SvIV(*esv);\r
-                       (*env)->SetShortArrayRegion(env, ja, 0, len, buf);\r
-                       free((void*)buf);\r
-                       jv[ix++].l = (jobject)ja;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-               }\r
-               else if (SvPOK(sv)) {\r
-                   jsize len = sv_len(sv) / sizeof(jshort);\r
-\r
-                   jshortArray ja = (*env)->NewShortArray(env, len);\r
-                   (*env)->SetShortArrayRegion(env, ja, 0, len, (jshort*)SvPV(sv,n_a));\r
-                   jv[ix++].l = (jobject)ja;\r
-               }\r
-               else\r
-                   jv[ix++].l = (jobject)(void*)0;\r
-               break;\r
-           case 'I':\r
-               if (SvROK(sv)) {\r
-                   SV* rv = (SV*)SvRV(sv);\r
-                   if (SvOBJECT(rv))\r
-                       jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                   else if (SvTYPE(rv) == SVt_PVAV) {\r
-                       jsize len = av_len((AV*)rv) + 1;\r
-                       jint* buf = (jint*)malloc(len * sizeof(jint));\r
-                       int i;\r
-                       SV** esv;\r
-\r
-                       jintArray ja = (*env)->NewIntArray(env, len);\r
-                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)\r
-                           buf[i] = (jint)SvIV(*esv);\r
-                       (*env)->SetIntArrayRegion(env, ja, 0, len, buf);\r
-                       free((void*)buf);\r
-                       jv[ix++].l = (jobject)ja;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-               }\r
-               else if (SvPOK(sv)) {\r
-                   jsize len = sv_len(sv) / sizeof(jint);\r
-\r
-                   jintArray ja = (*env)->NewIntArray(env, len);\r
-                   (*env)->SetIntArrayRegion(env, ja, 0, len, (jint*)SvPV(sv,n_a));\r
-                   jv[ix++].l = (jobject)ja;\r
-               }\r
-               else\r
-                   jv[ix++].l = (jobject)(void*)0;\r
-               break;\r
-           case 'J':\r
-               if (SvROK(sv)) {\r
-                   SV* rv = (SV*)SvRV(sv);\r
-                   if (SvOBJECT(rv))\r
-                       jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                   else if (SvTYPE(rv) == SVt_PVAV) {\r
-                       jsize len = av_len((AV*)rv) + 1;\r
-                       jlong* buf = (jlong*)malloc(len * sizeof(jlong));\r
-                       int i;\r
-                       SV** esv;\r
-\r
-                       jlongArray ja = (*env)->NewLongArray(env, len);\r
-                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)\r
-                           buf[i] = (jlong)SvNV(*esv);\r
-                       (*env)->SetLongArrayRegion(env, ja, 0, len, buf);\r
-                       free((void*)buf);\r
-                       jv[ix++].l = (jobject)ja;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-               }\r
-               else if (SvPOK(sv)) {\r
-                   jsize len = sv_len(sv) / sizeof(jlong);\r
-\r
-                   jlongArray ja = (*env)->NewLongArray(env, len);\r
-                   (*env)->SetLongArrayRegion(env, ja, 0, len, (jlong*)SvPV(sv,n_a));\r
-                   jv[ix++].l = (jobject)ja;\r
-               }\r
-               else\r
-                   jv[ix++].l = (jobject)(void*)0;\r
-               break;\r
-           case 'F':\r
-               if (SvROK(sv)) {\r
-                   SV* rv = (SV*)SvRV(sv);\r
-                   if (SvOBJECT(rv))\r
-                       jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                   else if (SvTYPE(rv) == SVt_PVAV) {\r
-                       jsize len = av_len((AV*)rv) + 1;\r
-                       jfloat* buf = (jfloat*)malloc(len * sizeof(jfloat));\r
-                       int i;\r
-                       SV** esv;\r
-\r
-                       jfloatArray ja = (*env)->NewFloatArray(env, len);\r
-                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)\r
-                           buf[i] = (jfloat)SvNV(*esv);\r
-                       (*env)->SetFloatArrayRegion(env, ja, 0, len, buf);\r
-                       free((void*)buf);\r
-                       jv[ix++].l = (jobject)ja;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-               }\r
-               else if (SvPOK(sv)) {\r
-                   jsize len = sv_len(sv) / sizeof(jfloat);\r
-\r
-                   jfloatArray ja = (*env)->NewFloatArray(env, len);\r
-                   (*env)->SetFloatArrayRegion(env, ja, 0, len, (jfloat*)SvPV(sv,n_a));\r
-                   jv[ix++].l = (jobject)ja;\r
-               }\r
-               else\r
-                   jv[ix++].l = (jobject)(void*)0;\r
-               break;\r
-           case 'D':\r
-               if (SvROK(sv)) {\r
-                   SV* rv = (SV*)SvRV(sv);\r
-                   if (SvOBJECT(rv))\r
-                       jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                   else if (SvTYPE(rv) == SVt_PVAV) {\r
-                       jsize len = av_len((AV*)rv) + 1;\r
-                       jdouble* buf = (jdouble*)malloc(len * sizeof(jdouble));\r
-                       int i;\r
-                       SV** esv;\r
-\r
-                       jdoubleArray ja = (*env)->NewDoubleArray(env, len);\r
-                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)\r
-                           buf[i] = (jdouble)SvNV(*esv);\r
-                       (*env)->SetDoubleArrayRegion(env, ja, 0, len, buf);\r
-                       free((void*)buf);\r
-                       jv[ix++].l = (jobject)ja;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-               }\r
-               else if (SvPOK(sv)) {\r
-                   jsize len = sv_len(sv) / sizeof(jdouble);\r
-\r
-                   jdoubleArray ja = (*env)->NewDoubleArray(env, len);\r
-                   (*env)->SetDoubleArrayRegion(env, ja, 0, len, (jdouble*)SvPV(sv,n_a));\r
-                   jv[ix++].l = (jobject)ja;\r
-               }\r
-               else\r
-                   jv[ix++].l = (jobject)(void*)0;\r
-               break;\r
-           case 'L':\r
-               while (*s != ';') s++;\r
-               s++;\r
-               if (strnEQ(start, "[Ljava/lang/String;", 19)) {\r
-                   if (SvROK(sv)) {\r
-                       SV* rv = (SV*)SvRV(sv);\r
-                       if (SvOBJECT(rv))\r
-                           jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                       else if (SvTYPE(rv) == SVt_PVAV) {\r
-                           jsize len = av_len((AV*)rv) + 1;\r
-                           int i;\r
-                           SV** esv;\r
-                           static jclass jcl = 0;\r
-                           jobjectArray ja;\r
-\r
-                           if (!jcl)\r
-                               jcl = (*env)->FindClass(env, "java/lang/String");\r
-                           ja = (*env)->NewObjectArray(env, len, jcl, 0);\r
-                           for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++) {\r
-                               jobject str = (jobject)(*env)->NewStringUTF(env, SvPV(*esv,n_a));\r
-                               (*env)->SetObjectArrayElement(env, ja, i, str);\r
-                           }\r
-                           jv[ix++].l = (jobject)ja;\r
-                       }\r
-                       else\r
-                           jv[ix++].l = (jobject)(void*)0;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-                   break;\r
-               }\r
-               /* FALL THROUGH */\r
-           default:\r
-               if (SvROK(sv)) {\r
-                   SV* rv = (SV*)SvRV(sv);\r
-                   if (SvOBJECT(rv))\r
-                       jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-                   else if (SvTYPE(rv) == SVt_PVAV) {\r
-                       jsize len = av_len((AV*)rv) + 1;\r
-                       int i;\r
-                       SV** esv;\r
-                      static jclass jcl = 0;\r
-                       jobjectArray ja;\r
-\r
-                       if (!jcl)\r
-                           jcl = (*env)->FindClass(env, "java/lang/Object");\r
-                       ja = (*env)->NewObjectArray(env, len, jcl, 0);\r
-                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++) {\r
-                           if (SvROK(*esv) && (rv = SvRV(*esv)) && SvOBJECT(rv)) {\r
-                               (*env)->SetObjectArrayElement(env, ja, i, (jobject)(void*)SvIV(rv));\r
-                           }\r
-                           else {\r
-                               jobject str = (jobject)(*env)->NewStringUTF(env, SvPV(*esv,n_a));\r
-                               (*env)->SetObjectArrayElement(env, ja, i, str);\r
-                           }\r
-                       }\r
-                       jv[ix++].l = (jobject)ja;\r
-                   }\r
-                   else\r
-                       jv[ix++].l = (jobject)(void*)0;\r
-               }\r
-               else\r
-                   jv[ix++].l = (jobject)(void*)0;\r
-               break;\r
-           }\r
-           break;\r
-       case 'L':\r
-           if (!SvROK(sv) || strnEQ(s, "java/lang/String;", 17)) {\r
-               s += 17;\r
-               jv[ix++].l = (jobject)(*env)->NewStringUTF(env, (char*) SvPV(sv,n_a));\r
-               break;\r
-           }\r
-           while (*s != ';') s++;\r
-           s++;\r
-           if (SvROK(sv)) {\r
-               SV* rv = SvRV(sv);\r
-               jv[ix++].l = (jobject)(void*)SvIV(rv);\r
-           }\r
-           break;\r
-       case ')':\r
-           croak("too many arguments, signature: %s", sig);\r
-           goto cleanup;\r
-       default:\r
-           croak("panic: malformed signature: %s", s-1);\r
-           goto cleanup;\r
-       }\r
-\r
-    }\r
-    if (*s != ')') {\r
-       croak("not enough arguments, signature: %s", sig);\r
-       goto cleanup;\r
-    }\r
-    return jv;\r
-\r
-cleanup:\r
-    safefree((char*)jv);\r
-    return 0;\r
-}\r
-\r
-static int\r
-not_here(char *s)\r
-{\r
-    croak("%s not implemented on this architecture", s);\r
-    return -1;\r
-}\r
-\r
-static double\r
-constant(char *name, int arg)\r
-{\r
-    errno = 0;\r
-    switch (*name) {\r
-    case 'A':\r
-       break;\r
-    case 'B':\r
-       break;\r
-    case 'C':\r
-       break;\r
-    case 'D':\r
-       break;\r
-    case 'E':\r
-       break;\r
-    case 'F':\r
-       break;\r
-    case 'G':\r
-       break;\r
-    case 'H':\r
-       break;\r
-    case 'I':\r
-       break;\r
-    case 'J':\r
-       if (strEQ(name, "JNI_ABORT"))\r
-#ifdef JNI_ABORT\r
-           return JNI_ABORT;\r
-#else\r
-           goto not_there;\r
-#endif\r
-       if (strEQ(name, "JNI_COMMIT"))\r
-#ifdef JNI_COMMIT\r
-           return JNI_COMMIT;\r
-#else\r
-           goto not_there;\r
-#endif\r
-       if (strEQ(name, "JNI_ERR"))\r
-#ifdef JNI_ERR\r
-           return JNI_ERR;\r
-#else\r
-           goto not_there;\r
-#endif\r
-       if (strEQ(name, "JNI_FALSE"))\r
-#ifdef JNI_FALSE\r
-           return JNI_FALSE;\r
-#else\r
-           goto not_there;\r
-#endif\r
-       if (strEQ(name, "JNI_H"))\r
-#ifdef JNI_H\r
-#ifdef WIN32\r
-           return 1;\r
-#else\r
-           return JNI_H;\r
-#endif\r
-#else\r
-           goto not_there;\r
-#endif\r
-       if (strEQ(name, "JNI_OK"))\r
-#ifdef JNI_OK\r
-           return JNI_OK;\r
-#else\r
-           goto not_there;\r
-#endif\r
-       if (strEQ(name, "JNI_TRUE"))\r
-#ifdef JNI_TRUE\r
-           return JNI_TRUE;\r
-#else\r
-           goto not_there;\r
-#endif\r
-       break;\r
-    case 'K':\r
-       break;\r
-    case 'L':\r
-       break;\r
-    case 'M':\r
-       break;\r
-    case 'N':\r
-       break;\r
-    case 'O':\r
-       break;\r
-    case 'P':\r
-       break;\r
-    case 'Q':\r
-       break;\r
-    case 'R':\r
-       break;\r
-    case 'S':\r
-       break;\r
-    case 'T':\r
-       break;\r
-    case 'U':\r
-       break;\r
-    case 'V':\r
-       break;\r
-    case 'W':\r
-       break;\r
-    case 'X':\r
-       break;\r
-    case 'Y':\r
-       break;\r
-    case 'Z':\r
-       break;\r
-    }\r
-    errno = EINVAL;\r
-    return 0;\r
-\r
-not_there:\r
-    errno = ENOENT;\r
-    return 0;\r
-}\r
-\r
-#define FETCHENV jplcurenv\r
-#define RESTOREENV jplcurenv = env\r
-\r
-MODULE = JNI           PACKAGE = JNI           \r
-\r
-PROTOTYPES: ENABLE\r
-\r
-double\r
-constant(name,arg)\r
-       char *          name\r
-       int             arg\r
-\r
-jint\r
-GetVersion()\r
-       JNIEnv *                env = FETCHENV;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetVersion(env);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jclass\r
-DefineClass(name, loader, buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jsize                   buf_len_ = NO_INIT;\r
-       const char *            name\r
-       jobject                 loader\r
-       const jbyte *           buf\r
-    CODE:\r
-       {\r
-#ifdef KAFFE\r
-           RETVAL = (*env)->DefineClass(env,  loader, buf, (jsize)buf_len_);\r
-#else\r
-           RETVAL = (*env)->DefineClass(env,  name, loader, buf, (jsize)buf_len_); \r
-#endif\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jclass\r
-FindClass(name)\r
-       JNIEnv *                env = FETCHENV;\r
-       const char *            name\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->FindClass(env,  name);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jclass\r
-GetSuperclass(sub)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  sub\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetSuperclass(env,  sub);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-IsAssignableFrom(sub, sup)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  sub\r
-       jclass                  sup\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->IsAssignableFrom(env,  sub, sup);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-SysRet\r
-Throw(obj)\r
-       JNIEnv *                env = FETCHENV;\r
-       jthrowable              obj\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->Throw(env,  obj);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL    \r
-\r
-SysRet\r
-ThrowNew(clazz, msg)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       const char *            msg\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->ThrowNew(env,  clazz, msg);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jthrowable\r
-ExceptionOccurred()\r
-       JNIEnv *                env = FETCHENV;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->ExceptionOccurred(env);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-void\r
-ExceptionDescribe()\r
-       JNIEnv *                env = FETCHENV;\r
-    CODE:\r
-       {\r
-           (*env)->ExceptionDescribe(env);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-ExceptionClear()\r
-       JNIEnv *                env = FETCHENV;\r
-    CODE:\r
-       {\r
-           (*env)->ExceptionClear(env);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-FatalError(msg)\r
-       JNIEnv *                env = FETCHENV;\r
-       const char *            msg\r
-    CODE:\r
-       {\r
-           (*env)->FatalError(env,  msg);\r
-           RESTOREENV;\r
-       }\r
-\r
-jobject\r
-NewGlobalRef(lobj)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 lobj\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewGlobalRef(env, lobj);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-void\r
-DeleteGlobalRef(gref)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 gref\r
-    CODE:\r
-       {\r
-           (*env)->DeleteGlobalRef(env, gref);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-DeleteLocalRef(obj)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-    CODE:\r
-       {\r
-           (*env)->DeleteLocalRef(env,  obj);\r
-           RESTOREENV;\r
-       }\r
-\r
-jboolean\r
-IsSameObject(obj1,obj2)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj1\r
-       jobject                 obj2\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->IsSameObject(env, obj1,obj2);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-AllocObject(clazz)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->AllocObject(env, clazz);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-NewObject(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->NewObjectA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-NewObjectA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewObjectA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jclass\r
-GetObjectClass(obj)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetObjectClass(env, obj);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-IsInstanceOf(obj,clazz)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->IsInstanceOf(env, obj,clazz);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jmethodID\r
-GetMethodID(clazz,name,sig)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       const char *            name\r
-       const char *            sig\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetMethodID(env, clazz,name,sig);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-CallObjectMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallObjectMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-CallObjectMethodA(obj,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallObjectMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-CallBooleanMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallBooleanMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-CallBooleanMethodA(obj,methodID, args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallBooleanMethodA(env, obj,methodID, args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jbyte\r
-CallByteMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallByteMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jbyte\r
-CallByteMethodA(obj,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallByteMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jchar\r
-CallCharMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallCharMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jchar\r
-CallCharMethodA(obj,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallCharMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jshort\r
-CallShortMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallShortMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jshort\r
-CallShortMethodA(obj,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallShortMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jint\r
-CallIntMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallIntMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jint\r
-CallIntMethodA(obj,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallIntMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jlong\r
-CallLongMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallLongMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jlong\r
-CallLongMethodA(obj,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallLongMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jfloat\r
-CallFloatMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallFloatMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jfloat\r
-CallFloatMethodA(obj,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallFloatMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jdouble\r
-CallDoubleMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallDoubleMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jdouble\r
-CallDoubleMethodA(obj,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallDoubleMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-void\r
-CallVoidMethod(obj,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           (*env)->CallVoidMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-CallVoidMethodA(obj,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           (*env)->CallVoidMethodA(env, obj,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-\r
-jobject\r
-CallNonvirtualObjectMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallNonvirtualObjectMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-CallNonvirtualObjectMethodA(obj,clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallNonvirtualObjectMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-CallNonvirtualBooleanMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallNonvirtualBooleanMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-CallNonvirtualBooleanMethodA(obj,clazz,methodID, args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallNonvirtualBooleanMethodA(env, obj,clazz,methodID, args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jbyte\r
-CallNonvirtualByteMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallNonvirtualByteMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jbyte\r
-CallNonvirtualByteMethodA(obj,clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallNonvirtualByteMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jchar\r
-CallNonvirtualCharMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallNonvirtualCharMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jchar\r
-CallNonvirtualCharMethodA(obj,clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallNonvirtualCharMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jshort\r
-CallNonvirtualShortMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallNonvirtualShortMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jshort\r
-CallNonvirtualShortMethodA(obj,clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallNonvirtualShortMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jint\r
-CallNonvirtualIntMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallNonvirtualIntMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jint\r
-CallNonvirtualIntMethodA(obj,clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallNonvirtualIntMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jlong\r
-CallNonvirtualLongMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallNonvirtualLongMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jlong\r
-CallNonvirtualLongMethodA(obj,clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallNonvirtualLongMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jfloat\r
-CallNonvirtualFloatMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallNonvirtualFloatMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jfloat\r
-CallNonvirtualFloatMethodA(obj,clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallNonvirtualFloatMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jdouble\r
-CallNonvirtualDoubleMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallNonvirtualDoubleMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jdouble\r
-CallNonvirtualDoubleMethodA(obj,clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallNonvirtualDoubleMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-void\r
-CallNonvirtualVoidMethod(obj,clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           (*env)->CallNonvirtualVoidMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-CallNonvirtualVoidMethodA(obj,clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           (*env)->CallNonvirtualVoidMethodA(env, obj,clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-\r
-jfieldID\r
-GetFieldID(clazz,name,sig)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       const char *            name\r
-       const char *            sig\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetFieldID(env, clazz,name,sig);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-GetObjectField(obj,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetObjectField(env, obj,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-GetBooleanField(obj,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetBooleanField(env, obj,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jbyte\r
-GetByteField(obj,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetByteField(env, obj,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jchar\r
-GetCharField(obj,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetCharField(env, obj,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jshort\r
-GetShortField(obj,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetShortField(env, obj,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jint\r
-GetIntField(obj,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetIntField(env, obj,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jlong\r
-GetLongField(obj,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetLongField(env, obj,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jfloat\r
-GetFloatField(obj,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetFloatField(env, obj,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jdouble\r
-GetDoubleField(obj,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetDoubleField(env, obj,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-void\r
-SetObjectField(obj,fieldID,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jobject                 val\r
-    CODE:\r
-       {\r
-           (*env)->SetObjectField(env, obj,fieldID,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetBooleanField(obj,fieldID,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jboolean                val\r
-    CODE:\r
-       {\r
-           (*env)->SetBooleanField(env, obj,fieldID,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetByteField(obj,fieldID,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jbyte                   val\r
-    CODE:\r
-       {\r
-           (*env)->SetByteField(env, obj,fieldID,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetCharField(obj,fieldID,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jchar                   val\r
-    CODE:\r
-       {\r
-           (*env)->SetCharField(env, obj,fieldID,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetShortField(obj,fieldID,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jshort                  val\r
-    CODE:\r
-       {\r
-           (*env)->SetShortField(env, obj,fieldID,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetIntField(obj,fieldID,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jint                    val\r
-    CODE:\r
-       {\r
-           (*env)->SetIntField(env, obj,fieldID,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetLongField(obj,fieldID,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jlong                   val\r
-    CODE:\r
-       {\r
-           (*env)->SetLongField(env, obj,fieldID,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetFloatField(obj,fieldID,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jfloat                  val\r
-    CODE:\r
-       {\r
-           (*env)->SetFloatField(env, obj,fieldID,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetDoubleField(obj,fieldID,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jdouble                 val\r
-    CODE:\r
-       {\r
-           (*env)->SetDoubleField(env, obj,fieldID,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-jmethodID\r
-GetStaticMethodID(clazz,name,sig)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       const char *            name\r
-       const char *            sig\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticMethodID(env, clazz,name,sig);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-CallStaticObjectMethod(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallStaticObjectMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-CallStaticObjectMethodA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallStaticObjectMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-CallStaticBooleanMethod(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallStaticBooleanMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-CallStaticBooleanMethodA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallStaticBooleanMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jbyte\r
-CallStaticByteMethod(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallStaticByteMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jbyte\r
-CallStaticByteMethodA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallStaticByteMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jchar\r
-CallStaticCharMethod(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallStaticCharMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jchar\r
-CallStaticCharMethodA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallStaticCharMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jshort\r
-CallStaticShortMethod(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallStaticShortMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jshort\r
-CallStaticShortMethodA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallStaticShortMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jint\r
-CallStaticIntMethod(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallStaticIntMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jint\r
-CallStaticIntMethodA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallStaticIntMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jlong\r
-CallStaticLongMethod(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallStaticLongMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jlong\r
-CallStaticLongMethodA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallStaticLongMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jfloat\r
-CallStaticFloatMethod(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallStaticFloatMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jfloat\r
-CallStaticFloatMethodA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallStaticFloatMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jdouble\r
-CallStaticDoubleMethod(clazz,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           RETVAL = (*env)->CallStaticDoubleMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jdouble\r
-CallStaticDoubleMethodA(clazz,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->CallStaticDoubleMethodA(env, clazz,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-void\r
-CallStaticVoidMethod(cls,methodID,...)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  cls\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       int                     argoff = $min_args;\r
-    CODE:\r
-       {\r
-           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);\r
-           (*env)->CallStaticVoidMethodA(env, cls,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-CallStaticVoidMethodA(cls,methodID,args)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  cls\r
-       jmethodID               methodID\r
-       char *                  sig = 0;\r
-       jvalue *                args\r
-    CODE:\r
-       {\r
-           (*env)->CallStaticVoidMethodA(env, cls,methodID,args);\r
-           RESTOREENV;\r
-       }\r
-\r
-jfieldID\r
-GetStaticFieldID(clazz,name,sig)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       const char *            name\r
-       const char *            sig\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticFieldID(env, clazz,name,sig);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-GetStaticObjectField(clazz,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticObjectField(env, clazz,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean\r
-GetStaticBooleanField(clazz,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticBooleanField(env, clazz,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jbyte\r
-GetStaticByteField(clazz,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticByteField(env, clazz,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jchar\r
-GetStaticCharField(clazz,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticCharField(env, clazz,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jshort\r
-GetStaticShortField(clazz,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticShortField(env, clazz,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jint\r
-GetStaticIntField(clazz,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticIntField(env, clazz,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jlong\r
-GetStaticLongField(clazz,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticLongField(env, clazz,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jfloat\r
-GetStaticFloatField(clazz,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticFloatField(env, clazz,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jdouble\r
-GetStaticDoubleField(clazz,fieldID)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStaticDoubleField(env, clazz,fieldID);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-void\r
-SetStaticObjectField(clazz,fieldID,value)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jobject                 value\r
-    CODE:\r
-       {\r
-         (*env)->SetStaticObjectField(env, clazz,fieldID,value);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetStaticBooleanField(clazz,fieldID,value)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jboolean                value\r
-    CODE:\r
-       {\r
-         (*env)->SetStaticBooleanField(env, clazz,fieldID,value);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetStaticByteField(clazz,fieldID,value)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jbyte                   value\r
-    CODE:\r
-       {\r
-         (*env)->SetStaticByteField(env, clazz,fieldID,value);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetStaticCharField(clazz,fieldID,value)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jchar                   value\r
-    CODE:\r
-       {\r
-         (*env)->SetStaticCharField(env, clazz,fieldID,value);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetStaticShortField(clazz,fieldID,value)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jshort                  value\r
-    CODE:\r
-       {\r
-         (*env)->SetStaticShortField(env, clazz,fieldID,value);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetStaticIntField(clazz,fieldID,value)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jint                    value\r
-    CODE:\r
-       {\r
-         (*env)->SetStaticIntField(env, clazz,fieldID,value);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetStaticLongField(clazz,fieldID,value)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jlong                   value\r
-    CODE:\r
-       {\r
-         (*env)->SetStaticLongField(env, clazz,fieldID,value);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetStaticFloatField(clazz,fieldID,value)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jfloat                  value\r
-    CODE:\r
-       {\r
-         (*env)->SetStaticFloatField(env, clazz,fieldID,value);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetStaticDoubleField(clazz,fieldID,value)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       jfieldID                fieldID\r
-       char *                  sig = 0;\r
-       jdouble                 value\r
-    CODE:\r
-       {\r
-         (*env)->SetStaticDoubleField(env, clazz,fieldID,value);\r
-           RESTOREENV;\r
-       }\r
-\r
-jstring\r
-NewString(unicode)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jsize                   unicode_len_ = NO_INIT;\r
-       const jchar *           unicode\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewString(env, unicode, unicode_len_);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jsize\r
-GetStringLength(str)\r
-       JNIEnv *                env = FETCHENV;\r
-       jstring                 str\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStringLength(env, str);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-const jchar *\r
-GetStringChars(str)\r
-       JNIEnv *                env = FETCHENV;\r
-       jstring                 str\r
-       jboolean                isCopy = NO_INIT;\r
-       jsize                   RETVAL_len_ = NO_INIT;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStringChars(env, str,&isCopy);\r
-           RETVAL_len_ = (*env)->GetStringLength(env, str);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-    CLEANUP:\r
-           (*env)->ReleaseStringChars(env, str,RETVAL);\r
-\r
-jstring\r
-NewStringUTF(utf)\r
-       JNIEnv *                env = FETCHENV;\r
-       const char *            utf\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewStringUTF(env, utf);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jsize\r
-GetStringUTFLength(str)\r
-       JNIEnv *                env = FETCHENV;\r
-       jstring                 str\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStringUTFLength(env, str);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-const char *\r
-GetStringUTFChars(str)\r
-       JNIEnv *                env = FETCHENV;\r
-       jstring                 str\r
-       jboolean                isCopy = NO_INIT;\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetStringUTFChars(env, str,&isCopy);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-    CLEANUP:\r
-       (*env)->ReleaseStringUTFChars(env, str, RETVAL);\r
-\r
-\r
-jsize\r
-GetArrayLength(array)\r
-       JNIEnv *                env = FETCHENV;\r
-       jarray                  array\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetArrayLength(env, array);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobjectArray\r
-NewObjectArray(len,clazz,init)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   len\r
-       jclass                  clazz\r
-       jobject                 init\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewObjectArray(env, len,clazz,init);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jobject\r
-GetObjectArrayElement(array,index)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobjectArray            array\r
-       jsize                   index\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->GetObjectArrayElement(env, array,index);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-void\r
-SetObjectArrayElement(array,index,val)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobjectArray            array\r
-       jsize                   index\r
-       jobject                 val\r
-    CODE:\r
-       {\r
-           (*env)->SetObjectArrayElement(env, array,index,val);\r
-           RESTOREENV;\r
-       }\r
-\r
-jbooleanArray\r
-NewBooleanArray(len)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   len\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewBooleanArray(env, len);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jbyteArray\r
-NewByteArray(len)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   len\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewByteArray(env, len);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jcharArray\r
-NewCharArray(len)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   len\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewCharArray(env, len);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jshortArray\r
-NewShortArray(len)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   len\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewShortArray(env, len);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jintArray\r
-NewIntArray(len)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   len\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewIntArray(env, len);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jlongArray\r
-NewLongArray(len)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   len\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewLongArray(env, len);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jfloatArray\r
-NewFloatArray(len)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   len\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewFloatArray(env, len);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jdoubleArray\r
-NewDoubleArray(len)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   len\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->NewDoubleArray(env, len);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-jboolean *\r
-GetBooleanArrayElements(array)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   RETVAL_len_ = NO_INIT;\r
-       jbooleanArray           array\r
-       jboolean                isCopy = NO_INIT;\r
-    PPCODE:\r
-       {\r
-           RETVAL = (*env)->GetBooleanArrayElements(env, array,&isCopy);\r
-           RETVAL_len_ = (*env)->GetArrayLength(env, array);\r
-           if (GIMME == G_ARRAY) {\r
-               int i;\r
-               jboolean* r = RETVAL;\r
-               EXTEND(sp, RETVAL_len_);\r
-               for (i = RETVAL_len_; i; --i) {\r
-                   PUSHs(sv_2mortal(newSViv(*r++)));\r
-               }\r
-           }\r
-           else {\r
-               if (RETVAL_len_) {\r
-                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,\r
-                       (STRLEN)RETVAL_len_ * sizeof(jboolean))));\r
-               }\r
-               else\r
-                   PUSHs(&PL_sv_no);\r
-           }\r
-           (*env)->ReleaseBooleanArrayElements(env, array,RETVAL,JNI_ABORT);\r
-           RESTOREENV;\r
-       }\r
-\r
-jbyte *\r
-GetByteArrayElements(array)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   RETVAL_len_ = NO_INIT;\r
-       jbyteArray              array\r
-       jboolean                isCopy = NO_INIT;\r
-    PPCODE:\r
-       {\r
-           RETVAL = (*env)->GetByteArrayElements(env, array,&isCopy);\r
-           RETVAL_len_ = (*env)->GetArrayLength(env, array);\r
-           if (GIMME == G_ARRAY) {\r
-               int i;\r
-               jbyte* r = RETVAL;\r
-               EXTEND(sp, RETVAL_len_);\r
-               for (i = RETVAL_len_; i; --i) {\r
-                   PUSHs(sv_2mortal(newSViv(*r++)));\r
-               }\r
-           }\r
-           else {\r
-               if (RETVAL_len_) {\r
-                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,\r
-                       (STRLEN)RETVAL_len_ * sizeof(jbyte))));\r
-               }\r
-               else\r
-                   PUSHs(&PL_sv_no);\r
-           }\r
-           (*env)->ReleaseByteArrayElements(env, array,RETVAL,JNI_ABORT);\r
-           RESTOREENV;\r
-       }\r
-\r
-jchar *\r
-GetCharArrayElements(array)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   RETVAL_len_ = NO_INIT;\r
-       jcharArray              array\r
-       jboolean                isCopy = NO_INIT;\r
-    PPCODE:\r
-       {\r
-           RETVAL = (*env)->GetCharArrayElements(env, array,&isCopy);\r
-           RETVAL_len_ = (*env)->GetArrayLength(env, array);\r
-           if (GIMME == G_ARRAY) {\r
-               int i;\r
-               jchar* r = RETVAL;\r
-               EXTEND(sp, RETVAL_len_);\r
-               for (i = RETVAL_len_; i; --i) {\r
-                   PUSHs(sv_2mortal(newSViv(*r++)));\r
-               }\r
-           }\r
-           else {\r
-               if (RETVAL_len_) {\r
-                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,\r
-                       (STRLEN)RETVAL_len_ * sizeof(jchar))));\r
-               }\r
-               else\r
-                   PUSHs(&PL_sv_no);\r
-           }\r
-           (*env)->ReleaseCharArrayElements(env, array,RETVAL,JNI_ABORT);\r
-           RESTOREENV;\r
-       }\r
-\r
-jshort *\r
-GetShortArrayElements(array)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   RETVAL_len_ = NO_INIT;\r
-       jshortArray             array\r
-       jboolean                isCopy = NO_INIT;\r
-    PPCODE:\r
-       {\r
-           RETVAL = (*env)->GetShortArrayElements(env, array,&isCopy);\r
-           RETVAL_len_ = (*env)->GetArrayLength(env, array);\r
-           if (GIMME == G_ARRAY) {\r
-               int i;\r
-               jshort* r = RETVAL;\r
-               EXTEND(sp, RETVAL_len_);\r
-               for (i = RETVAL_len_; i; --i) {\r
-                   PUSHs(sv_2mortal(newSViv(*r++)));\r
-               }\r
-           }\r
-           else {\r
-               if (RETVAL_len_) {\r
-                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,\r
-                       (STRLEN)RETVAL_len_ * sizeof(jshort))));\r
-               }\r
-               else\r
-                   PUSHs(&PL_sv_no);\r
-           }\r
-           (*env)->ReleaseShortArrayElements(env, array,RETVAL,JNI_ABORT);\r
-           RESTOREENV;\r
-       }\r
-\r
-jint *\r
-GetIntArrayElements(array)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   RETVAL_len_ = NO_INIT;\r
-       jintArray               array\r
-       jboolean                isCopy = NO_INIT;\r
-    PPCODE:\r
-       {\r
-           RETVAL = (*env)->GetIntArrayElements(env, array,&isCopy);\r
-           RETVAL_len_ = (*env)->GetArrayLength(env, array);\r
-           if (GIMME == G_ARRAY) {\r
-               int i;\r
-               jint* r = RETVAL;\r
-               EXTEND(sp, RETVAL_len_);\r
-               for (i = RETVAL_len_; i; --i) {\r
-                   PUSHs(sv_2mortal(newSViv(*r++)));\r
-               }\r
-           }\r
-           else {\r
-               if (RETVAL_len_) {\r
-                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,\r
-                       (STRLEN)RETVAL_len_ * sizeof(jint))));\r
-               }\r
-               else\r
-                   PUSHs(&PL_sv_no);\r
-           }\r
-           (*env)->ReleaseIntArrayElements(env, array,RETVAL,JNI_ABORT);\r
-           RESTOREENV;\r
-       }\r
-\r
-jlong *\r
-GetLongArrayElements(array)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   RETVAL_len_ = NO_INIT;\r
-       jlongArray              array\r
-       jboolean                isCopy = NO_INIT;\r
-    PPCODE:\r
-       {\r
-           RETVAL = (*env)->GetLongArrayElements(env, array,&isCopy);\r
-           RETVAL_len_ = (*env)->GetArrayLength(env, array);\r
-           if (GIMME == G_ARRAY) {\r
-               int i;\r
-               jlong* r = RETVAL;\r
-               EXTEND(sp, RETVAL_len_);\r
-               for (i = RETVAL_len_; i; --i) {\r
-                   PUSHs(sv_2mortal(newSViv(*r++)));\r
-               }\r
-           }\r
-           else {\r
-               if (RETVAL_len_) {\r
-                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,\r
-                       (STRLEN)RETVAL_len_ * sizeof(jlong))));\r
-               }\r
-               else\r
-                   PUSHs(&PL_sv_no);\r
-           }\r
-           (*env)->ReleaseLongArrayElements(env, array,RETVAL,JNI_ABORT);\r
-           RESTOREENV;\r
-       }\r
-\r
-jfloat *\r
-GetFloatArrayElements(array)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   RETVAL_len_ = NO_INIT;\r
-       jfloatArray             array\r
-       jboolean                isCopy = NO_INIT;\r
-    PPCODE:\r
-       {\r
-           RETVAL = (*env)->GetFloatArrayElements(env, array,&isCopy);\r
-           RETVAL_len_ = (*env)->GetArrayLength(env, array);\r
-           if (GIMME == G_ARRAY) {\r
-               int i;\r
-               jfloat* r = RETVAL;\r
-               EXTEND(sp, RETVAL_len_);\r
-               for (i = RETVAL_len_; i; --i) {\r
-                   PUSHs(sv_2mortal(newSVnv(*r++)));\r
-               }\r
-           }\r
-           else {\r
-               if (RETVAL_len_) {\r
-                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,\r
-                       (STRLEN)RETVAL_len_ * sizeof(jfloat))));\r
-               }\r
-               else\r
-                   PUSHs(&PL_sv_no);\r
-           }\r
-           (*env)->ReleaseFloatArrayElements(env, array,RETVAL,JNI_ABORT);\r
-           RESTOREENV;\r
-       }\r
-\r
-jdouble *\r
-GetDoubleArrayElements(array)\r
-       JNIEnv *                env = FETCHENV;\r
-       jsize                   RETVAL_len_ = NO_INIT;\r
-       jdoubleArray            array\r
-       jboolean                isCopy = NO_INIT;\r
-    PPCODE:\r
-       {\r
-           RETVAL = (*env)->GetDoubleArrayElements(env, array,&isCopy);\r
-           RETVAL_len_ = (*env)->GetArrayLength(env, array);\r
-           if (GIMME == G_ARRAY) {\r
-               int i;\r
-               jdouble* r = RETVAL;\r
-               EXTEND(sp, RETVAL_len_);\r
-               for (i = RETVAL_len_; i; --i) {\r
-                   PUSHs(sv_2mortal(newSVnv(*r++)));\r
-               }\r
-           }\r
-           else {\r
-               if (RETVAL_len_) {\r
-                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,\r
-                       (STRLEN)RETVAL_len_ * sizeof(jdouble))));\r
-               }\r
-               else\r
-                   PUSHs(&PL_sv_no);\r
-           }\r
-           (*env)->ReleaseDoubleArrayElements(env, array,RETVAL,JNI_ABORT);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-GetBooleanArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       jbooleanArray           array\r
-       jsize                   start\r
-       jsize                   len\r
-       STRLEN                  tmplen = len * sizeof(jboolean) + 1;\r
-       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);\r
-       jboolean *              buf = (jboolean*)sv_grow(ST(3),len * sizeof(jboolean)+1);\r
-    CODE:\r
-       {\r
-           (*env)->GetBooleanArrayRegion(env, array,start,len,buf);\r
-           SvCUR_set(ST(3), len * sizeof(jboolean));\r
-           *SvEND(ST(3)) = '\0';\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-GetByteArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       jbyteArray              array\r
-       jsize                   start\r
-       jsize                   len\r
-       STRLEN                  tmplen = len * sizeof(jboolean) + 1;\r
-       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);\r
-       jbyte *                 buf = (jbyte*)sv_grow(ST(3),len * sizeof(jbyte)+1);\r
-    CODE:\r
-       {\r
-           (*env)->GetByteArrayRegion(env, array,start,len,buf);\r
-           SvCUR_set(ST(3), len * sizeof(jbyte));\r
-           *SvEND(ST(3)) = '\0';\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-GetCharArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       jcharArray              array\r
-       jsize                   start\r
-       jsize                   len\r
-       STRLEN                  tmplen = len * sizeof(jboolean) + 1;\r
-       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);\r
-       jchar *                 buf = (jchar*)sv_grow(ST(3),len * sizeof(jchar)+1);\r
-    CODE:\r
-       {\r
-           (*env)->GetCharArrayRegion(env, array,start,len,buf);\r
-           SvCUR_set(ST(3), len * sizeof(jchar));\r
-           *SvEND(ST(3)) = '\0';\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-GetShortArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       jshortArray             array\r
-       jsize                   start\r
-       jsize                   len\r
-       STRLEN                  tmplen = len * sizeof(jboolean) + 1;\r
-       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);\r
-       jshort *                buf = (jshort*)sv_grow(ST(3),len * sizeof(jshort)+1);\r
-    CODE:\r
-       {\r
-           (*env)->GetShortArrayRegion(env, array,start,len,buf);\r
-           SvCUR_set(ST(3), len * sizeof(jshort));\r
-           *SvEND(ST(3)) = '\0';\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-GetIntArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       jintArray               array\r
-       jsize                   start\r
-       jsize                   len\r
-       STRLEN                  tmplen = len * sizeof(jboolean) + 1;\r
-       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);\r
-       jint *                  buf = (jint*)sv_grow(ST(3),len * sizeof(jint)+1);\r
-    CODE:\r
-       {\r
-           (*env)->GetIntArrayRegion(env, array,start,len,buf);\r
-           SvCUR_set(ST(3), len * sizeof(jint));\r
-           *SvEND(ST(3)) = '\0';\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-GetLongArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       jlongArray              array\r
-       jsize                   start\r
-       jsize                   len\r
-       STRLEN                  tmplen = len * sizeof(jboolean) + 1;\r
-       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);\r
-       jlong *                 buf = (jlong*)sv_grow(ST(3),len * sizeof(jlong)+1);\r
-    CODE:\r
-       {\r
-           (*env)->GetLongArrayRegion(env, array,start,len,buf);\r
-           SvCUR_set(ST(3), len * sizeof(jlong));\r
-           *SvEND(ST(3)) = '\0';\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-GetFloatArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       jfloatArray             array\r
-       jsize                   start\r
-       jsize                   len\r
-       STRLEN                  tmplen = len * sizeof(jboolean) + 1;\r
-       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);\r
-       jfloat *                buf = (jfloat*)sv_grow(ST(3),len * sizeof(jfloat)+1);\r
-    CODE:\r
-       {\r
-           (*env)->GetFloatArrayRegion(env, array,start,len,buf);\r
-           SvCUR_set(ST(3), len * sizeof(jfloat));\r
-           *SvEND(ST(3)) = '\0';\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-GetDoubleArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       jdoubleArray            array\r
-       jsize                   start\r
-       jsize                   len\r
-       STRLEN                  tmplen = len * sizeof(jboolean) + 1;\r
-       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);\r
-       jdouble *               buf = (jdouble*)sv_grow(ST(3),len * sizeof(jdouble)+1);\r
-    CODE:\r
-       {\r
-           (*env)->GetDoubleArrayRegion(env, array,start,len,buf);\r
-           SvCUR_set(ST(3), len * sizeof(jdouble));\r
-           *SvEND(ST(3)) = '\0';\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetBooleanArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jbooleanArray           array\r
-       jsize                   start\r
-       jsize                   len\r
-       jsize                   buf_len_ = NO_INIT;\r
-       jboolean *              buf\r
-    CODE:\r
-       {\r
-           if (buf_len_ < len)\r
-               croak("string is too short");\r
-           else if (buf_len_ > len && PL_dowarn)\r
-               warn("string is too long");\r
-           (*env)->SetBooleanArrayRegion(env, array,start,len,buf);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetByteArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jbyteArray              array\r
-       jsize                   start\r
-       jsize                   len\r
-       jsize                   buf_len_ = NO_INIT;\r
-       jbyte *                 buf\r
-    CODE:\r
-       {\r
-           if (buf_len_ < len)\r
-               croak("string is too short");\r
-           else if (buf_len_ > len && PL_dowarn)\r
-               warn("string is too long");\r
-           (*env)->SetByteArrayRegion(env, array,start,len,buf);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetCharArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jcharArray              array\r
-       jsize                   start\r
-       jsize                   len\r
-       jsize                   buf_len_ = NO_INIT;\r
-       jchar *                 buf\r
-    CODE:\r
-       {\r
-           if (buf_len_ < len)\r
-               croak("string is too short");\r
-           else if (buf_len_ > len && PL_dowarn)\r
-               warn("string is too long");\r
-           (*env)->SetCharArrayRegion(env, array,start,len,buf);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetShortArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jshortArray             array\r
-       jsize                   start\r
-       jsize                   len\r
-       jsize                   buf_len_ = NO_INIT;\r
-       jshort *                buf\r
-    CODE:\r
-       {\r
-           if (buf_len_ < len)\r
-               croak("string is too short");\r
-           else if (buf_len_ > len && PL_dowarn)\r
-               warn("string is too long");\r
-           (*env)->SetShortArrayRegion(env, array,start,len,buf);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetIntArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jintArray               array\r
-       jsize                   start\r
-       jsize                   len\r
-       jsize                   buf_len_ = NO_INIT;\r
-       jint *                  buf\r
-    CODE:\r
-       {\r
-           if (buf_len_ < len)\r
-               croak("string is too short");\r
-           else if (buf_len_ > len && PL_dowarn)\r
-               warn("string is too long");\r
-           (*env)->SetIntArrayRegion(env, array,start,len,buf);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetLongArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jlongArray              array\r
-       jsize                   start\r
-       jsize                   len\r
-       jsize                   buf_len_ = NO_INIT;\r
-       jlong *                 buf\r
-    CODE:\r
-       {\r
-           if (buf_len_ < len)\r
-               croak("string is too short");\r
-           else if (buf_len_ > len && PL_dowarn)\r
-               warn("string is too long");\r
-           (*env)->SetLongArrayRegion(env, array,start,len,buf);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetFloatArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jfloatArray             array\r
-       jsize                   start\r
-       jsize                   len\r
-       jsize                   buf_len_ = NO_INIT;\r
-       jfloat *                buf\r
-    CODE:\r
-       {\r
-           if (buf_len_ < len)\r
-               croak("string is too short");\r
-           else if (buf_len_ > len && PL_dowarn)\r
-               warn("string is too long");\r
-           (*env)->SetFloatArrayRegion(env, array,start,len,buf);\r
-           RESTOREENV;\r
-       }\r
-\r
-void\r
-SetDoubleArrayRegion(array,start,len,buf)\r
-       JNIEnv *                env = FETCHENV;\r
-       STRLEN                  tmplen = NO_INIT;\r
-       jdoubleArray            array\r
-       jsize                   start\r
-       jsize                   len\r
-       jsize                   buf_len_ = NO_INIT;\r
-       jdouble *               buf\r
-    CODE:\r
-       {\r
-           if (buf_len_ < len)\r
-               croak("string is too short");\r
-           else if (buf_len_ > len && PL_dowarn)\r
-               warn("string is too long");\r
-           (*env)->SetDoubleArrayRegion(env, array,start,len,buf);\r
-           RESTOREENV;\r
-       }\r
-\r
-SysRet\r
-RegisterNatives(clazz,methods,nMethods)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-       JNINativeMethod *       methods\r
-       jint                    nMethods\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->RegisterNatives(env, clazz,methods,nMethods);\r
-       }\r
-\r
-SysRet\r
-UnregisterNatives(clazz)\r
-       JNIEnv *                env = FETCHENV;\r
-       jclass                  clazz\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->UnregisterNatives(env, clazz);\r
-       }\r
-    OUTPUT:\r
-       RETVAL  \r
-   \r
-SysRet\r
-MonitorEnter(obj)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->MonitorEnter(env, obj);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-SysRet\r
-MonitorExit(obj)\r
-       JNIEnv *                env = FETCHENV;\r
-       jobject                 obj\r
-    CODE:\r
-       {\r
-           RETVAL = (*env)->MonitorExit(env, obj);\r
-           RESTOREENV;\r
-       }\r
-    OUTPUT:\r
-       RETVAL\r
-\r
-JavaVM *\r
-GetJavaVM(...)\r
-       JNIEnv *                env = FETCHENV;\r
-    CODE:\r
-       {\r
-#ifdef JPL_DEBUG\r
-           jpldebug = 1;\r
-#else\r
-           jpldebug = 0;\r
-#endif\r
-           if (env) {  /* We're embedded. */\r
-               if ((*env)->GetJavaVM(env, &RETVAL) < 0)\r
-                   RETVAL = 0;\r
-           }\r
-           else {      /* We're embedding. */\r
-#ifdef KAFFE\r
-                JavaVMInitArgs vm_args;\r
-#else\r
-                JDK1_1InitArgs vm_args;\r
-#endif\r
-               char *lib;\r
-               if (jpldebug) {\r
-                   fprintf(stderr, "We're embedding Java in Perl.\n");\r
-               }\r
-\r
-               if (items--) {\r
-                   ++mark;\r
-                   lib = SvPV(*mark, PL_na);\r
-               }\r
-               else\r
-                   lib = 0;\r
-               if (jpldebug) {\r
-                   fprintf(stderr, "lib is %s.\n", lib);\r
-               }\r
-#ifdef WIN32\r
-        if (LoadLibrary("jvm.dll")) {\r
-            if (!LoadLibrary("javai.dll")) {\r
-                warn("Can't load javai.dll");\r
-            }\r
-        } else {\r
-            if (lib && !LoadLibrary(lib))\r
-                croak("Can't load javai.dll"); \r
-        }\r
-#else\r
-               if (jpldebug) {\r
-                   fprintf(stderr, "Opening Java shared library.\n");\r
-                }\r
-#ifdef KAFFE\r
-               if (!dlopen("libkaffevm.so", RTLD_LAZY|RTLD_GLOBAL)) {\r
-#else\r
-               if (!dlopen("libjava.so", RTLD_LAZY|RTLD_GLOBAL)) {\r
-#endif\r
-                   if (lib && !dlopen(lib, RTLD_LAZY|RTLD_GLOBAL))\r
-                       croak("Can't load Java shared library.");\r
-               }\r
-#endif\r
-               /* Kaffe seems to get very upset if vm_args.version isn't set */\r
-#ifdef KAFFE\r
-               vm_args.version = JNI_VERSION_1_1;\r
-#endif\r
-               JNI_GetDefaultJavaVMInitArgs(&vm_args);\r
-               vm_args.exit = &call_my_exit;\r
-               if (jpldebug) {\r
-            fprintf(stderr, "items = %d\n", items);\r
-            fprintf(stderr, "mark = %s\n", SvPV(*mark, PL_na));\r
-        }\r
-               while (items > 1) {\r
-                 char *s;\r
-                   ++mark;\r
-                   s = SvPV(*mark,PL_na);\r
-                   ++mark;\r
-                   if (jpldebug) {\r
-                fprintf(stderr, "*s = %s\n", s);\r
-                fprintf(stderr, "val = %s\n", SvPV(*mark, PL_na));\r
-            }\r
-                   items -= 2;\r
-                   if (strEQ(s, "checkSource"))\r
-                       vm_args.checkSource = (jint)SvIV(*mark);\r
-                   else if (strEQ(s, "nativeStackSize"))\r
-                       vm_args.nativeStackSize = (jint)SvIV(*mark);\r
-                   else if (strEQ(s, "javaStackSize"))\r
-                       vm_args.javaStackSize = (jint)SvIV(*mark);\r
-                   else if (strEQ(s, "minHeapSize"))\r
-                       vm_args.minHeapSize = (jint)SvIV(*mark);\r
-                   else if (strEQ(s, "maxHeapSize"))\r
-                       vm_args.maxHeapSize = (jint)SvIV(*mark);\r
-                   else if (strEQ(s, "verifyMode"))\r
-                       vm_args.verifyMode = (jint)SvIV(*mark);\r
-                   else if (strEQ(s, "classpath"))\r
-                       vm_args.classpath = savepv(SvPV(*mark,PL_na));\r
-                   else if (strEQ(s, "enableClassGC"))\r
-                       vm_args.enableClassGC = (jint)SvIV(*mark);\r
-                   else if (strEQ(s, "enableVerboseGC"))\r
-                       vm_args.enableVerboseGC = (jint)SvIV(*mark);\r
-                   else if (strEQ(s, "disableAsyncGC"))\r
-                       vm_args.disableAsyncGC = (jint)SvIV(*mark);\r
-#ifdef KAFFE\r
-                   else if (strEQ(s, "libraryhome"))\r
-                       vm_args.libraryhome = savepv(SvPV(*mark,PL_na));\r
-                   else if (strEQ(s, "classhome"))\r
-                       vm_args.classhome = savepv(SvPV(*mark,PL_na));\r
-                   else if (strEQ(s, "enableVerboseJIT"))\r
-                       vm_args.enableVerboseJIT = (jint)SvIV(*mark); \r
-                   else if (strEQ(s, "enableVerboseClassloading"))\r
-                       vm_args.enableVerboseClassloading = (jint)SvIV(*mark); \r
-                   else if (strEQ(s, "enableVerboseCall"))\r
-                       vm_args.enableVerboseCall = (jint)SvIV(*mark); \r
-                   else if (strEQ(s, "allocHeapSize"))\r
-                       vm_args.allocHeapSize = (jint)SvIV(*mark); \r
-#else\r
-                   else if (strEQ(s, "verbose"))\r
-                       vm_args.verbose = (jint)SvIV(*mark); \r
-                   else if (strEQ(s, "debugging"))\r
-                       vm_args.debugging = (jboolean)SvIV(*mark);\r
-                   else if (strEQ(s, "debugPort"))\r
-                       vm_args.debugPort = (jint)SvIV(*mark); \r
-#endif\r
-                   else\r
-                       croak("unrecognized option: %s", s);\r
-               }\r
-\r
-               if (jpldebug) {\r
-                   fprintf(stderr, "Creating Java VM...\n");\r
-                   fprintf(stderr, "Working CLASSPATH: %s\n", \r
-                       vm_args.classpath);\r
-               }\r
-               if (JNI_CreateJavaVM(&RETVAL, &jplcurenv, &vm_args) < 0) {\r
-                  croak("Unable to create instance of JVM");\r
-                }\r
-               if (jpldebug) {\r
-                   fprintf(stderr, "Created Java VM.\n");\r
-               }\r
-\r
-           }\r
-       }\r
-\r
+/*
+ * Copyright 1997, O'Reilly & Associate, Inc.
+ *
+ * This package may be copied under the same terms as Perl itself.
+ */
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#include <stdio.h>
+#include <jni.h>
+
+#ifndef PERL_VERSION
+#  include <patchlevel.h>
+#  define PERL_REVISION                5
+#  define PERL_VERSION         PATCHLEVEL
+#  define PERL_SUBVERSION      SUBVERSION
+#endif
+
+#if PERL_REVISION == 5 && (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION <= 75))
+#  define PL_na                na
+#  define PL_sv_no     sv_no
+#  define PL_sv_undef  sv_undef
+#  define PL_dowarn    dowarn
+#endif
+
+#ifndef newSVpvn
+#  define newSVpvn(a,b)        newSVpv(a,b)
+#endif
+
+#ifndef pTHX
+#  define pTHX         void
+#  define pTHX_
+#  define aTHX
+#  define aTHX_
+#  define dTHX         extern int JNI___notused
+#endif
+
+#ifndef WIN32
+#  include <dlfcn.h>
+#endif
+
+#ifdef EMBEDDEDPERL
+extern JNIEnv* jplcurenv;
+extern int jpldebug;
+#else
+JNIEnv* jplcurenv;
+int jpldebug = 1;
+#endif
+
+#define SysRet jint
+
+#ifdef WIN32
+static void JNICALL call_my_exit(jint status)
+{
+    my_exit(status);
+}
+#else
+static void call_my_exit(jint status)
+{
+    my_exit(status);
+}
+#endif
+
+jvalue*
+makeargs(char *sig, SV** svp, int items)
+{
+    jvalue* jv = (jvalue*)safemalloc(sizeof(jvalue) * items);
+    int ix = 0;
+    char *s = sig;
+    JNIEnv* env = jplcurenv;
+    char *start;
+    STRLEN n_a;
+
+    if (jpldebug)
+       fprintf(stderr, "sig = %s, items = %d\n", sig, items);
+    if (*s++ != '(')
+       goto cleanup;
+
+    while (items--) {
+       SV *sv = *svp++;
+       start = s;
+       switch (*s++) {
+       case 'Z':
+           jv[ix++].z = (jboolean)(SvIV(sv) != 0);
+           break;
+       case 'B':
+           jv[ix++].b = (jbyte)SvIV(sv);
+           break;
+       case 'C':
+           jv[ix++].c = (jchar)SvIV(sv);
+           break;
+       case 'S':
+           jv[ix++].s = (jshort)SvIV(sv);
+           break;
+       case 'I':
+           jv[ix++].i = (jint)SvIV(sv);
+           break;
+       case 'J':
+           jv[ix++].j = (jlong)SvNV(sv);
+           break;
+       case 'F':
+           jv[ix++].f = (jfloat)SvNV(sv);
+           break;
+       case 'D':
+           jv[ix++].d = (jdouble)SvNV(sv);
+           break;
+       case '[':
+           switch (*s++) {
+           case 'Z':
+               if (SvROK(sv)) {
+                   SV* rv = (SV*)SvRV(sv);
+                   if (SvOBJECT(rv))
+                       jv[ix++].l = (jobject)(void*)SvIV(rv);
+                   else if (SvTYPE(rv) == SVt_PVAV) {
+                       jsize len = av_len((AV*)rv) + 1;
+                       jboolean* buf = (jboolean*)malloc(len * sizeof(jboolean));
+                       int i;
+                       SV** esv;
+
+                       jbooleanArray ja = (*env)->NewBooleanArray(env, len);
+                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)
+                           buf[i] = (jboolean)SvIV(*esv);
+                       (*env)->SetBooleanArrayRegion(env, ja, 0, len, buf);
+                       free((void*)buf);
+                       jv[ix++].l = (jobject)ja;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+               }
+               else if (SvPOK(sv)) {
+                   jsize len = sv_len(sv) / sizeof(jboolean);
+
+                   jbooleanArray ja = (*env)->NewBooleanArray(env, len);
+                   (*env)->SetBooleanArrayRegion(env, ja, 0, len, (jboolean*)SvPV(sv,n_a));
+                   jv[ix++].l = (jobject)ja;
+               }
+               else
+                   jv[ix++].l = (jobject)(void*)0;
+               break;
+           case 'B':
+               if (SvROK(sv)) {
+                   SV* rv = (SV*)SvRV(sv);
+                   if (SvOBJECT(rv))
+                       jv[ix++].l = (jobject)(void*)SvIV(rv);
+                   else if (SvTYPE(rv) == SVt_PVAV) {
+                       jsize len = av_len((AV*)rv) + 1;
+                       jbyte* buf = (jbyte*)malloc(len * sizeof(jbyte));
+                       int i;
+                       SV** esv;
+
+                       jbyteArray ja = (*env)->NewByteArray(env, len);
+                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)
+                           buf[i] = (jbyte)SvIV(*esv);
+                       (*env)->SetByteArrayRegion(env, ja, 0, len, buf);
+                       free((void*)buf);
+                       jv[ix++].l = (jobject)ja;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+               }
+               else if (SvPOK(sv)) {
+                   jsize len = sv_len(sv) / sizeof(jbyte);
+
+                   jbyteArray ja = (*env)->NewByteArray(env, len);
+                   (*env)->SetByteArrayRegion(env, ja, 0, len, (jbyte*)SvPV(sv,n_a));
+                   jv[ix++].l = (jobject)ja;
+               }
+               else
+                   jv[ix++].l = (jobject)(void*)0;
+               break;
+           case 'C':
+               if (SvROK(sv)) {
+                   SV* rv = (SV*)SvRV(sv);
+                   if (SvOBJECT(rv))
+                       jv[ix++].l = (jobject)(void*)SvIV(rv);
+                   else if (SvTYPE(rv) == SVt_PVAV) {
+                       jsize len = av_len((AV*)rv) + 1;
+                       jchar* buf = (jchar*)malloc(len * sizeof(jchar));
+                       int i;
+                       SV** esv;
+
+                       jcharArray ja = (*env)->NewCharArray(env, len);
+                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)
+                           buf[i] = (jchar)SvIV(*esv);
+                       (*env)->SetCharArrayRegion(env, ja, 0, len, buf);
+                       free((void*)buf);
+                       jv[ix++].l = (jobject)ja;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+               }
+               else if (SvPOK(sv)) {
+                   jsize len = sv_len(sv) / sizeof(jchar);
+
+                   jcharArray ja = (*env)->NewCharArray(env, len);
+                   (*env)->SetCharArrayRegion(env, ja, 0, len, (jchar*)SvPV(sv,n_a));
+                   jv[ix++].l = (jobject)ja;
+               }
+               else
+                   jv[ix++].l = (jobject)(void*)0;
+               break;
+           case 'S':
+               if (SvROK(sv)) {
+                   SV* rv = (SV*)SvRV(sv);
+                   if (SvOBJECT(rv))
+                       jv[ix++].l = (jobject)(void*)SvIV(rv);
+                   else if (SvTYPE(rv) == SVt_PVAV) {
+                       jsize len = av_len((AV*)rv) + 1;
+                       jshort* buf = (jshort*)malloc(len * sizeof(jshort));
+                       int i;
+                       SV** esv;
+
+                       jshortArray ja = (*env)->NewShortArray(env, len);
+                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)
+                           buf[i] = (jshort)SvIV(*esv);
+                       (*env)->SetShortArrayRegion(env, ja, 0, len, buf);
+                       free((void*)buf);
+                       jv[ix++].l = (jobject)ja;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+               }
+               else if (SvPOK(sv)) {
+                   jsize len = sv_len(sv) / sizeof(jshort);
+
+                   jshortArray ja = (*env)->NewShortArray(env, len);
+                   (*env)->SetShortArrayRegion(env, ja, 0, len, (jshort*)SvPV(sv,n_a));
+                   jv[ix++].l = (jobject)ja;
+               }
+               else
+                   jv[ix++].l = (jobject)(void*)0;
+               break;
+           case 'I':
+               if (SvROK(sv)) {
+                   SV* rv = (SV*)SvRV(sv);
+                   if (SvOBJECT(rv))
+                       jv[ix++].l = (jobject)(void*)SvIV(rv);
+                   else if (SvTYPE(rv) == SVt_PVAV) {
+                       jsize len = av_len((AV*)rv) + 1;
+                       jint* buf = (jint*)malloc(len * sizeof(jint));
+                       int i;
+                       SV** esv;
+
+                       jintArray ja = (*env)->NewIntArray(env, len);
+                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)
+                           buf[i] = (jint)SvIV(*esv);
+                       (*env)->SetIntArrayRegion(env, ja, 0, len, buf);
+                       free((void*)buf);
+                       jv[ix++].l = (jobject)ja;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+               }
+               else if (SvPOK(sv)) {
+                   jsize len = sv_len(sv) / sizeof(jint);
+
+                   jintArray ja = (*env)->NewIntArray(env, len);
+                   (*env)->SetIntArrayRegion(env, ja, 0, len, (jint*)SvPV(sv,n_a));
+                   jv[ix++].l = (jobject)ja;
+               }
+               else
+                   jv[ix++].l = (jobject)(void*)0;
+               break;
+           case 'J':
+               if (SvROK(sv)) {
+                   SV* rv = (SV*)SvRV(sv);
+                   if (SvOBJECT(rv))
+                       jv[ix++].l = (jobject)(void*)SvIV(rv);
+                   else if (SvTYPE(rv) == SVt_PVAV) {
+                       jsize len = av_len((AV*)rv) + 1;
+                       jlong* buf = (jlong*)malloc(len * sizeof(jlong));
+                       int i;
+                       SV** esv;
+
+                       jlongArray ja = (*env)->NewLongArray(env, len);
+                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)
+                           buf[i] = (jlong)SvNV(*esv);
+                       (*env)->SetLongArrayRegion(env, ja, 0, len, buf);
+                       free((void*)buf);
+                       jv[ix++].l = (jobject)ja;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+               }
+               else if (SvPOK(sv)) {
+                   jsize len = sv_len(sv) / sizeof(jlong);
+
+                   jlongArray ja = (*env)->NewLongArray(env, len);
+                   (*env)->SetLongArrayRegion(env, ja, 0, len, (jlong*)SvPV(sv,n_a));
+                   jv[ix++].l = (jobject)ja;
+               }
+               else
+                   jv[ix++].l = (jobject)(void*)0;
+               break;
+           case 'F':
+               if (SvROK(sv)) {
+                   SV* rv = (SV*)SvRV(sv);
+                   if (SvOBJECT(rv))
+                       jv[ix++].l = (jobject)(void*)SvIV(rv);
+                   else if (SvTYPE(rv) == SVt_PVAV) {
+                       jsize len = av_len((AV*)rv) + 1;
+                       jfloat* buf = (jfloat*)malloc(len * sizeof(jfloat));
+                       int i;
+                       SV** esv;
+
+                       jfloatArray ja = (*env)->NewFloatArray(env, len);
+                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)
+                           buf[i] = (jfloat)SvNV(*esv);
+                       (*env)->SetFloatArrayRegion(env, ja, 0, len, buf);
+                       free((void*)buf);
+                       jv[ix++].l = (jobject)ja;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+               }
+               else if (SvPOK(sv)) {
+                   jsize len = sv_len(sv) / sizeof(jfloat);
+
+                   jfloatArray ja = (*env)->NewFloatArray(env, len);
+                   (*env)->SetFloatArrayRegion(env, ja, 0, len, (jfloat*)SvPV(sv,n_a));
+                   jv[ix++].l = (jobject)ja;
+               }
+               else
+                   jv[ix++].l = (jobject)(void*)0;
+               break;
+           case 'D':
+               if (SvROK(sv)) {
+                   SV* rv = (SV*)SvRV(sv);
+                   if (SvOBJECT(rv))
+                       jv[ix++].l = (jobject)(void*)SvIV(rv);
+                   else if (SvTYPE(rv) == SVt_PVAV) {
+                       jsize len = av_len((AV*)rv) + 1;
+                       jdouble* buf = (jdouble*)malloc(len * sizeof(jdouble));
+                       int i;
+                       SV** esv;
+
+                       jdoubleArray ja = (*env)->NewDoubleArray(env, len);
+                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++)
+                           buf[i] = (jdouble)SvNV(*esv);
+                       (*env)->SetDoubleArrayRegion(env, ja, 0, len, buf);
+                       free((void*)buf);
+                       jv[ix++].l = (jobject)ja;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+               }
+               else if (SvPOK(sv)) {
+                   jsize len = sv_len(sv) / sizeof(jdouble);
+
+                   jdoubleArray ja = (*env)->NewDoubleArray(env, len);
+                   (*env)->SetDoubleArrayRegion(env, ja, 0, len, (jdouble*)SvPV(sv,n_a));
+                   jv[ix++].l = (jobject)ja;
+               }
+               else
+                   jv[ix++].l = (jobject)(void*)0;
+               break;
+           case 'L':
+               while (*s != ';') s++;
+               s++;
+               if (strnEQ(start, "[Ljava/lang/String;", 19)) {
+                   if (SvROK(sv)) {
+                       SV* rv = (SV*)SvRV(sv);
+                       if (SvOBJECT(rv))
+                           jv[ix++].l = (jobject)(void*)SvIV(rv);
+                       else if (SvTYPE(rv) == SVt_PVAV) {
+                           jsize len = av_len((AV*)rv) + 1;
+                           int i;
+                           SV** esv;
+                           static jclass jcl = 0;
+                           jobjectArray ja;
+
+                           if (!jcl)
+                               jcl = (*env)->FindClass(env, "java/lang/String");
+                           ja = (*env)->NewObjectArray(env, len, jcl, 0);
+                           for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++) {
+                               jobject str = (jobject)(*env)->NewStringUTF(env, SvPV(*esv,n_a));
+                               (*env)->SetObjectArrayElement(env, ja, i, str);
+                           }
+                           jv[ix++].l = (jobject)ja;
+                       }
+                       else
+                           jv[ix++].l = (jobject)(void*)0;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+                   break;
+               }
+               /* FALL THROUGH */
+           default:
+               if (SvROK(sv)) {
+                   SV* rv = (SV*)SvRV(sv);
+                   if (SvOBJECT(rv))
+                       jv[ix++].l = (jobject)(void*)SvIV(rv);
+                   else if (SvTYPE(rv) == SVt_PVAV) {
+                       jsize len = av_len((AV*)rv) + 1;
+                       int i;
+                       SV** esv;
+                      static jclass jcl = 0;
+                       jobjectArray ja;
+
+                       if (!jcl)
+                           jcl = (*env)->FindClass(env, "java/lang/Object");
+                       ja = (*env)->NewObjectArray(env, len, jcl, 0);
+                       for (esv = AvARRAY((AV*)rv), i = 0; i < len; esv++, i++) {
+                           if (SvROK(*esv) && (rv = SvRV(*esv)) && SvOBJECT(rv)) {
+                               (*env)->SetObjectArrayElement(env, ja, i, (jobject)(void*)SvIV(rv));
+                           }
+                           else {
+                               jobject str = (jobject)(*env)->NewStringUTF(env, SvPV(*esv,n_a));
+                               (*env)->SetObjectArrayElement(env, ja, i, str);
+                           }
+                       }
+                       jv[ix++].l = (jobject)ja;
+                   }
+                   else
+                       jv[ix++].l = (jobject)(void*)0;
+               }
+               else
+                   jv[ix++].l = (jobject)(void*)0;
+               break;
+           }
+           break;
+       case 'L':
+           if (!SvROK(sv) || strnEQ(s, "java/lang/String;", 17)) {
+               s += 17;
+               jv[ix++].l = (jobject)(*env)->NewStringUTF(env, (char*) SvPV(sv,n_a));
+               break;
+           }
+           while (*s != ';') s++;
+           s++;
+           if (SvROK(sv)) {
+               SV* rv = SvRV(sv);
+               jv[ix++].l = (jobject)(void*)SvIV(rv);
+           }
+           break;
+       case ')':
+           croak("too many arguments, signature: %s", sig);
+           goto cleanup;
+       default:
+           croak("panic: malformed signature: %s", s-1);
+           goto cleanup;
+       }
+
+    }
+    if (*s != ')') {
+       croak("not enough arguments, signature: %s", sig);
+       goto cleanup;
+    }
+    return jv;
+
+cleanup:
+    safefree((char*)jv);
+    return 0;
+}
+
+static int
+not_here(char *s)
+{
+    croak("%s not implemented on this architecture", s);
+    return -1;
+}
+
+static double
+constant(char *name, int arg)
+{
+    errno = 0;
+    switch (*name) {
+    case 'A':
+       break;
+    case 'B':
+       break;
+    case 'C':
+       break;
+    case 'D':
+       break;
+    case 'E':
+       break;
+    case 'F':
+       break;
+    case 'G':
+       break;
+    case 'H':
+       break;
+    case 'I':
+       break;
+    case 'J':
+       if (strEQ(name, "JNI_ABORT"))
+#ifdef JNI_ABORT
+           return JNI_ABORT;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "JNI_COMMIT"))
+#ifdef JNI_COMMIT
+           return JNI_COMMIT;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "JNI_ERR"))
+#ifdef JNI_ERR
+           return JNI_ERR;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "JNI_FALSE"))
+#ifdef JNI_FALSE
+           return JNI_FALSE;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "JNI_H"))
+#ifdef JNI_H
+#ifdef WIN32
+           return 1;
+#else
+           return JNI_H;
+#endif
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "JNI_OK"))
+#ifdef JNI_OK
+           return JNI_OK;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "JNI_TRUE"))
+#ifdef JNI_TRUE
+           return JNI_TRUE;
+#else
+           goto not_there;
+#endif
+       break;
+    case 'K':
+       break;
+    case 'L':
+       break;
+    case 'M':
+       break;
+    case 'N':
+       break;
+    case 'O':
+       break;
+    case 'P':
+       break;
+    case 'Q':
+       break;
+    case 'R':
+       break;
+    case 'S':
+       break;
+    case 'T':
+       break;
+    case 'U':
+       break;
+    case 'V':
+       break;
+    case 'W':
+       break;
+    case 'X':
+       break;
+    case 'Y':
+       break;
+    case 'Z':
+       break;
+    }
+    errno = EINVAL;
+    return 0;
+
+not_there:
+    errno = ENOENT;
+    return 0;
+}
+
+#define FETCHENV jplcurenv
+#define RESTOREENV jplcurenv = env
+
+MODULE = JNI           PACKAGE = JNI           
+
+PROTOTYPES: ENABLE
+
+double
+constant(name,arg)
+       char *          name
+       int             arg
+
+jint
+GetVersion()
+       JNIEnv *                env = FETCHENV;
+    CODE:
+       {
+           RETVAL = (*env)->GetVersion(env);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jclass
+DefineClass(name, loader, buf)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jsize                   buf_len_ = NO_INIT;
+       const char *            name
+       jobject                 loader
+       const jbyte *           buf
+    CODE:
+       {
+#ifdef KAFFE
+           RETVAL = (*env)->DefineClass(env,  loader, buf, (jsize)buf_len_);
+#else
+           RETVAL = (*env)->DefineClass(env,  name, loader, buf, (jsize)buf_len_); 
+#endif
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jclass
+FindClass(name)
+       JNIEnv *                env = FETCHENV;
+       const char *            name
+    CODE:
+       {
+           RETVAL = (*env)->FindClass(env,  name);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jclass
+GetSuperclass(sub)
+       JNIEnv *                env = FETCHENV;
+       jclass                  sub
+    CODE:
+       {
+           RETVAL = (*env)->GetSuperclass(env,  sub);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+IsAssignableFrom(sub, sup)
+       JNIEnv *                env = FETCHENV;
+       jclass                  sub
+       jclass                  sup
+    CODE:
+       {
+           RETVAL = (*env)->IsAssignableFrom(env,  sub, sup);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+SysRet
+Throw(obj)
+       JNIEnv *                env = FETCHENV;
+       jthrowable              obj
+    CODE:
+       {
+           RETVAL = (*env)->Throw(env,  obj);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL    
+
+SysRet
+ThrowNew(clazz, msg)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       const char *            msg
+    CODE:
+       {
+           RETVAL = (*env)->ThrowNew(env,  clazz, msg);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jthrowable
+ExceptionOccurred()
+       JNIEnv *                env = FETCHENV;
+    CODE:
+       {
+           RETVAL = (*env)->ExceptionOccurred(env);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+void
+ExceptionDescribe()
+       JNIEnv *                env = FETCHENV;
+    CODE:
+       {
+           (*env)->ExceptionDescribe(env);
+           RESTOREENV;
+       }
+
+void
+ExceptionClear()
+       JNIEnv *                env = FETCHENV;
+    CODE:
+       {
+           (*env)->ExceptionClear(env);
+           RESTOREENV;
+       }
+
+void
+FatalError(msg)
+       JNIEnv *                env = FETCHENV;
+       const char *            msg
+    CODE:
+       {
+           (*env)->FatalError(env,  msg);
+           RESTOREENV;
+       }
+
+jobject
+NewGlobalRef(lobj)
+       JNIEnv *                env = FETCHENV;
+       jobject                 lobj
+    CODE:
+       {
+           RETVAL = (*env)->NewGlobalRef(env, lobj);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+void
+DeleteGlobalRef(gref)
+       JNIEnv *                env = FETCHENV;
+       jobject                 gref
+    CODE:
+       {
+           (*env)->DeleteGlobalRef(env, gref);
+           RESTOREENV;
+       }
+
+void
+DeleteLocalRef(obj)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+    CODE:
+       {
+           (*env)->DeleteLocalRef(env,  obj);
+           RESTOREENV;
+       }
+
+jboolean
+IsSameObject(obj1,obj2)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj1
+       jobject                 obj2
+    CODE:
+       {
+           RETVAL = (*env)->IsSameObject(env, obj1,obj2);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+AllocObject(clazz)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+    CODE:
+       {
+           RETVAL = (*env)->AllocObject(env, clazz);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+NewObject(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->NewObjectA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+NewObjectA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->NewObjectA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jclass
+GetObjectClass(obj)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+    CODE:
+       {
+           RETVAL = (*env)->GetObjectClass(env, obj);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+IsInstanceOf(obj,clazz)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+    CODE:
+       {
+           RETVAL = (*env)->IsInstanceOf(env, obj,clazz);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jmethodID
+GetMethodID(clazz,name,sig)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       const char *            name
+       const char *            sig
+    CODE:
+       {
+           RETVAL = (*env)->GetMethodID(env, clazz,name,sig);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+CallObjectMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallObjectMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+CallObjectMethodA(obj,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallObjectMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+CallBooleanMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallBooleanMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+CallBooleanMethodA(obj,methodID, args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallBooleanMethodA(env, obj,methodID, args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jbyte
+CallByteMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallByteMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jbyte
+CallByteMethodA(obj,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallByteMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jchar
+CallCharMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallCharMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jchar
+CallCharMethodA(obj,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallCharMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jshort
+CallShortMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallShortMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jshort
+CallShortMethodA(obj,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallShortMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jint
+CallIntMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallIntMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jint
+CallIntMethodA(obj,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallIntMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jlong
+CallLongMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallLongMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jlong
+CallLongMethodA(obj,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallLongMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jfloat
+CallFloatMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallFloatMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jfloat
+CallFloatMethodA(obj,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallFloatMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jdouble
+CallDoubleMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallDoubleMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jdouble
+CallDoubleMethodA(obj,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallDoubleMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+void
+CallVoidMethod(obj,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           (*env)->CallVoidMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+
+void
+CallVoidMethodA(obj,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           (*env)->CallVoidMethodA(env, obj,methodID,args);
+           RESTOREENV;
+       }
+
+jobject
+CallNonvirtualObjectMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallNonvirtualObjectMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+CallNonvirtualObjectMethodA(obj,clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallNonvirtualObjectMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+CallNonvirtualBooleanMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallNonvirtualBooleanMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+CallNonvirtualBooleanMethodA(obj,clazz,methodID, args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallNonvirtualBooleanMethodA(env, obj,clazz,methodID, args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jbyte
+CallNonvirtualByteMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallNonvirtualByteMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jbyte
+CallNonvirtualByteMethodA(obj,clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallNonvirtualByteMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jchar
+CallNonvirtualCharMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallNonvirtualCharMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jchar
+CallNonvirtualCharMethodA(obj,clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallNonvirtualCharMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jshort
+CallNonvirtualShortMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallNonvirtualShortMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jshort
+CallNonvirtualShortMethodA(obj,clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallNonvirtualShortMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jint
+CallNonvirtualIntMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallNonvirtualIntMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jint
+CallNonvirtualIntMethodA(obj,clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallNonvirtualIntMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jlong
+CallNonvirtualLongMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallNonvirtualLongMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jlong
+CallNonvirtualLongMethodA(obj,clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallNonvirtualLongMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jfloat
+CallNonvirtualFloatMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallNonvirtualFloatMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jfloat
+CallNonvirtualFloatMethodA(obj,clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallNonvirtualFloatMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jdouble
+CallNonvirtualDoubleMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallNonvirtualDoubleMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jdouble
+CallNonvirtualDoubleMethodA(obj,clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallNonvirtualDoubleMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+void
+CallNonvirtualVoidMethod(obj,clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           (*env)->CallNonvirtualVoidMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+
+void
+CallNonvirtualVoidMethodA(obj,clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           (*env)->CallNonvirtualVoidMethodA(env, obj,clazz,methodID,args);
+           RESTOREENV;
+       }
+
+jfieldID
+GetFieldID(clazz,name,sig)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       const char *            name
+       const char *            sig
+    CODE:
+       {
+           RETVAL = (*env)->GetFieldID(env, clazz,name,sig);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+GetObjectField(obj,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetObjectField(env, obj,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+GetBooleanField(obj,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetBooleanField(env, obj,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jbyte
+GetByteField(obj,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetByteField(env, obj,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jchar
+GetCharField(obj,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetCharField(env, obj,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jshort
+GetShortField(obj,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetShortField(env, obj,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jint
+GetIntField(obj,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetIntField(env, obj,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jlong
+GetLongField(obj,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetLongField(env, obj,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jfloat
+GetFloatField(obj,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetFloatField(env, obj,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jdouble
+GetDoubleField(obj,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetDoubleField(env, obj,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+void
+SetObjectField(obj,fieldID,val)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jobject                 val
+    CODE:
+       {
+           (*env)->SetObjectField(env, obj,fieldID,val);
+           RESTOREENV;
+       }
+
+void
+SetBooleanField(obj,fieldID,val)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jboolean                val
+    CODE:
+       {
+           (*env)->SetBooleanField(env, obj,fieldID,val);
+           RESTOREENV;
+       }
+
+void
+SetByteField(obj,fieldID,val)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jbyte                   val
+    CODE:
+       {
+           (*env)->SetByteField(env, obj,fieldID,val);
+           RESTOREENV;
+       }
+
+void
+SetCharField(obj,fieldID,val)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jchar                   val
+    CODE:
+       {
+           (*env)->SetCharField(env, obj,fieldID,val);
+           RESTOREENV;
+       }
+
+void
+SetShortField(obj,fieldID,val)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jshort                  val
+    CODE:
+       {
+           (*env)->SetShortField(env, obj,fieldID,val);
+           RESTOREENV;
+       }
+
+void
+SetIntField(obj,fieldID,val)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jint                    val
+    CODE:
+       {
+           (*env)->SetIntField(env, obj,fieldID,val);
+           RESTOREENV;
+       }
+
+void
+SetLongField(obj,fieldID,val)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jlong                   val
+    CODE:
+       {
+           (*env)->SetLongField(env, obj,fieldID,val);
+           RESTOREENV;
+       }
+
+void
+SetFloatField(obj,fieldID,val)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jfloat                  val
+    CODE:
+       {
+           (*env)->SetFloatField(env, obj,fieldID,val);
+           RESTOREENV;
+       }
+
+void
+SetDoubleField(obj,fieldID,val)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jdouble                 val
+    CODE:
+       {
+           (*env)->SetDoubleField(env, obj,fieldID,val);
+           RESTOREENV;
+       }
+
+jmethodID
+GetStaticMethodID(clazz,name,sig)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       const char *            name
+       const char *            sig
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticMethodID(env, clazz,name,sig);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+CallStaticObjectMethod(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallStaticObjectMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+CallStaticObjectMethodA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallStaticObjectMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+CallStaticBooleanMethod(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallStaticBooleanMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+CallStaticBooleanMethodA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallStaticBooleanMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jbyte
+CallStaticByteMethod(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallStaticByteMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jbyte
+CallStaticByteMethodA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallStaticByteMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jchar
+CallStaticCharMethod(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallStaticCharMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jchar
+CallStaticCharMethodA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallStaticCharMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jshort
+CallStaticShortMethod(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallStaticShortMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jshort
+CallStaticShortMethodA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallStaticShortMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jint
+CallStaticIntMethod(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallStaticIntMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jint
+CallStaticIntMethodA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallStaticIntMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jlong
+CallStaticLongMethod(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallStaticLongMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jlong
+CallStaticLongMethodA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallStaticLongMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jfloat
+CallStaticFloatMethod(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallStaticFloatMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jfloat
+CallStaticFloatMethodA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallStaticFloatMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jdouble
+CallStaticDoubleMethod(clazz,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           RETVAL = (*env)->CallStaticDoubleMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jdouble
+CallStaticDoubleMethodA(clazz,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           RETVAL = (*env)->CallStaticDoubleMethodA(env, clazz,methodID,args);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+void
+CallStaticVoidMethod(cls,methodID,...)
+       JNIEnv *                env = FETCHENV;
+       jclass                  cls
+       jmethodID               methodID
+       char *                  sig = 0;
+       int                     argoff = $min_args;
+    CODE:
+       {
+           jvalue * args = makeargs(sig, &ST(argoff), items - argoff);
+           (*env)->CallStaticVoidMethodA(env, cls,methodID,args);
+           RESTOREENV;
+       }
+
+void
+CallStaticVoidMethodA(cls,methodID,args)
+       JNIEnv *                env = FETCHENV;
+       jclass                  cls
+       jmethodID               methodID
+       char *                  sig = 0;
+       jvalue *                args
+    CODE:
+       {
+           (*env)->CallStaticVoidMethodA(env, cls,methodID,args);
+           RESTOREENV;
+       }
+
+jfieldID
+GetStaticFieldID(clazz,name,sig)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       const char *            name
+       const char *            sig
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticFieldID(env, clazz,name,sig);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+GetStaticObjectField(clazz,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticObjectField(env, clazz,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean
+GetStaticBooleanField(clazz,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticBooleanField(env, clazz,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jbyte
+GetStaticByteField(clazz,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticByteField(env, clazz,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jchar
+GetStaticCharField(clazz,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticCharField(env, clazz,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jshort
+GetStaticShortField(clazz,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticShortField(env, clazz,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jint
+GetStaticIntField(clazz,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticIntField(env, clazz,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jlong
+GetStaticLongField(clazz,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticLongField(env, clazz,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jfloat
+GetStaticFloatField(clazz,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticFloatField(env, clazz,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jdouble
+GetStaticDoubleField(clazz,fieldID)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+    CODE:
+       {
+           RETVAL = (*env)->GetStaticDoubleField(env, clazz,fieldID);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+void
+SetStaticObjectField(clazz,fieldID,value)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jobject                 value
+    CODE:
+       {
+         (*env)->SetStaticObjectField(env, clazz,fieldID,value);
+           RESTOREENV;
+       }
+
+void
+SetStaticBooleanField(clazz,fieldID,value)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jboolean                value
+    CODE:
+       {
+         (*env)->SetStaticBooleanField(env, clazz,fieldID,value);
+           RESTOREENV;
+       }
+
+void
+SetStaticByteField(clazz,fieldID,value)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jbyte                   value
+    CODE:
+       {
+         (*env)->SetStaticByteField(env, clazz,fieldID,value);
+           RESTOREENV;
+       }
+
+void
+SetStaticCharField(clazz,fieldID,value)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jchar                   value
+    CODE:
+       {
+         (*env)->SetStaticCharField(env, clazz,fieldID,value);
+           RESTOREENV;
+       }
+
+void
+SetStaticShortField(clazz,fieldID,value)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jshort                  value
+    CODE:
+       {
+         (*env)->SetStaticShortField(env, clazz,fieldID,value);
+           RESTOREENV;
+       }
+
+void
+SetStaticIntField(clazz,fieldID,value)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jint                    value
+    CODE:
+       {
+         (*env)->SetStaticIntField(env, clazz,fieldID,value);
+           RESTOREENV;
+       }
+
+void
+SetStaticLongField(clazz,fieldID,value)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jlong                   value
+    CODE:
+       {
+         (*env)->SetStaticLongField(env, clazz,fieldID,value);
+           RESTOREENV;
+       }
+
+void
+SetStaticFloatField(clazz,fieldID,value)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jfloat                  value
+    CODE:
+       {
+         (*env)->SetStaticFloatField(env, clazz,fieldID,value);
+           RESTOREENV;
+       }
+
+void
+SetStaticDoubleField(clazz,fieldID,value)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       jfieldID                fieldID
+       char *                  sig = 0;
+       jdouble                 value
+    CODE:
+       {
+         (*env)->SetStaticDoubleField(env, clazz,fieldID,value);
+           RESTOREENV;
+       }
+
+jstring
+NewString(unicode)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jsize                   unicode_len_ = NO_INIT;
+       const jchar *           unicode
+    CODE:
+       {
+           RETVAL = (*env)->NewString(env, unicode, unicode_len_);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jsize
+GetStringLength(str)
+       JNIEnv *                env = FETCHENV;
+       jstring                 str
+    CODE:
+       {
+           RETVAL = (*env)->GetStringLength(env, str);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+const jchar *
+GetStringChars(str)
+       JNIEnv *                env = FETCHENV;
+       jstring                 str
+       jboolean                isCopy = NO_INIT;
+       jsize                   RETVAL_len_ = NO_INIT;
+    CODE:
+       {
+           RETVAL = (*env)->GetStringChars(env, str,&isCopy);
+           RETVAL_len_ = (*env)->GetStringLength(env, str);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+    CLEANUP:
+           (*env)->ReleaseStringChars(env, str,RETVAL);
+
+jstring
+NewStringUTF(utf)
+       JNIEnv *                env = FETCHENV;
+       const char *            utf
+    CODE:
+       {
+           RETVAL = (*env)->NewStringUTF(env, utf);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jsize
+GetStringUTFLength(str)
+       JNIEnv *                env = FETCHENV;
+       jstring                 str
+    CODE:
+       {
+           RETVAL = (*env)->GetStringUTFLength(env, str);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+const char *
+GetStringUTFChars(str)
+       JNIEnv *                env = FETCHENV;
+       jstring                 str
+       jboolean                isCopy = NO_INIT;
+    CODE:
+       {
+           RETVAL = (*env)->GetStringUTFChars(env, str,&isCopy);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+    CLEANUP:
+       (*env)->ReleaseStringUTFChars(env, str, RETVAL);
+
+
+jsize
+GetArrayLength(array)
+       JNIEnv *                env = FETCHENV;
+       jarray                  array
+    CODE:
+       {
+           RETVAL = (*env)->GetArrayLength(env, array);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobjectArray
+NewObjectArray(len,clazz,init)
+       JNIEnv *                env = FETCHENV;
+       jsize                   len
+       jclass                  clazz
+       jobject                 init
+    CODE:
+       {
+           RETVAL = (*env)->NewObjectArray(env, len,clazz,init);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jobject
+GetObjectArrayElement(array,index)
+       JNIEnv *                env = FETCHENV;
+       jobjectArray            array
+       jsize                   index
+    CODE:
+       {
+           RETVAL = (*env)->GetObjectArrayElement(env, array,index);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+void
+SetObjectArrayElement(array,index,val)
+       JNIEnv *                env = FETCHENV;
+       jobjectArray            array
+       jsize                   index
+       jobject                 val
+    CODE:
+       {
+           (*env)->SetObjectArrayElement(env, array,index,val);
+           RESTOREENV;
+       }
+
+jbooleanArray
+NewBooleanArray(len)
+       JNIEnv *                env = FETCHENV;
+       jsize                   len
+    CODE:
+       {
+           RETVAL = (*env)->NewBooleanArray(env, len);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jbyteArray
+NewByteArray(len)
+       JNIEnv *                env = FETCHENV;
+       jsize                   len
+    CODE:
+       {
+           RETVAL = (*env)->NewByteArray(env, len);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jcharArray
+NewCharArray(len)
+       JNIEnv *                env = FETCHENV;
+       jsize                   len
+    CODE:
+       {
+           RETVAL = (*env)->NewCharArray(env, len);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jshortArray
+NewShortArray(len)
+       JNIEnv *                env = FETCHENV;
+       jsize                   len
+    CODE:
+       {
+           RETVAL = (*env)->NewShortArray(env, len);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jintArray
+NewIntArray(len)
+       JNIEnv *                env = FETCHENV;
+       jsize                   len
+    CODE:
+       {
+           RETVAL = (*env)->NewIntArray(env, len);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jlongArray
+NewLongArray(len)
+       JNIEnv *                env = FETCHENV;
+       jsize                   len
+    CODE:
+       {
+           RETVAL = (*env)->NewLongArray(env, len);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jfloatArray
+NewFloatArray(len)
+       JNIEnv *                env = FETCHENV;
+       jsize                   len
+    CODE:
+       {
+           RETVAL = (*env)->NewFloatArray(env, len);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jdoubleArray
+NewDoubleArray(len)
+       JNIEnv *                env = FETCHENV;
+       jsize                   len
+    CODE:
+       {
+           RETVAL = (*env)->NewDoubleArray(env, len);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+jboolean *
+GetBooleanArrayElements(array)
+       JNIEnv *                env = FETCHENV;
+       jsize                   RETVAL_len_ = NO_INIT;
+       jbooleanArray           array
+       jboolean                isCopy = NO_INIT;
+    PPCODE:
+       {
+           RETVAL = (*env)->GetBooleanArrayElements(env, array,&isCopy);
+           RETVAL_len_ = (*env)->GetArrayLength(env, array);
+           if (GIMME == G_ARRAY) {
+               int i;
+               jboolean* r = RETVAL;
+               EXTEND(sp, RETVAL_len_);
+               for (i = RETVAL_len_; i; --i) {
+                   PUSHs(sv_2mortal(newSViv(*r++)));
+               }
+           }
+           else {
+               if (RETVAL_len_) {
+                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,
+                       (STRLEN)RETVAL_len_ * sizeof(jboolean))));
+               }
+               else
+                   PUSHs(&PL_sv_no);
+           }
+           (*env)->ReleaseBooleanArrayElements(env, array,RETVAL,JNI_ABORT);
+           RESTOREENV;
+       }
+
+jbyte *
+GetByteArrayElements(array)
+       JNIEnv *                env = FETCHENV;
+       jsize                   RETVAL_len_ = NO_INIT;
+       jbyteArray              array
+       jboolean                isCopy = NO_INIT;
+    PPCODE:
+       {
+           RETVAL = (*env)->GetByteArrayElements(env, array,&isCopy);
+           RETVAL_len_ = (*env)->GetArrayLength(env, array);
+           if (GIMME == G_ARRAY) {
+               int i;
+               jbyte* r = RETVAL;
+               EXTEND(sp, RETVAL_len_);
+               for (i = RETVAL_len_; i; --i) {
+                   PUSHs(sv_2mortal(newSViv(*r++)));
+               }
+           }
+           else {
+               if (RETVAL_len_) {
+                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,
+                       (STRLEN)RETVAL_len_ * sizeof(jbyte))));
+               }
+               else
+                   PUSHs(&PL_sv_no);
+           }
+           (*env)->ReleaseByteArrayElements(env, array,RETVAL,JNI_ABORT);
+           RESTOREENV;
+       }
+
+jchar *
+GetCharArrayElements(array)
+       JNIEnv *                env = FETCHENV;
+       jsize                   RETVAL_len_ = NO_INIT;
+       jcharArray              array
+       jboolean                isCopy = NO_INIT;
+    PPCODE:
+       {
+           RETVAL = (*env)->GetCharArrayElements(env, array,&isCopy);
+           RETVAL_len_ = (*env)->GetArrayLength(env, array);
+           if (GIMME == G_ARRAY) {
+               int i;
+               jchar* r = RETVAL;
+               EXTEND(sp, RETVAL_len_);
+               for (i = RETVAL_len_; i; --i) {
+                   PUSHs(sv_2mortal(newSViv(*r++)));
+               }
+           }
+           else {
+               if (RETVAL_len_) {
+                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,
+                       (STRLEN)RETVAL_len_ * sizeof(jchar))));
+               }
+               else
+                   PUSHs(&PL_sv_no);
+           }
+           (*env)->ReleaseCharArrayElements(env, array,RETVAL,JNI_ABORT);
+           RESTOREENV;
+       }
+
+jshort *
+GetShortArrayElements(array)
+       JNIEnv *                env = FETCHENV;
+       jsize                   RETVAL_len_ = NO_INIT;
+       jshortArray             array
+       jboolean                isCopy = NO_INIT;
+    PPCODE:
+       {
+           RETVAL = (*env)->GetShortArrayElements(env, array,&isCopy);
+           RETVAL_len_ = (*env)->GetArrayLength(env, array);
+           if (GIMME == G_ARRAY) {
+               int i;
+               jshort* r = RETVAL;
+               EXTEND(sp, RETVAL_len_);
+               for (i = RETVAL_len_; i; --i) {
+                   PUSHs(sv_2mortal(newSViv(*r++)));
+               }
+           }
+           else {
+               if (RETVAL_len_) {
+                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,
+                       (STRLEN)RETVAL_len_ * sizeof(jshort))));
+               }
+               else
+                   PUSHs(&PL_sv_no);
+           }
+           (*env)->ReleaseShortArrayElements(env, array,RETVAL,JNI_ABORT);
+           RESTOREENV;
+       }
+
+jint *
+GetIntArrayElements(array)
+       JNIEnv *                env = FETCHENV;
+       jsize                   RETVAL_len_ = NO_INIT;
+       jintArray               array
+       jboolean                isCopy = NO_INIT;
+    PPCODE:
+       {
+           RETVAL = (*env)->GetIntArrayElements(env, array,&isCopy);
+           RETVAL_len_ = (*env)->GetArrayLength(env, array);
+           if (GIMME == G_ARRAY) {
+               int i;
+               jint* r = RETVAL;
+               EXTEND(sp, RETVAL_len_);
+               for (i = RETVAL_len_; i; --i) {
+                   PUSHs(sv_2mortal(newSViv(*r++)));
+               }
+           }
+           else {
+               if (RETVAL_len_) {
+                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,
+                       (STRLEN)RETVAL_len_ * sizeof(jint))));
+               }
+               else
+                   PUSHs(&PL_sv_no);
+           }
+           (*env)->ReleaseIntArrayElements(env, array,RETVAL,JNI_ABORT);
+           RESTOREENV;
+       }
+
+jlong *
+GetLongArrayElements(array)
+       JNIEnv *                env = FETCHENV;
+       jsize                   RETVAL_len_ = NO_INIT;
+       jlongArray              array
+       jboolean                isCopy = NO_INIT;
+    PPCODE:
+       {
+           RETVAL = (*env)->GetLongArrayElements(env, array,&isCopy);
+           RETVAL_len_ = (*env)->GetArrayLength(env, array);
+           if (GIMME == G_ARRAY) {
+               int i;
+               jlong* r = RETVAL;
+               EXTEND(sp, RETVAL_len_);
+               for (i = RETVAL_len_; i; --i) {
+                   PUSHs(sv_2mortal(newSViv(*r++)));
+               }
+           }
+           else {
+               if (RETVAL_len_) {
+                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,
+                       (STRLEN)RETVAL_len_ * sizeof(jlong))));
+               }
+               else
+                   PUSHs(&PL_sv_no);
+           }
+           (*env)->ReleaseLongArrayElements(env, array,RETVAL,JNI_ABORT);
+           RESTOREENV;
+       }
+
+jfloat *
+GetFloatArrayElements(array)
+       JNIEnv *                env = FETCHENV;
+       jsize                   RETVAL_len_ = NO_INIT;
+       jfloatArray             array
+       jboolean                isCopy = NO_INIT;
+    PPCODE:
+       {
+           RETVAL = (*env)->GetFloatArrayElements(env, array,&isCopy);
+           RETVAL_len_ = (*env)->GetArrayLength(env, array);
+           if (GIMME == G_ARRAY) {
+               int i;
+               jfloat* r = RETVAL;
+               EXTEND(sp, RETVAL_len_);
+               for (i = RETVAL_len_; i; --i) {
+                   PUSHs(sv_2mortal(newSVnv(*r++)));
+               }
+           }
+           else {
+               if (RETVAL_len_) {
+                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,
+                       (STRLEN)RETVAL_len_ * sizeof(jfloat))));
+               }
+               else
+                   PUSHs(&PL_sv_no);
+           }
+           (*env)->ReleaseFloatArrayElements(env, array,RETVAL,JNI_ABORT);
+           RESTOREENV;
+       }
+
+jdouble *
+GetDoubleArrayElements(array)
+       JNIEnv *                env = FETCHENV;
+       jsize                   RETVAL_len_ = NO_INIT;
+       jdoubleArray            array
+       jboolean                isCopy = NO_INIT;
+    PPCODE:
+       {
+           RETVAL = (*env)->GetDoubleArrayElements(env, array,&isCopy);
+           RETVAL_len_ = (*env)->GetArrayLength(env, array);
+           if (GIMME == G_ARRAY) {
+               int i;
+               jdouble* r = RETVAL;
+               EXTEND(sp, RETVAL_len_);
+               for (i = RETVAL_len_; i; --i) {
+                   PUSHs(sv_2mortal(newSVnv(*r++)));
+               }
+           }
+           else {
+               if (RETVAL_len_) {
+                   PUSHs(sv_2mortal(newSVpvn((char*)RETVAL,
+                       (STRLEN)RETVAL_len_ * sizeof(jdouble))));
+               }
+               else
+                   PUSHs(&PL_sv_no);
+           }
+           (*env)->ReleaseDoubleArrayElements(env, array,RETVAL,JNI_ABORT);
+           RESTOREENV;
+       }
+
+void
+GetBooleanArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       jbooleanArray           array
+       jsize                   start
+       jsize                   len
+       STRLEN                  tmplen = len * sizeof(jboolean) + 1;
+       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);
+       jboolean *              buf = (jboolean*)sv_grow(ST(3),len * sizeof(jboolean)+1);
+    CODE:
+       {
+           (*env)->GetBooleanArrayRegion(env, array,start,len,buf);
+           SvCUR_set(ST(3), len * sizeof(jboolean));
+           *SvEND(ST(3)) = '\0';
+           RESTOREENV;
+       }
+
+void
+GetByteArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       jbyteArray              array
+       jsize                   start
+       jsize                   len
+       STRLEN                  tmplen = len * sizeof(jboolean) + 1;
+       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);
+       jbyte *                 buf = (jbyte*)sv_grow(ST(3),len * sizeof(jbyte)+1);
+    CODE:
+       {
+           (*env)->GetByteArrayRegion(env, array,start,len,buf);
+           SvCUR_set(ST(3), len * sizeof(jbyte));
+           *SvEND(ST(3)) = '\0';
+           RESTOREENV;
+       }
+
+void
+GetCharArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       jcharArray              array
+       jsize                   start
+       jsize                   len
+       STRLEN                  tmplen = len * sizeof(jboolean) + 1;
+       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);
+       jchar *                 buf = (jchar*)sv_grow(ST(3),len * sizeof(jchar)+1);
+    CODE:
+       {
+           (*env)->GetCharArrayRegion(env, array,start,len,buf);
+           SvCUR_set(ST(3), len * sizeof(jchar));
+           *SvEND(ST(3)) = '\0';
+           RESTOREENV;
+       }
+
+void
+GetShortArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       jshortArray             array
+       jsize                   start
+       jsize                   len
+       STRLEN                  tmplen = len * sizeof(jboolean) + 1;
+       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);
+       jshort *                buf = (jshort*)sv_grow(ST(3),len * sizeof(jshort)+1);
+    CODE:
+       {
+           (*env)->GetShortArrayRegion(env, array,start,len,buf);
+           SvCUR_set(ST(3), len * sizeof(jshort));
+           *SvEND(ST(3)) = '\0';
+           RESTOREENV;
+       }
+
+void
+GetIntArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       jintArray               array
+       jsize                   start
+       jsize                   len
+       STRLEN                  tmplen = len * sizeof(jboolean) + 1;
+       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);
+       jint *                  buf = (jint*)sv_grow(ST(3),len * sizeof(jint)+1);
+    CODE:
+       {
+           (*env)->GetIntArrayRegion(env, array,start,len,buf);
+           SvCUR_set(ST(3), len * sizeof(jint));
+           *SvEND(ST(3)) = '\0';
+           RESTOREENV;
+       }
+
+void
+GetLongArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       jlongArray              array
+       jsize                   start
+       jsize                   len
+       STRLEN                  tmplen = len * sizeof(jboolean) + 1;
+       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);
+       jlong *                 buf = (jlong*)sv_grow(ST(3),len * sizeof(jlong)+1);
+    CODE:
+       {
+           (*env)->GetLongArrayRegion(env, array,start,len,buf);
+           SvCUR_set(ST(3), len * sizeof(jlong));
+           *SvEND(ST(3)) = '\0';
+           RESTOREENV;
+       }
+
+void
+GetFloatArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       jfloatArray             array
+       jsize                   start
+       jsize                   len
+       STRLEN                  tmplen = len * sizeof(jboolean) + 1;
+       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);
+       jfloat *                buf = (jfloat*)sv_grow(ST(3),len * sizeof(jfloat)+1);
+    CODE:
+       {
+           (*env)->GetFloatArrayRegion(env, array,start,len,buf);
+           SvCUR_set(ST(3), len * sizeof(jfloat));
+           *SvEND(ST(3)) = '\0';
+           RESTOREENV;
+       }
+
+void
+GetDoubleArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       jdoubleArray            array
+       jsize                   start
+       jsize                   len
+       STRLEN                  tmplen = len * sizeof(jboolean) + 1;
+       char *                  tmpbuf = (char*)sv_pvn_force(ST(3), &tmplen);
+       jdouble *               buf = (jdouble*)sv_grow(ST(3),len * sizeof(jdouble)+1);
+    CODE:
+       {
+           (*env)->GetDoubleArrayRegion(env, array,start,len,buf);
+           SvCUR_set(ST(3), len * sizeof(jdouble));
+           *SvEND(ST(3)) = '\0';
+           RESTOREENV;
+       }
+
+void
+SetBooleanArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jbooleanArray           array
+       jsize                   start
+       jsize                   len
+       jsize                   buf_len_ = NO_INIT;
+       jboolean *              buf
+    CODE:
+       {
+           if (buf_len_ < len)
+               croak("string is too short");
+           else if (buf_len_ > len && PL_dowarn)
+               warn("string is too long");
+           (*env)->SetBooleanArrayRegion(env, array,start,len,buf);
+           RESTOREENV;
+       }
+
+void
+SetByteArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jbyteArray              array
+       jsize                   start
+       jsize                   len
+       jsize                   buf_len_ = NO_INIT;
+       jbyte *                 buf
+    CODE:
+       {
+           if (buf_len_ < len)
+               croak("string is too short");
+           else if (buf_len_ > len && PL_dowarn)
+               warn("string is too long");
+           (*env)->SetByteArrayRegion(env, array,start,len,buf);
+           RESTOREENV;
+       }
+
+void
+SetCharArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jcharArray              array
+       jsize                   start
+       jsize                   len
+       jsize                   buf_len_ = NO_INIT;
+       jchar *                 buf
+    CODE:
+       {
+           if (buf_len_ < len)
+               croak("string is too short");
+           else if (buf_len_ > len && PL_dowarn)
+               warn("string is too long");
+           (*env)->SetCharArrayRegion(env, array,start,len,buf);
+           RESTOREENV;
+       }
+
+void
+SetShortArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jshortArray             array
+       jsize                   start
+       jsize                   len
+       jsize                   buf_len_ = NO_INIT;
+       jshort *                buf
+    CODE:
+       {
+           if (buf_len_ < len)
+               croak("string is too short");
+           else if (buf_len_ > len && PL_dowarn)
+               warn("string is too long");
+           (*env)->SetShortArrayRegion(env, array,start,len,buf);
+           RESTOREENV;
+       }
+
+void
+SetIntArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jintArray               array
+       jsize                   start
+       jsize                   len
+       jsize                   buf_len_ = NO_INIT;
+       jint *                  buf
+    CODE:
+       {
+           if (buf_len_ < len)
+               croak("string is too short");
+           else if (buf_len_ > len && PL_dowarn)
+               warn("string is too long");
+           (*env)->SetIntArrayRegion(env, array,start,len,buf);
+           RESTOREENV;
+       }
+
+void
+SetLongArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jlongArray              array
+       jsize                   start
+       jsize                   len
+       jsize                   buf_len_ = NO_INIT;
+       jlong *                 buf
+    CODE:
+       {
+           if (buf_len_ < len)
+               croak("string is too short");
+           else if (buf_len_ > len && PL_dowarn)
+               warn("string is too long");
+           (*env)->SetLongArrayRegion(env, array,start,len,buf);
+           RESTOREENV;
+       }
+
+void
+SetFloatArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jfloatArray             array
+       jsize                   start
+       jsize                   len
+       jsize                   buf_len_ = NO_INIT;
+       jfloat *                buf
+    CODE:
+       {
+           if (buf_len_ < len)
+               croak("string is too short");
+           else if (buf_len_ > len && PL_dowarn)
+               warn("string is too long");
+           (*env)->SetFloatArrayRegion(env, array,start,len,buf);
+           RESTOREENV;
+       }
+
+void
+SetDoubleArrayRegion(array,start,len,buf)
+       JNIEnv *                env = FETCHENV;
+       STRLEN                  tmplen = NO_INIT;
+       jdoubleArray            array
+       jsize                   start
+       jsize                   len
+       jsize                   buf_len_ = NO_INIT;
+       jdouble *               buf
+    CODE:
+       {
+           if (buf_len_ < len)
+               croak("string is too short");
+           else if (buf_len_ > len && PL_dowarn)
+               warn("string is too long");
+           (*env)->SetDoubleArrayRegion(env, array,start,len,buf);
+           RESTOREENV;
+       }
+
+SysRet
+RegisterNatives(clazz,methods,nMethods)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+       JNINativeMethod *       methods
+       jint                    nMethods
+    CODE:
+       {
+           RETVAL = (*env)->RegisterNatives(env, clazz,methods,nMethods);
+       }
+
+SysRet
+UnregisterNatives(clazz)
+       JNIEnv *                env = FETCHENV;
+       jclass                  clazz
+    CODE:
+       {
+           RETVAL = (*env)->UnregisterNatives(env, clazz);
+       }
+    OUTPUT:
+       RETVAL  
+   
+SysRet
+MonitorEnter(obj)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+    CODE:
+       {
+           RETVAL = (*env)->MonitorEnter(env, obj);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+SysRet
+MonitorExit(obj)
+       JNIEnv *                env = FETCHENV;
+       jobject                 obj
+    CODE:
+       {
+           RETVAL = (*env)->MonitorExit(env, obj);
+           RESTOREENV;
+       }
+    OUTPUT:
+       RETVAL
+
+JavaVM *
+GetJavaVM(...)
+       JNIEnv *                env = FETCHENV;
+    CODE:
+       {
+#ifdef JPL_DEBUG
+           jpldebug = 1;
+#else
+           jpldebug = 0;
+#endif
+           if (env) {  /* We're embedded. */
+               if ((*env)->GetJavaVM(env, &RETVAL) < 0)
+                   RETVAL = 0;
+           }
+           else {      /* We're embedding. */
+#ifdef KAFFE
+                JavaVMInitArgs vm_args;
+#else
+                JDK1_1InitArgs vm_args;
+#endif
+               char *lib;
+               if (jpldebug) {
+                   fprintf(stderr, "We're embedding Java in Perl.\n");
+               }
+
+               if (items--) {
+                   ++mark;
+                   lib = SvPV(*mark, PL_na);
+               }
+               else
+                   lib = 0;
+               if (jpldebug) {
+                   fprintf(stderr, "lib is %s.\n", lib);
+               }
+#ifdef WIN32
+        if (LoadLibrary("jvm.dll")) {
+            if (!LoadLibrary("javai.dll")) {
+                warn("Can't load javai.dll");
+            }
+        } else {
+            if (lib && !LoadLibrary(lib))
+                croak("Can't load javai.dll"); 
+        }
+#else
+               if (jpldebug) {
+                   fprintf(stderr, "Opening Java shared library.\n");
+                }
+#ifdef KAFFE
+               if (!dlopen("libkaffevm.so", RTLD_LAZY|RTLD_GLOBAL)) {
+#else
+               if (!dlopen("libjava.so", RTLD_LAZY|RTLD_GLOBAL)) {
+#endif
+                   if (lib && !dlopen(lib, RTLD_LAZY|RTLD_GLOBAL))
+                       croak("Can't load Java shared library.");
+               }
+#endif
+               /* Kaffe seems to get very upset if vm_args.version isn't set */
+#ifdef KAFFE
+               vm_args.version = JNI_VERSION_1_1;
+#endif
+               JNI_GetDefaultJavaVMInitArgs(&vm_args);
+               vm_args.exit = &call_my_exit;
+               if (jpldebug) {
+            fprintf(stderr, "items = %d\n", items);
+            fprintf(stderr, "mark = %s\n", SvPV(*mark, PL_na));
+        }
+               while (items > 1) {
+                 char *s;
+                   ++mark;
+                   s = SvPV(*mark,PL_na);
+                   ++mark;
+                   if (jpldebug) {
+                fprintf(stderr, "*s = %s\n", s);
+                fprintf(stderr, "val = %s\n", SvPV(*mark, PL_na));
+            }
+                   items -= 2;
+                   if (strEQ(s, "checkSource"))
+                       vm_args.checkSource = (jint)SvIV(*mark);
+                   else if (strEQ(s, "nativeStackSize"))
+                       vm_args.nativeStackSize = (jint)SvIV(*mark);
+                   else if (strEQ(s, "javaStackSize"))
+                       vm_args.javaStackSize = (jint)SvIV(*mark);
+                   else if (strEQ(s, "minHeapSize"))
+                       vm_args.minHeapSize = (jint)SvIV(*mark);
+                   else if (strEQ(s, "maxHeapSize"))
+                       vm_args.maxHeapSize = (jint)SvIV(*mark);
+                   else if (strEQ(s, "verifyMode"))
+                       vm_args.verifyMode = (jint)SvIV(*mark);
+                   else if (strEQ(s, "classpath"))
+                       vm_args.classpath = savepv(SvPV(*mark,PL_na));
+                   else if (strEQ(s, "enableClassGC"))
+                       vm_args.enableClassGC = (jint)SvIV(*mark);
+                   else if (strEQ(s, "enableVerboseGC"))
+                       vm_args.enableVerboseGC = (jint)SvIV(*mark);
+                   else if (strEQ(s, "disableAsyncGC"))
+                       vm_args.disableAsyncGC = (jint)SvIV(*mark);
+#ifdef KAFFE
+                   else if (strEQ(s, "libraryhome"))
+                       vm_args.libraryhome = savepv(SvPV(*mark,PL_na));
+                   else if (strEQ(s, "classhome"))
+                       vm_args.classhome = savepv(SvPV(*mark,PL_na));
+                   else if (strEQ(s, "enableVerboseJIT"))
+                       vm_args.enableVerboseJIT = (jint)SvIV(*mark); 
+                   else if (strEQ(s, "enableVerboseClassloading"))
+                       vm_args.enableVerboseClassloading = (jint)SvIV(*mark); 
+                   else if (strEQ(s, "enableVerboseCall"))
+                       vm_args.enableVerboseCall = (jint)SvIV(*mark); 
+                   else if (strEQ(s, "allocHeapSize"))
+                       vm_args.allocHeapSize = (jint)SvIV(*mark); 
+#else
+                   else if (strEQ(s, "verbose"))
+                       vm_args.verbose = (jint)SvIV(*mark); 
+                   else if (strEQ(s, "debugging"))
+                       vm_args.debugging = (jboolean)SvIV(*mark);
+                   else if (strEQ(s, "debugPort"))
+                       vm_args.debugPort = (jint)SvIV(*mark); 
+#endif
+                   else
+                       croak("unrecognized option: %s", s);
+               }
+
+               if (jpldebug) {
+                   fprintf(stderr, "Creating Java VM...\n");
+                   fprintf(stderr, "Working CLASSPATH: %s\n", 
+                       vm_args.classpath);
+               }
+               if (JNI_CreateJavaVM(&RETVAL, &jplcurenv, &vm_args) < 0) {
+                  croak("Unable to create instance of JVM");
+                }
+               if (jpldebug) {
+                   fprintf(stderr, "Created Java VM.\n");
+               }
+
+           }
+       }
+
index 146e3d0..a4865b5 100644 (file)
-#!/usr/bin/perl\r
-use ExtUtils::MakeMaker;\r
-use Getopt::Std;\r
-use Config;\r
-$ARCHNAME = $Config{archname};\r
-use File::Basename;\r
-\r
-getopts('e'); # embedding?\r
-\r
-$CCFLAGS .= $ENV{CCFLAGS} if defined $ENV{CCFLAGS};\r
-\r
-# $USE_KAFFE is a boolean that tells us whether or not we should use Kaffe.\r
-# Set by find_includes (it seemed as good a place as any).\r
-\r
-# Note that we don't check to see the version of Kaffe is one we support.\r
-#  Currently, the only one we support is the one from CVS.\r
-\r
-my $USE_KAFFE = 0;\r
-\r
-#require "JNIConfig";\r
-\r
-if ($^O eq 'solaris') {\r
-    $LIBPATH = " -R$Config{archlib}/CORE -L$Config{archlib}/CORE";\r
-} elsif ($^O eq 'MSWin32') {\r
-    $LIBPATH = " -L$Config{archlib}\\CORE";\r
-    # MSR - added MS VC++ default library path\r
-    # bjepson - fixed to support path names w/spaces in them.\r
-    push(@WINLIBS, (split"\;",$ENV{LIB}));\r
-    grep s/\\$//, @WINLIBS; # eliminate trailing \\r
-    grep s/\/$//, @WINLIBS; # eliminate trailing /\r
-    $LIBPATH .= join(" ", "", map { qq["-L$_" ] } @WINLIBS);\r
-} else {\r
-    $LIBPATH = " -L$Config{archlib}/CORE";\r
-}\r
-#$LIBS = " -lperl";\r
-\r
-# Figure out where Java might live\r
-#\r
-# MSR - added JDK 1.3\r
-#\r
-\r
-my @JAVA_HOME_GUESSES = qw(/usr/local/java /usr/java /usr/local/jdk117_v3\r
-                         C:\\JDK1.1.8 C:\\JDK1.2.1 C:\\JDK1.2.2 C:\\JDK1.3 );\r
-\r
-my @KAFFE_PREFIX_GUESSES = qw(/usr/local /usr);\r
-\r
-if (! defined $ENV{JAVA_HOME}) {\r
-        print "You didn't define JAVA_HOME, so I'm trying a few guesses.\n";\r
-        print "If this fails, you might want to try setting JAVA_HOME and\n";\r
-        print "running me again.\n";\r
-} else {\r
-        @JAVA_HOME_GUESSES = ( $ENV{JAVA_HOME} );\r
-}\r
-\r
-if (! defined $ENV{KAFFE_PREFIX}) {\r
-        print "\nYou didn't define KAFFE_PREFIX, so I'm trying a few guesses.",\r
-          "\nIf this fails, and you are using Kaffe, you might want to try\n",\r
-          "setting KAFFE_PREFIX and running me again.\n",\r
-          "If you want to ignore any possible Kaffe installation, set the\n",\r
-          "KAFFE_PREFIX to and empty string.\n\n";\r
-} else {\r
-        @KAFFE_PREFIX_GUESSES = ($ENV{KAFFE_PREFIX} eq "") ? () :\r
-                                                       ( $ENV{KAFFE_PREFIX} );\r
-}\r
-\r
-my(@KAFFE_INCLUDE_GUESSES, @KAFFE_LIB_GUESSES);\r
-foreach my $kaffePrefix (@KAFFE_PREFIX_GUESSES) {\r
-     push(@KAFFE_INCLUDE_GUESSES, "$kaffePrefix/include/kaffe");\r
-     push(@KAFFE_LIB_GUESSES, "$kaffePrefix/lib");\r
-     push(@KAFFE_LIB_GUESSES, "$kaffePrefix/lib/kaffe");\r
-}\r
-    $guess .= "/include/kaffe";\r
-\r
-# Let's find out where jni.h lives\r
-#\r
-my @INCLUDE = find_includes();\r
-\r
-if ($^O eq 'MSWin32') {\r
-  # MSR - added MS VC++ default include path\r
-  push(@INCLUDE,(split"\;",$ENV{INCLUDE}));\r
-  grep s/\\$//, @INCLUDE; # remove trailing \\r
-  grep s/\/$//, @INCLUDE; # remove trailing \\r
-  $INC = join("", map { qq["-I$_" ] } @INCLUDE);\r
-\r
-} else {\r
-  $INC = join(" -I", ("", @INCLUDE));\r
-}\r
-\r
-# Let's find out the name of the Java shared library\r
-#\r
-my @JAVALIBS = find_libs();\r
-\r
-# Find out some defines based on the library we are linking to\r
-#\r
-foreach (@JAVALIBS) {\r
-    if ( $^O eq 'MSWin32') { # We're on Win32\r
-        $INC =~ s#/#\\#g;\r
-        $INC =~ s#\\$##;\r
-         print $INC, "\n";\r
-        $CCFLAGS .= " -DWIN32 -Z7 -D_DEBUG";\r
-        $MYEXTLIB = "$libjava";\r
-      }\r
-}\r
-\r
-$CCFLAGS .= " -DKAFFE" if ($USE_KAFFE);\r
-\r
-# Let's find out the path of the library we need to link against.\r
-#\r
-foreach (@JAVALIBS) {\r
-    if ($^O eq 'MSWin32') { # We're on Win32\r
-        $_ =~ s#/#\\\\#g;\r
-    }\r
-    my ($libname, $libpath, $libsuffix) = fileparse($_, ("\.so", "\.lib"));\r
-    $libname =~ s/^lib//;\r
-    if ($^O eq 'solaris') {\r
-        $LIBPATH .= " -R$libpath -L$libpath"\r
-    } else {\r
-        $LIBPATH .= " -L$libpath"\r
-    }\r
-    $LIBS .= " -l$libname";\r
-}\r
-\r
-# Do we need -D_REENTRANT?\r
-if ($LIBPATH =~ /native/) {\r
-    print "Looks like native threads...\n";\r
-    $CCFLAGS .= " -D_REENTRANT";\r
-}\r
-\r
-if ($opt_e) {\r
-    print "We're embedding Perl in Java via libPerlInterpreter.so.\n";\r
-    eval `../setvars -perl`;\r
-    $CCFLAGS .= " -DEMBEDDEDPERL";\r
-    $LIBPATH .= " -R$ENV{JPL_HOME}/lib/$ARCHNAME -L$ENV{JPL_HOME}/lib/$ARCHNAME";\r
-    $LIBS    .= " -lPerlInterpreter";\r
-}\r
-\r
-# Needed for JNI.\r
-if ($^O eq 'solaris') {\r
-    $LIBS = " -lthread -lc $LIBS"; #-lthread must be first!!!\r
-    $CCFLAGS .= " -D_REENTRANT";\r
-}\r
-\r
-# MSR - clean up LIBS\r
-$LIBS =~ s/-l$//;\r
-\r
-#\r
-# Next, build JNI/Config.pm.  This is a superfluous thing for the SUN and\r
-# Microsoft JDKs, but absolutely necessary for Kaffe.  I think at some\r
-# point, the Microsoft and SUN implementations should use JNI::Config, too.\r
-#\r
-\r
-if (! -d "JNI") {\r
-    mkdir("JNI", 0755) || die "Unable to make JNI directory: $!";\r
-}\r
-open(JNICONFIG, ">JNI/Config.pm") || die "Unable to open JNI/Config.pm: $!";\r
-\r
-print JNICONFIG "# DO NOT EDIT!   Autogenerated by JNI/Makefile.PL\n\n",\r
-                "package JNI::Config;\nuse strict;\nuse Carp;\n",\r
-                "\nuse vars qw(\$KAFFE \$LIB_JAVA \$CLASS_HOME ",\r
-                "\$LIB_HOME);\n\n",\r
-                "\$KAFFE = $USE_KAFFE;\n\$LIB_JAVA = \"$JAVALIBS[0]\";\n";\r
-if ($USE_KAFFE) {\r
-  my $path = $JAVALIBS[0];\r
-  $path =~ s%/(kaffe/)?libkaffevm.so$%%;\r
-\r
-  print JNICONFIG "\$LIB_HOME = \"$path/kaffe\";\n";\r
-  $path =~ s%/lib%%;\r
-  print JNICONFIG "\$CLASS_HOME = \"$path/share/kaffe\";\n";\r
-}\r
-print JNICONFIG "\n\n1;\n";\r
-close JNICONFIG;\r
-\r
-\r
-my %Makefile = (\r
-    NAME        => 'JNI',\r
-    VERSION_FROM => 'JNI.pm',\r
-    DEFINE        => '',\r
-    LINKTYPE => 'dynamic',\r
-    INC        => $INC,\r
-    CCFLAGS => "$Config{ccflags} $CCFLAGS", \r
-    ($Config{archname} =~ /mswin32.*-object/i ? ('CAPI' => 'TRUE') : ()),\r
-\r
-    clean => {FILES => "JNI/* JNI"}\r
-);\r
-\r
-$Makefile{LIBS} = ["$LIBPATH $LIBS"];\r
-if ($MYEXTLIB) {\r
-    $Makefile{MYEXTLIB} = $MYEXTLIB;\r
-}\r
-\r
-# See lib/ExtUtils/MakeMaker.pm for details of how to influence\r
-# the contents of the Makefile that is written.\r
-#\r
-WriteMakefile(%Makefile);\r
-\r
-if ($USE_KAFFE) {\r
-  my $path = $JAVALIBS[0];\r
-  $path =~ s%/libkaffevm.so$%%;\r
-  print "\n\n***NOTE: be sure to have:\n",\r
-            "              LD_LIBRARY_PATH=$path\n",\r
-            "         in your enviornment (or installed as a system dynamic\n",\r
-            "         library location) when you compile and run this.\n";\r
-}\r
-\r
-# subroutine to find a library\r
-#\r
-sub find_stuff {\r
-\r
-    my ($candidates, $locations) = @_;\r
-    my $lib;\r
-    $wanted = sub {\r
-        foreach my $name (@$candidates) {\r
-            if (/$name$/ and ! /green_threads/ and !/include-old/) {\r
-                    $lib = $File::Find::name;\r
-            }\r
-        }\r
-    };\r
-    \r
-    use File::Find;\r
-    foreach my $guess (@$locations) {\r
-        next unless -d $guess;\r
-        find (\&$wanted, $guess);\r
-    }\r
-    if (! $lib) {\r
-        print "Could not find @$candidates\n";\r
-    } else {\r
-        print "Found @$candidates as $lib\n\n";\r
-    }\r
-    return $lib;\r
-}\r
-\r
-# Extra lib for Java 1.2\r
-#\r
-#  if we want KAFFE, check for it, otherwise search for Java\r
-\r
-sub find_libs {\r
-  my($libjava, $libawt, $libjvm);\r
-\r
-  if ($USE_KAFFE) {\r
-    $libjava = find_stuff(['libkaffevm.so'], \@KAFFE_LIB_GUESSES);\r
-    $libawt = find_stuff(['libawt.so'], \@KAFFE_LIB_GUESSES);\r
-  } else {\r
-    $libjava = find_stuff(['libjava.so', 'javai.lib', 'jvm.lib'],\r
-                             \@JAVA_HOME_GUESSES);\r
-    $libjvm  = find_stuff(['libjvm.so'],  \@JAVA_HOME_GUESSES);\r
-    $libawt  = find_stuff(['libawt.so'], \@JAVA_HOME_GUESSES);\r
-    if (defined $libjvm) { # JDK 1.2\r
-      my $libhpi  = find_stuff(['libhpi.so'], \@JAVA_HOME_GUESSES);\r
-      return($libjava, $libjvm, $libhpi, $libawt);\r
-    }\r
-  }\r
-  return($libjava, $libawt);\r
-}\r
-\r
-# We need to find jni.h and jni_md.h\r
-#\r
-\r
-# Always do find_includes as the first operation, as it has the side effect\r
-# of deciding whether or not we are looking for Kaffe.  --bkuhn\r
-\r
-sub find_includes {\r
-\r
-  my @CANDIDATES = qw(jni.h jni_md.h);\r
-  my @includes;\r
-\r
-  sub find_inc {\r
-    foreach my $name (@CANDIDATES) {\r
-      if (/$name$/) {\r
-       my ($hname, $hpath, $hsuffix) = \r
-         fileparse($File::Find::name, ("\.h", "\.H"));\r
-       unless ($hpath =~ /include-old/) {\r
-         print "Found $hname$hsuffix in $hpath\n";\r
-         push @includes, $hpath;\r
-       } \r
-      }\r
-    }\r
-  }\r
-    \r
-  use File::Find;\r
-  foreach my $guess (@KAFFE_INCLUDE_GUESSES) {\r
-    next unless -d $guess;\r
-    find (\&find_inc, $guess);\r
-  }\r
-  # If we have found includes, then we are using Kaffe.\r
-  if (@includes > 0) {\r
-    $USE_KAFFE = 1;\r
-  } else {\r
-    foreach my $guess (@JAVA_HOME_GUESSES) {\r
-      next unless -d $guess;\r
-      find (\&find_inc, $guess);\r
-    }\r
-  }\r
-  die "Could not find Java includes!" unless (@includes);\r
-\r
-  return @includes;\r
-}\r
-\r
+#!/usr/bin/perl
+use ExtUtils::MakeMaker;
+use Getopt::Std;
+use Config;
+$ARCHNAME = $Config{archname};
+use File::Basename;
+
+getopts('e'); # embedding?
+
+$CCFLAGS .= $ENV{CCFLAGS} if defined $ENV{CCFLAGS};
+
+# $USE_KAFFE is a boolean that tells us whether or not we should use Kaffe.
+# Set by find_includes (it seemed as good a place as any).
+
+# Note that we don't check to see the version of Kaffe is one we support.
+#  Currently, the only one we support is the one from CVS.
+
+my $USE_KAFFE = 0;
+
+#require "JNIConfig";
+
+if ($^O eq 'solaris') {
+    $LIBPATH = " -R$Config{archlib}/CORE -L$Config{archlib}/CORE";
+} elsif ($^O eq 'MSWin32') {
+    $LIBPATH = " -L$Config{archlib}\\CORE";
+    # MSR - added MS VC++ default library path
+    # bjepson - fixed to support path names w/spaces in them.
+    push(@WINLIBS, (split"\;",$ENV{LIB}));
+    grep s/\\$//, @WINLIBS; # eliminate trailing \
+    grep s/\/$//, @WINLIBS; # eliminate trailing /
+    $LIBPATH .= join(" ", "", map { qq["-L$_" ] } @WINLIBS);
+} else {
+    $LIBPATH = " -L$Config{archlib}/CORE";
+}
+#$LIBS = " -lperl";
+
+# Figure out where Java might live
+#
+# MSR - added JDK 1.3
+#
+
+my @JAVA_HOME_GUESSES = qw(/usr/local/java /usr/java /usr/local/jdk117_v3
+                         C:\\JDK1.1.8 C:\\JDK1.2.1 C:\\JDK1.2.2 C:\\JDK1.3 );
+
+my @KAFFE_PREFIX_GUESSES = qw(/usr/local /usr);
+
+if (! defined $ENV{JAVA_HOME}) {
+        print "You didn't define JAVA_HOME, so I'm trying a few guesses.\n";
+        print "If this fails, you might want to try setting JAVA_HOME and\n";
+        print "running me again.\n";
+} else {
+        @JAVA_HOME_GUESSES = ( $ENV{JAVA_HOME} );
+}
+
+if (! defined $ENV{KAFFE_PREFIX}) {
+        print "\nYou didn't define KAFFE_PREFIX, so I'm trying a few guesses.",
+          "\nIf this fails, and you are using Kaffe, you might want to try\n",
+          "setting KAFFE_PREFIX and running me again.\n",
+          "If you want to ignore any possible Kaffe installation, set the\n",
+          "KAFFE_PREFIX to and empty string.\n\n";
+} else {
+        @KAFFE_PREFIX_GUESSES = ($ENV{KAFFE_PREFIX} eq "") ? () :
+                                                       ( $ENV{KAFFE_PREFIX} );
+}
+
+my(@KAFFE_INCLUDE_GUESSES, @KAFFE_LIB_GUESSES);
+foreach my $kaffePrefix (@KAFFE_PREFIX_GUESSES) {
+     push(@KAFFE_INCLUDE_GUESSES, "$kaffePrefix/include/kaffe");
+     push(@KAFFE_LIB_GUESSES, "$kaffePrefix/lib");
+     push(@KAFFE_LIB_GUESSES, "$kaffePrefix/lib/kaffe");
+}
+    $guess .= "/include/kaffe";
+
+# Let's find out where jni.h lives
+#
+my @INCLUDE = find_includes();
+
+if ($^O eq 'MSWin32') {
+  # MSR - added MS VC++ default include path
+  push(@INCLUDE,(split"\;",$ENV{INCLUDE}));
+  grep s/\\$//, @INCLUDE; # remove trailing \
+  grep s/\/$//, @INCLUDE; # remove trailing \
+  $INC = join("", map { qq["-I$_" ] } @INCLUDE);
+
+} else {
+  $INC = join(" -I", ("", @INCLUDE));
+}
+
+# Let's find out the name of the Java shared library
+#
+my @JAVALIBS = find_libs();
+
+# Find out some defines based on the library we are linking to
+#
+foreach (@JAVALIBS) {
+    if ( $^O eq 'MSWin32') { # We're on Win32
+        $INC =~ s#/#\\#g;
+        $INC =~ s#\\$##;
+         print $INC, "\n";
+        $CCFLAGS .= " -DWIN32 -Z7 -D_DEBUG";
+        $MYEXTLIB = "$libjava";
+      }
+}
+
+$CCFLAGS .= " -DKAFFE" if ($USE_KAFFE);
+
+# Let's find out the path of the library we need to link against.
+#
+foreach (@JAVALIBS) {
+    if ($^O eq 'MSWin32') { # We're on Win32
+        $_ =~ s#/#\\\\#g;
+    }
+    my ($libname, $libpath, $libsuffix) = fileparse($_, ("\.so", "\.lib"));
+    $libname =~ s/^lib//;
+    if ($^O eq 'solaris') {
+        $LIBPATH .= " -R$libpath -L$libpath"
+    } else {
+        $LIBPATH .= " -L$libpath"
+    }
+    $LIBS .= " -l$libname";
+}
+
+# Do we need -D_REENTRANT?
+if ($LIBPATH =~ /native/) {
+    print "Looks like native threads...\n";
+    $CCFLAGS .= " -D_REENTRANT";
+}
+
+if ($opt_e) {
+    print "We're embedding Perl in Java via libPerlInterpreter.so.\n";
+    eval `../setvars -perl`;
+    $CCFLAGS .= " -DEMBEDDEDPERL";
+    $LIBPATH .= " -R$ENV{JPL_HOME}/lib/$ARCHNAME -L$ENV{JPL_HOME}/lib/$ARCHNAME";
+    $LIBS    .= " -lPerlInterpreter";
+}
+
+# Needed for JNI.
+if ($^O eq 'solaris') {
+    $LIBS = " -lthread -lc $LIBS"; #-lthread must be first!!!
+    $CCFLAGS .= " -D_REENTRANT";
+}
+
+# MSR - clean up LIBS
+$LIBS =~ s/-l$//;
+
+#
+# Next, build JNI/Config.pm.  This is a superfluous thing for the SUN and
+# Microsoft JDKs, but absolutely necessary for Kaffe.  I think at some
+# point, the Microsoft and SUN implementations should use JNI::Config, too.
+#
+
+if (! -d "JNI") {
+    mkdir("JNI", 0755) || die "Unable to make JNI directory: $!";
+}
+open(JNICONFIG, ">JNI/Config.pm") || die "Unable to open JNI/Config.pm: $!";
+
+print JNICONFIG "# DO NOT EDIT!   Autogenerated by JNI/Makefile.PL\n\n",
+                "package JNI::Config;\nuse strict;\nuse Carp;\n",
+                "\nuse vars qw(\$KAFFE \$LIB_JAVA \$CLASS_HOME ",
+                "\$LIB_HOME);\n\n",
+                "\$KAFFE = $USE_KAFFE;\n\$LIB_JAVA = \"$JAVALIBS[0]\";\n";
+if ($USE_KAFFE) {
+  my $path = $JAVALIBS[0];
+  $path =~ s%/(kaffe/)?libkaffevm.so$%%;
+
+  print JNICONFIG "\$LIB_HOME = \"$path/kaffe\";\n";
+  $path =~ s%/lib%%;
+  print JNICONFIG "\$CLASS_HOME = \"$path/share/kaffe\";\n";
+}
+print JNICONFIG "\n\n1;\n";
+close JNICONFIG;
+
+
+my %Makefile = (
+    NAME        => 'JNI',
+    VERSION_FROM => 'JNI.pm',
+    DEFINE        => '',
+    LINKTYPE => 'dynamic',
+    INC        => $INC,
+    CCFLAGS => "$Config{ccflags} $CCFLAGS", 
+    ($Config{archname} =~ /mswin32.*-object/i ? ('CAPI' => 'TRUE') : ()),
+
+    clean => {FILES => "JNI/* JNI"}
+);
+
+$Makefile{LIBS} = ["$LIBPATH $LIBS"];
+if ($MYEXTLIB) {
+    $Makefile{MYEXTLIB} = $MYEXTLIB;
+}
+
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+#
+WriteMakefile(%Makefile);
+
+if ($USE_KAFFE) {
+  my $path = $JAVALIBS[0];
+  $path =~ s%/libkaffevm.so$%%;
+  print "\n\n***NOTE: be sure to have:\n",
+            "              LD_LIBRARY_PATH=$path\n",
+            "         in your enviornment (or installed as a system dynamic\n",
+            "         library location) when you compile and run this.\n";
+}
+
+# subroutine to find a library
+#
+sub find_stuff {
+
+    my ($candidates, $locations) = @_;
+    my $lib;
+    $wanted = sub {
+        foreach my $name (@$candidates) {
+            if (/$name$/ and ! /green_threads/ and !/include-old/) {
+                    $lib = $File::Find::name;
+            }
+        }
+    };
+    
+    use File::Find;
+    foreach my $guess (@$locations) {
+        next unless -d $guess;
+        find (\&$wanted, $guess);
+    }
+    if (! $lib) {
+        print "Could not find @$candidates\n";
+    } else {
+        print "Found @$candidates as $lib\n\n";
+    }
+    return $lib;
+}
+
+# Extra lib for Java 1.2
+#
+#  if we want KAFFE, check for it, otherwise search for Java
+
+sub find_libs {
+  my($libjava, $libawt, $libjvm);
+
+  if ($USE_KAFFE) {
+    $libjava = find_stuff(['libkaffevm.so'], \@KAFFE_LIB_GUESSES);
+    $libawt = find_stuff(['libawt.so'], \@KAFFE_LIB_GUESSES);
+  } else {
+    $libjava = find_stuff(['libjava.so', 'javai.lib', 'jvm.lib'],
+                             \@JAVA_HOME_GUESSES);
+    $libjvm  = find_stuff(['libjvm.so'],  \@JAVA_HOME_GUESSES);
+    $libawt  = find_stuff(['libawt.so'], \@JAVA_HOME_GUESSES);
+    if (defined $libjvm) { # JDK 1.2
+      my $libhpi  = find_stuff(['libhpi.so'], \@JAVA_HOME_GUESSES);
+      return($libjava, $libjvm, $libhpi, $libawt);
+    }
+  }
+  return($libjava, $libawt);
+}
+
+# We need to find jni.h and jni_md.h
+#
+
+# Always do find_includes as the first operation, as it has the side effect
+# of deciding whether or not we are looking for Kaffe.  --bkuhn
+
+sub find_includes {
+
+  my @CANDIDATES = qw(jni.h jni_md.h);
+  my @includes;
+
+  sub find_inc {
+    foreach my $name (@CANDIDATES) {
+      if (/$name$/) {
+       my ($hname, $hpath, $hsuffix) = 
+         fileparse($File::Find::name, ("\.h", "\.H"));
+       unless ($hpath =~ /include-old/) {
+         print "Found $hname$hsuffix in $hpath\n";
+         push @includes, $hpath;
+       } 
+      }
+    }
+  }
+    
+  use File::Find;
+  foreach my $guess (@KAFFE_INCLUDE_GUESSES) {
+    next unless -d $guess;
+    find (\&find_inc, $guess);
+  }
+  # If we have found includes, then we are using Kaffe.
+  if (@includes > 0) {
+    $USE_KAFFE = 1;
+  } else {
+    foreach my $guess (@JAVA_HOME_GUESSES) {
+      next unless -d $guess;
+      find (\&find_inc, $guess);
+    }
+  }
+  die "Could not find Java includes!" unless (@includes);
+
+  return @includes;
+}
+